溫馨提示×

Tomcat集群在Linux如何搭建

小樊
35
2025-10-12 11:58:11
欄目: 智能運維

一、環境準備

  1. 安裝Java環境:Tomcat依賴Java運行環境,需在所有節點安裝JDK 1.8及以上版本(推薦OpenJDK)。以CentOS為例,執行命令:sudo yum install java-1.8.0-openjdk-devel,安裝完成后通過java -version驗證是否成功。
  2. 下載并解壓Tomcat:從Apache Tomcat官網下載穩定版本(如9.0.x),解壓到指定目錄(如/opt)。例如:wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz,tar xvf apache-tomcat-9.0.56.tar.gz -C /opt,建議重命名為/opt/tomcat便于管理。
  3. 配置環境變量:編輯/etc/profile文件,添加Tomcat環境變量:export CATALINA_HOME=/opt/tomcat、export PATH=$CATALINA_HOME/bin:$PATH,保存后執行source /etc/profile使配置生效。

二、配置Tomcat集群

  1. 修改server.xml(核心集群配置):進入$CATALINA_HOME/conf目錄,編輯server.xml文件,在<Engine>元素內添加<Cluster>配置,啟用集群通信和會話復制。關鍵配置如下:
    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
      <!-- 會話管理器:DeltaManager支持主節點故障時自動切換 -->
      <Manager className="org.apache.catalina.ha.session.DeltaManager" 
               expireSessionsOnShutdown="false" 
               notifyListenersOnReplication="true"/>
      <!-- 通信通道:組播方式發現節點 -->
      <Channel className="org.apache.catalina.tribes.group.GroupChannel">
        <Membership className="org.apache.catalina.tribes.membership.McastService" 
                   address="228.0.0.4" 
                   port="45564" 
                   frequency="500" 
                   dropTime="3000"/>
        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
                  address="auto" 
                  port="4000" 
                  autoBind="100" 
                  selectorTimeout="5000" 
                  maxThreads="6"/>
        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
          <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
        </Sender>
        <!-- 故障檢測:自動剔除不可用節點 -->
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
      </Channel>
      <!-- 負載均衡閥:僅轉發動態請求到集群 -->
      <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
      <!-- 部署器:支持集群內war包自動部署 -->
      <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 
                tempDir="/tmp/war-temp/" 
                deployDir="/tmp/war-deploy/" 
                watchDir="/tmp/war-listen/" 
                watchEnabled="false"/>
      <!-- 集群監聽器:監控集群狀態 -->
      <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
    </Cluster>
    
  2. 配置context.xml(啟用分布式會話):編輯$CATALINA_HOME/conf/context.xml文件,在<Context>標簽內添加distributable="true"屬性,允許應用支持分布式會話:
    <Context distributable="true">
      <!-- 其他配置 -->
    </Context>
    
  3. 配置web.xml(應用級集群聲明):進入應用的WEB-INF目錄,編輯web.xml文件,在<web-app>標簽內添加<distributable/>標簽,聲明該應用需要參與集群:
    <web-app>
      <distributable/>
      <!-- 其他配置 -->
    </web-app>
    

三、配置負載均衡(Nginx為例)

  1. 安裝Nginx:以CentOS為例,執行命令:sudo yum install epel-release(啟用EPEL倉庫),sudo yum install nginx,安裝完成后啟動Nginx并設置開機自啟:sudo systemctl start nginx、sudo systemctl enable nginx。
  2. 配置負載均衡:編輯/etc/nginx/nginx.conf文件,在http塊內添加upstream集群定義,指定Tomcat節點的IP和端口(如8080),然后配置server塊將請求轉發到集群:
    http {
      upstream tomcat_cluster {
        server 192.168.1.101:8080;  # Tomcat節點1
        server 192.168.1.102:8080;  # Tomcat節點2
        server 192.168.1.103:8080;  # Tomcat節點3
      }
      server {
        listen 80;
        server_name yourdomain.com;  # 替換為你的域名或IP
        location / {
          proxy_pass http://tomcat_cluster;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
        }
      }
    }
    
    保存后執行sudo nginx -t測試配置語法,無誤后重啟Nginx:sudo systemctl restart nginx。

四、啟動集群并驗證

  1. 啟動Tomcat實例:在每個Tomcat節點上,進入$CATALINA_HOME/bin目錄,執行./startup.sh啟動Tomcat??赏ㄟ^ps -ef | grep tomcat確認進程是否運行,或訪問http://節點IP:8080查看Tomcat默認頁面。
  2. 驗證集群功能
    • 負載均衡驗證:訪問Nginx的域名或IP(如http://yourdomain.com),多次刷新頁面,觀察請求是否被分發到不同Tomcat節點(可通過Tomcat的/status頁面查看當前訪問節點)。
    • 會話復制驗證:在應用中創建一個Session(如登錄功能),訪問其中一個節點并登錄,然后通過Nginx訪問其他節點,檢查是否保持登錄狀態(會話數據已同步)。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女