在CentOS上搭建Tomcat集群是一个复杂的过程,需要考虑多个方面,包括安装和配置Tomcat、设置负载均衡器、实现会话复制和故障转移等。以下是一个基本的步骤指南:
安装Java环境: 确保系统上已经安装了Java。可以使用以下命令检查是否已经安装了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应用集群。