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

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

tomcat Nginx 负载 server 641    来源:    2025-04-22

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

环境准备

  1. 一台CentOS7服务器(或虚拟机)
  2. 至少两个Tomcat8实例(可以在同一服务器或不同服务器上)
  3. Nginx作为前端负载均衡器

安装步骤

1. 安装Java环境

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

# 验证安装
java -version

2. 安装Tomcat8

# 下载Tomcat8
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.51/bin/apache-tomcat-8.5.51.tar.gz

# 解压安装
tar -zxvf apache-tomcat-8.5.51.tar.gz
mv apache-tomcat-8.5.51 /usr/local/tomcat1

# 复制第二个Tomcat实例(用于负载均衡演示)
cp -r /usr/local/tomcat1 /usr/local/tomcat2

# 修改第二个Tomcat的端口以避免冲突
sed -i 's/8005/8006/g' /usr/local/tomcat2/conf/server.xml
sed -i 's/8080/8081/g' /usr/local/tomcat2/conf/server.xml
sed -i 's/8009/8010/g' /usr/local/tomcat2/conf/server.xml

3. 启动Tomcat实例

# 启动第一个Tomcat
/usr/local/tomcat1/bin/startup.sh

# 启动第二个Tomcat
/usr/local/tomcat2/bin/startup.sh

# 验证Tomcat是否运行
curl http://localhost:8080
curl http://localhost:8081

4. 安装Nginx

# 添加Nginx官方仓库
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 安装Nginx
sudo yum install -y nginx

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

5. 配置Nginx负载均衡

编辑Nginx配置文件:

sudo vi /etc/nginx/conf.d/load-balancer.conf

添加以下内容:

upstream tomcat_servers {
    # 配置负载均衡策略
    # least_conn;  # 最少连接数
    # ip_hash;    # IP哈希
    server 127.0.0.1:8080 weight=1;  # 第一个Tomcat实例
    server 127.0.0.1:8081 weight=1;  # 第二个Tomcat实例
    # 可以添加更多服务器
}

server {
    listen 80;
    server_name your_domain.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;
    }
}

6. 测试并重启Nginx

# 测试Nginx配置
sudo nginx -t

# 重启Nginx使配置生效
sudo systemctl restart nginx

7. 验证负载均衡

# 多次访问测试负载均衡效果
curl http://localhost

你应该能看到请求被轮流分配到两个Tomcat实例上。

可选配置

健康检查

在upstream中添加健康检查:

upstream tomcat_servers {
    server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
    server 127.0.0.1:8081 max_fails=3 fail_timeout=30s;
}

会话保持

如果需要会话保持(session sticky),可以使用ip_hash:

upstream tomcat_servers {
    ip_hash;
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

防火墙配置

# 开放80端口
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload

常见问题解决

  1. Nginx无法启动

    • 检查配置语法:nginx -t
    • 检查端口冲突:netstat -tulnp | grep :80
  2. Tomcat无法访问

    • 检查Tomcat是否运行:ps -ef | grep tomcat
    • 检查防火墙设置
  3. 负载不均衡

    • 检查Nginx配置中的upstream定义
    • 清除浏览器缓存测试
  4. 性能问题

    • 调整Nginx的worker_processes和worker_connections
    • 考虑添加更多Tomcat实例

通过以上步骤,你应该已经成功搭建了一个基于CentOS7、Nginx和Tomcat8的负载均衡服务器。