配置如下
version: "3"
services:
web:
image: demo:0.0.4-SNAPSHOT
ports:
- "8080"
nginx:
image: nginx:latest
volumes:
- "./default.conf:/etc/nginx/conf.d/default.conf"
ports:
- "8081:80"
networks:
default:
driver: bridge
name: test-dns=balance
nginx default.conf
location / {
proxy_pass http://web:8080;
}
启动命令docker-compose up -d --scale web=3
使用测压工具进行访问 autocannon http://192.168.110.195:8081/ -c 20
log 输出
看日志好像流量没有走其他的副本,是我配置有问题么?
这里
nginx
会缓存DNS查询的记录,第一次解析出来的IP,后续的请求会一直使用这个IP去访问后端。所以才能看到流量没有走其他副本。如果在容器内多执行几次
curl -v web:8080
,应该能看到每次请求的目标IP都不一样。===
虽然下面这样可以,但是应该不是最佳做法。