插件窝 干货文章 基于Centos7+Nginx+Tomcat8的负载均衡服务器怎么搭建

基于Centos7+Nginx+Tomcat8的负载均衡服务器怎么搭建

Tomcat Nginx 配置 server 459    来源:    2025-04-26

CentOS7 + Nginx + Tomcat8 负载均衡搭建指南

准备工作

  1. 确保已安装CentOS7系统
  2. 准备至少2台Tomcat服务器(可以是同一物理机的不同端口或不同服务器)
  3. 确保网络连通性正常

安装必要组件

1. 安装Nginx

# 添加EPEL仓库
sudo yum install epel-release

# 安装Nginx
sudo yum install nginx

# 启动Nginx并设置开机启动
sudo systemctl start nginx
sudo systemctl enable nginx

2. 安装Java环境

# 安装OpenJDK 8
sudo yum install java-1.8.0-openjdk-devel

# 验证安装
java -version

3. 安装Tomcat8

# 下载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

配置Tomcat

第一台Tomcat配置

# 编辑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

第二台Tomcat配置

# 编辑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负载均衡

# 编辑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

# 测试Nginx配置
sudo nginx -t

# 重启Nginx
sudo systemctl restart nginx

验证负载均衡

  1. 访问你的服务器IP或域名
  2. 检查Nginx访问日志和Tomcat访问日志,确认请求被分配到不同Tomcat实例
# 查看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

可选优化配置

1. 会话保持

如果需要会话保持,可以使用以下方法之一:

  • Nginx的ip_hash:

    upstream tomcat_servers {
      ip_hash;
      server 127.0.0.1:8081;
      server 127.0.0.1:8082;
    }
    
  • Tomcat集群配置: 配置Tomcat的server.xml启用集群功能,并使用共享会话

2. 健康检查

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;
}

3. 静态资源分离

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的负载均衡服务器已搭建完成。