在CentOS上搭建Tomcat集群是一個復雜的過程,需要考慮多個方面,包括安裝和配置Tomcat、設置負載均衡器、實現會話復制和故障轉移等。以下是一個基本的步驟指南:
安裝Java環境: 確保系統上已經安裝了Java??梢允褂靡韵旅顧z查是否已經安裝了Java:
java -version
如果沒有安裝Java,可以使用以下命令安裝OpenJDK:
sudo yum install java-1.8.0-openjdk-devel -y
下載和解壓Tomcat: 從Apache Tomcat官方網站下載最新版本的Tomcat,并解壓到你選擇的目錄。例如,下載Tomcat 9.0.56版本:
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
sudo tar xzf apache-tomcat-9.0.56.tar.gz -C /opt/
配置環境變量:
編輯 /etc/profile
文件,添加以下內容并保存:
export CATALINA_HOME="/opt/apache-tomcat-9.0.56"
export PATH=$PATH:$CATALINA_HOME/bin
然后使配置生效:
source /etc/profile
創建Tomcat用戶和用戶組:
sudo groupadd tomcat
sudo useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat
修改目錄權限:
sudo chown -R tomcat:tomcat /opt/apache-tomcat-9.0.56
sudo chmod +x /opt/apache-tomcat-9.0.56/bin/*.sh
創建并配置systemd服務文件:
在 /etc/systemd/system/
目錄下創建 tomcat.service
文件,并添加以下內容:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
Environment=CATALINA_PID=/opt/apache-tomcat-9.0.56/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/apache-tomcat-9.0.56
Environment=CATALINA_BASE=/opt/apache-tomcat-9.0.56
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/apache-tomcat-9.0.56/bin/startup.sh
ExecStop=/opt/apache-tomcat-9.0.56/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
啟動并啟用服務:
sudo systemctl daemon-reload
sudo systemctl enable tomcat
sudo systemctl start tomcat
配置防火墻: 開放Tomcat默認端口(8080):
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
修改Tomcat配置文件:
編輯每個Tomcat實例的 /conf/server.xml
文件,修改以下端口:
<Connector port="8005" protocol="AJP/1.3" redirectPort="8443" />
啟用集群功能:
在每個Tomcat實例的 conf/server.xml
文件中,去掉 Cluster
標簽前的注釋,啟用集群功能。
安裝Nginx:
sudo yum install epel-release -y
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
配置Nginx:
編輯Nginx的配置文件 /etc/nginx/nginx.conf
或 /etc/nginx/conf.d/default.conf
,添加以下內容:
upstream tomcat_cluster {
ip_hash;
server 192.168.1.100:8005;
server 192.168.1.101:8005;
server 192.168.1.102:8005;
}
server {
listen 80;
server_name example.com;
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;
}
}
測試配置: 保存配置文件后,測試Nginx配置是否正確:
sudo nginx -t
如果配置文件沒有問題,重新加載Nginx使配置生效:
sudo systemctl reload nginx
驗證集群:
在每個Tomcat實例的根目錄下創建一個簡單的HTML文件,內容不同,以便區分請求被轉發到了哪個Tomcat實例。例如,在 /opt/apache-tomcat-9.0.56/webapps/ROOT/
目錄下分別創建 index1.html
、index2.html
和 index3.html
,內容分別為:
<h1>Server 1</h1>
<h1>Server 2</h1>
<h1>Server 3</h1>
多次刷新頁面,觀察頁面內容的變化,確認Nginx正在輪詢地將請求分發到不同的Tomcat實例。
通過以上步驟,你可以在CentOS上成功搭建一個基于Nginx和Tomcat的高可用、高性能Web應用集群。