我正在使用Docker/Node/Nginx设置一个Web服务器。我一直在玩docker-compose中的设置,并提出了两个工作解决方案 - 但在负载平衡方面,其中一个可能太好了,无法成立(因为它似乎允许我通过没有创建额外的图像/容器)。如果我所看到的实际上是合法的,并且多个图像等不是负载平衡的要求,我正在寻找验证。这个Docker/NGINX/Node设置实际上是否按预期负载平衡?
溶液1(无附加图像):
搬运工-compose.yml
version: '3'
volumes:
node_deps:
services:
nginx:
build: ./nginx
image: nginx_i
container_name: nginx_c
ports:
- '80:80'
- '443:443'
links:
- node
restart: always
node:
build: ./node
image: node_i
container_name: node_c
command: "npm start"
ports:
- '5000:5000'
- '5001:5001'
- '5500:5000'
- '5501:5001'
volumes:
- ./node:/src
- node_deps:/src/node_modules
nginx.conf
http {
...
upstream shopster-node {
server node:5000 weight=10 max_fails=3 fail_timeout=30s;
server node:5500 weight=10 max_fails=3 fail_timeout=30s;
keepalive 64;
}
server {
...
}
}
溶液2(具有附加图像):
version: '3'
volumes:
node_deps:
services:
nginx:
build: ./nginx
image: nginx_i
container_name: nginx_c
ports:
- '80:80'
- '443:443'
links:
- node_one
- node_two
restart: always
node_one:
build: ./node
image: node_one_i
container_name: node_one_c
command: "npm start"
ports:
- '5000:5000'
- '5001:5001'
volumes:
- ./node:/src
- node_deps:/src/node_modules
node_two:
build: ./node
image: node_two_i
container_name: node_two_c
command: "npm start"
ports:
- '5500:5000'
- '5501:5001'
volumes:
- ./node:/src
- node_deps:/src/node_modules
ngin x.conf
http {
...
upstream shopster-node {
server node_one:5000 weight=10 max_fails=3 fail_timeout=30s;
server node_two:5500 weight=10 max_fails=3 fail_timeout=30s;
keepalive 64;
}
server {
...
}
}
这两种情况都加载该应用完美,在localhost &在指定端口上。我确信场景2是正确的负载平衡,因为它模仿了传统的多服务器场景。
有什么办法可以验证场景1实际上是否按预期进行负载平衡?这将是我首选的方法,我只需要知道我可以信任它。