首页 > 解决方案 > docker-swarm + nginx 负载平衡:我需要在 .conf 中设置上游吗?

问题描述

我对docker-swarm和nginx相当陌生,我当前的设置是一个基本的flask/gunicorn应用程序,使用nginx作为部署在docker-swarm上的反向代理,现在它运行成功,当我查询它返回的一个swarm节点时每次群中不同主机的主机 ID,我认为这是负载平衡发生的。

虽然我不知道那是 docker swarm 还是 nginx。

编辑:我正在跨群中的主机扩展服务。

我已经看到了设置上游变量(我没有)并在其中手动添加每个主机 ip 的各种示例,我的问题是我是否需要包含它以使负载平衡正常工作/我如何测试它是否正确平衡?

这是我的 nginx dockerfile 和 docker-compose.yml

worker_processes  3;

events { }

http {

  keepalive_timeout  360s;

  server {

      listen 8080;
      server_name app;
      charset utf-8;

      location / {
          proxy_pass http://app:5000;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
  }
}
version: '3'

services:

  app:
    image: <repouser>/<repo>:flask
    deploy:  
      replicas: 1
      restart_policy:  
        condition: on-failure    
    networks:
      - apinetwork
    expose:
      - "5000"
    ports:
      - "5000:5000"

  nginx:
    image: <repouser>/<repo>:nginx
    deploy:  
      replicas: 1
      restart_policy:  
        condition: on-failure  
    networks:
      - apinetwork
    expose:
      - "80"
    ports:
      - "80:8080"

networks:
  apinetwork:
    driver: overlay

谢谢你的帮助。

标签: dockernginxload-balancingdocker-swarm

解决方案


推荐阅读