Ubuntu Tomcat集群部署最佳实践
在所有集群节点(Ubuntu服务器)上执行以下操作,确保环境一致性:
java -version验证;/opt/tomcat),避免版本差异导致的问题;sudo apt-get install ntp,并编辑/etc/ntp.conf添加公共NTP服务器)。修改每个Tomcat实例的conf/server.xml文件,核心配置如下:
<Engine>标签内添加<Cluster>元素,配置通信组播地址、端口及接收器端口(如address="228.0.0.4"、port="45564"、port="4000");DeltaManager管理会话(expireSessionsOnShutdown="false"表示关闭时不清除会话,notifyListenersOnReplication="true"表示复制时通知监听器);<Channel>标签配置通信通道,添加TcpFailureDetector(检测节点故障)、MessageDispatchInterceptor(优化消息分发)等拦截器,提升集群稳定性。DeltaManager实现会话同步,适用于节点数较少(<10台)的场景,配置<distributable/>标签(在应用的web.xml中)标记应用支持分布式;<Manager>替换为PersistentManager,并配置缓存连接(如Redis的JedisPool),提升会话共享性能与扩展性。使用Nginx或HAProxy作为外部负载均衡器,避免单点故障:
http块中定义upstream(如upstream myapp { server 192.168.1.100:8080; server 192.168.1.101:8080; }),在server块中通过proxy_pass将请求转发至upstream;sticky_session(如Nginx的ip_hash指令或HAProxy的cookie指令),确保同一用户请求始终转发至同一节点(避免会话丢失);配置健康检查(如Nginx的ngx_http_health_check_module),自动剔除故障节点。rsync同步webapps、conf目录),当主实例宕机时,备用实例立即接管服务。catalina.out、localhost_access_log及Nginx的访问日志,通过ELK(Elasticsearch+Logstash+Kibana)堆栈进行分析,快速定位问题;server.xml中注释掉AJP协议(若无需使用),关闭Tomcat管理界面的默认访问(如修改conf/tomcat-users.xml中的角色权限,仅允许管理员访问);ssl_certificate与ssl_certificate_key指令,避免数据泄露;ufw或iptables限制访问源IP,防止非法入侵。