Docker化部署Nginx负载均衡集群(保姆级教程)

一、准备工作
  1. 安装Docker

    sudo apt update
    sudo apt install docker.io docker-compose
    sudo systemctl enable --now docker
    

  2. 创建项目目录

    mkdir nginx-lb && cd nginx-lb
    mkdir config upstream1 upstream2 upstream3
    


二、配置后端服务
  1. 在每个上游目录创建index.html

    echo "<h1>Backend Server 1</h1>" > upstream1/index.html
    echo "<h1>Backend Server 2</h1>" > upstream2/index.html
    echo "<h1>Backend Server 3</h1>" > upstream3/index.html
    

  2. 创建后端Dockerfile

    FROM nginx:alpine
    COPY index.html /usr/share/nginx/html
    


三、配置负载均衡器
  1. 创建Nginx配置文件config/nginx.conf
    events { worker_connections 1024; }
    
    http {
        upstream backend {
            server upstream1:80;
            server upstream2:80;
            server upstream3:80;
        }
    
        server {
            listen 80;
            location / {
                proxy_pass http://backend;
                proxy_set_header Host $host;
            }
        }
    }
    


四、创建Docker Compose文件
version: '3.8'
services:
  lb:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./config/nginx.conf:/etc/nginx/nginx.conf:ro
    depends_on:
      - upstream1
      - upstream2
      - upstream3

  upstream1:
    build: ./upstream1
    expose:
      - "80"

  upstream2:
    build: ./upstream2
    expose:
      - "80"

  upstream3:
    build: ./upstream3
    expose:
      - "80"

networks:
  default:
    driver: bridge


五、部署与测试
  1. 启动集群

    docker-compose up -d --build
    

  2. 验证服务

    curl http://localhost:8080
    

    多次执行将轮询显示不同后端内容:

    <h1>Backend Server 1</h1>
    <h1>Backend Server 2</h1>
    <h1>Backend Server 3</h1>
    

  3. 监控日志

    docker-compose logs -f lb
    


六、架构说明
客户端 → 负载均衡器(LB) → {后端1, 后端2, 后端3}
           (8080端口)         (80端口容器组)

  • 负载算法:默认轮询分发请求
  • 网络拓扑:通过Docker网络自动互联
  • 扩展性:新增后端只需添加服务条目

提示:生产环境建议添加健康检查、TLS加密和日志持久化。通过调整upstream模块参数可实现加权轮询、IP哈希等高级策略。

更多推荐