后端集群部署

集群部署教程(参考指南)

⚠️ 本文档仅供参考。生产环境中如需实现高可用的中间件集群(如 MySQL 主从、Redis Sentinel/Cluster 等),请根据实际情况查阅相关文档,或使用云平台提供的集群服务。


一、部署环境要求

  • MySQL:8.x
  • Redis:6.x
  • Nginx:任意稳定版本
  • JDK:建议使用 JDK 17 或以上
  • 操作系统:建议使用 Linux (如 CentOS 7+、Ubuntu 20+)

二、后端服务部署(多节点)

以下示例以两台服务器部署后端服务为例:

机器名称 IP 地址 启动端口 说明
服务节点1 192.168.1.101 8998 后端实例
服务节点2 192.168.1.102 8999 后端实例

如需在同一台服务器运行多个实例,请确保使用不同端口号。

启动命令示例:

# 服务器 192.168.1.101 启动
nohup java -jar tduck-api.jar --server.port=8998 > /dev/null 2>&1 &

# 服务器 192.168.1.102 启动
nohup java -jar tduck-api.jar --server.port=8999 > /dev/null 2>&1 &

可通过 ps -ef | grep tduck-api 或查看日志文件确认是否成功启动。


三、配置 Nginx 实现负载均衡

1. 修改 Nginx 配置文件

打开并编辑 Nginx 配置文件(如 /etc/nginx/conf.d/tduck.conf):

# 定义后端服务集群
upstream tduck_backend {
    server 192.168.1.101:8998;
    server 192.168.1.102:8999;
}

server {
    listen       80;
    server_name  localhost;

    access_log  /data/log/nginx/access.log  main;
    error_log   /data/log/nginx/error.log;

    # 静态资源目录
    location / {
        root   /data/web;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    # 后端接口转发
    location /tduck-api/ {
        proxy_pass http://tduck_backend/tduck-api/;

        # 跨域支持
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Credentials true;
        add_header Access-Control-Allow-Methods GET, POST, OPTIONS, PUT, DELETE;

        # 连接配置
        proxy_http_version 1.1;
        proxy_connect_timeout 60s;
        proxy_read_timeout 60s;
        proxy_send_timeout 60s;

        # 真实IP获取
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # WebSocket 支持
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # 上传文件映射(根据项目实际路径修改)
    location /file/ {
        alias /application/static/upload/;
    }
}

2. 检查并重启 Nginx

nginx -t    # 检查配置是否正确
nginx -s reload   # 重载配置

四、说明与建议

  • 默认使用轮询策略进行负载均衡,如需自定义(如权重、最少连接等),请参考 Nginx 官方负载均衡文档
  • 若服务需要通过 HTTPS 提供访问,请配置 SSL 证书并将 listen 80 改为 listen 443 ssl
  • 日志路径、静态资源目录等可根据部署环境自由调整。

如需进一步完善运维能力,建议结合监控(如 Prometheus + Grafana)、日志收集(如 ELK)、自动化部署等工具进行建设。