# 添加EPEL仓库
sudo yum install epel-release
# 安装Nginx
sudo yum install nginx
# 启动Nginx并设置开机启动
sudo systemctl start nginx
sudo systemctl enable nginx
# 安装OpenJDK 8
sudo yum install java-1.8.0-openjdk-devel
# 验证安装
java -version
# 下载Tomcat8
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz
# 解压
tar -xzf apache-tomcat-8.5.57.tar.gz
mv apache-tomcat-8.5.57 /opt/tomcat8
# 创建Tomcat用户
sudo useradd -r -m -U -d /opt/tomcat8 -s /bin/false tomcat
# 设置权限
sudo chown -R tomcat: /opt/tomcat8
sudo chmod +x /opt/tomcat8/bin/*.sh
# 复制到第二台Tomcat服务器(如果是同一台机器不同端口)
cp -r /opt/tomcat8 /opt/tomcat8_2
# 编辑server.xml
vi /opt/tomcat8/conf/server.xml
# 修改端口(如果同一台机器运行多个Tomcat实例)
# 默认HTTP端口8080改为8081(第二个实例可以改为8082)
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
# 启动Tomcat
/opt/tomcat8/bin/startup.sh
# 编辑server.xml
vi /opt/tomcat8_2/conf/server.xml
# 修改端口
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
# 启动Tomcat
/opt/tomcat8_2/bin/startup.sh
# 编辑Nginx配置文件
sudo vi /etc/nginx/nginx.conf
在http块中添加以下内容:
upstream tomcat_servers {
# 配置负载均衡策略
# least_conn; # 最少连接
# ip_hash; # IP哈希
# 默认是轮询(round-robin)
server 127.0.0.1:8081 weight=1; # 第一台Tomcat
server 127.0.0.1:8082 weight=1; # 第二台Tomcat
# 可以添加更多服务器
}
server {
listen 80;
server_name yourdomain.com; # 替换为你的域名或IP
location / {
proxy_pass http://tomcat_servers;
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_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
}
# 测试Nginx配置
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx
# 查看Nginx访问日志
tail -f /var/log/nginx/access.log
# 查看Tomcat访问日志
tail -f /opt/tomcat8/logs/localhost_access_log.*.txt
tail -f /opt/tomcat8_2/logs/localhost_access_log.*.txt
如果需要会话保持,可以使用以下方法之一:
Nginx的ip_hash:
upstream tomcat_servers {
ip_hash;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
Tomcat集群配置:
配置Tomcat的server.xml
启用集群功能,并使用共享会话
upstream tomcat_servers {
server 127.0.0.1:8081 max_fails=3 fail_timeout=30s;
server 127.0.0.1:8082 max_fails=3 fail_timeout=30s;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
root /path/to/static/files;
}
# 开放80端口
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload
至此,基于CentOS7 + Nginx + Tomcat8的负载均衡服务器已搭建完成。