使用Docker Compose时,Nginx负载均衡器无法按预期工作

rta7y2nd  于 2023-11-17  发布在  Docker
关注(0)|答案(1)|浏览(124)

我有一个简单的Flask应用程序,运行在端口5000上,我想扩展到3个示例。(即“localhost/get?key=1”总是路由到服务器1,“... key=2”总是路由到服务器2)。然而,当我使用docker-compose来构建和扩展我的应用程序时,它使用的是Round Robin负载均衡策略,而不是我在nginx.conf文件中指定的hash $arg_key consistent策略。我不知道为什么会发生这种情况。
nginx.conf:

events {}

http {
    # Define the group of servers available
 
    upstream backend {
        hash $arg_key consistent;
        server app:5000;
    }
    server {
        # Server group will respond to port 80
        listen 80;
        location / {
            proxy_pass http://backend;
 
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

字符串
Docker-compose:

version: "3.7"

services:
    app:
        build:
            context: components
            dockerfile: Dockerfile
        environment:
            - DB_USERNAME=${DB_USERNAME}
            - DB_PASSWORD=${DB_PASSWORD}
        networks:
            - kvnetwork
    nginx:
        build:
            context: nginx
            dockerfile: Dockerfile
        volumes:
            - './nginx/nginx.conf:/etc/nginx/nginx.conf'
        ports:
            - "80:80"
        networks:
            - kvnetwork
        depends_on:
            - app
networks:
    kvnetwork:


我将感激任何帮助。

dxxyhpgq

dxxyhpgq1#

要在使用Docker Compose时将应用扩展到3个示例,您应该在使用docker-compose up启动服务后使用scale命令。下面是将应用服务扩展到3个示例的示例命令:

docker-compose up -d --scale app=3

字符串
nginx然后需要配置为使用不同的示例。

upstream backend {
hash $arg_key consistent;

server app1:5000;
server app2:5000;
server app3:5000;
}

相关问题