我有一个简单的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:
型
我将感激任何帮助。
1条答案
按热度按时间dxxyhpgq1#
要在使用Docker Compose时将应用扩展到3个示例,您应该在使用docker-compose up启动服务后使用scale命令。下面是将应用服务扩展到3个示例的示例命令:
字符串
nginx然后需要配置为使用不同的示例。
型