温馨提示×

Tomcat在Ubuntu中的集群配置方法

小樊
42
2025-12-30 18:12:21
栏目: 智能运维

Ubuntu下搭建Tomcat集群的可落地方案

一 架构与准备

  • 架构选型:前端使用NginxApache HTTP Server + mod_jk做反向代理/负载均衡,后端运行多个Tomcat实例,开启会话复制实现故障切换与水平扩展。
  • 节点规划:至少准备2台Ubuntu服务器(同一台也可多实例,需改端口),示例采用Tomcat 8/9JDK 8+
  • 基础要求:
    • 所有节点开启NTP时间同步,避免会话过期判断异常与集群组建失败。
    • 各节点能通过本机非回环地址(非127.0.0.1)收发集群消息,必要时修正**/etc/hosts**主机名映射。
    • 需要会话粘滞或容错时,确保放入Session的对象实现java.io.Serializable

二 单机上多实例与端口规划

  • 复制实例:将Tomcat目录复制为多份(如tomcat1、tomcat2),便于同机多实例测试。
  • 修改关键端口(避免冲突):
    • Server port(默认8005)
    • HTTP Connector port(默认8080)
    • AJP Connector port(默认8009)
  • 示例(tomcat1→8180,tomcat2→8280;AJP对应改为8109/8209;Server分别改为8105/8205):
    • tomcat1/conf/server.xml:
      • <Connector port=“8180” protocol=“HTTP/1.1” … />
    • tomcat2/conf/server.xml:
      • <Connector port=“8280” protocol=“HTTP/1.1” … />
  • 启动验证:分别启动两个实例,访问http://IP:8180http://IP:8280确认可用。

三 配置Tomcat会话复制集群

  • 启用内置集群:在server.xml的****下添加(Tomcat 7/8常见默认模板可直接取消注释启用):
    • 要点:
      • Membershipaddress/port为组播地址与端口,用于节点发现(同一集群需一致)。
      • Receiver address填本机可路由IP(勿用127.0.0.1);同机多实例需为Receiver port设置不同值(如5000/5001)。
  • 标记应用为可分布式:在应用的WEB-INF/web.xml中加入**,并确保会话属性对象实现Serializable**。

四 负载均衡前置配置

  • 方案A Nginx反向代理(Ubuntu 18.04示例)
    • 安装:sudo apt-get install nginx
    • 配置/etc/nginx/nginx.conf的http段:
      • upstream backend { server 192.168.1.101:8180; server 192.168.1.101:8280; }
      • server { listen 80; location / { proxy_pass http://backend; } }
    • 重载:sudo service nginx reload
  • 方案B Apache + mod_jk
    • 安装:sudo apt-get install apache2 libapache2-mod-jk
    • 配置/etc/apache2/mods-enabled/jk.conf与/etc/libapache2-mod-jk/workers.properties,定义worker.list=loadbalancer与各worker.tomcatNtype ajp13、host、port(如8009),并配置JkMount /* loadbalancer

五 组播网络与验证

  • 组播支持检查与路由:
    • ifconfig查看网卡是否含MULTICAST标志;必要时添加路由:
      • sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev ethX
      • 本地回环也建议:sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev lo
  • 组播连通性测试(下载tomcat-replication.jar):
    • Terminal1:java -cp tomcat-replication.jar MCaster 228.0.0.4 45564
    • Terminal2:java -cp tomcat-replication.jar MCaster 228.0.0.4 45564
  • 集群与应用验证:
    • 访问Nginx/Apache入口,登录后检查JSESSIONID后缀是否变化;停掉某实例后刷新,确认会话仍可用(无感切换)。
    • 使用PSI Probe观察各节点与会话复制情况。

0