用docker-compose
启动两个服务:
sa
,容器 IP 地址是自动分配的10.0.0.12
sb
,容器 IP 地址是自动分配的10.0.0.13
其他服务指定了这两个服务,比如 nginx 的 upstream
upstream sa {
server sa:12345;
keepalive 1024;
}
然后,停掉这两个服务docker-compose stop sa sb
,然后先启动 sb,这时候 sb 会拿到地址10.0.0.12
,再启动 sa,这时候 sa 会拿到地址10.0.0.13
,跟之前翻了个个。
此时问题就出现了,Nginx 缓存了 host 与 IP 的关系,导致反向代理到了"错误"的地址
除了 nginx 之外,不知道其他的各式各样的软件会不会也会有类似的问题,就是配置的不是 IP 地址而是容器的 host 名字,依赖的容器 IP 发生了变化,一般这种问题该咋处理?????
1
yiplee 2020-07-20 13:16:57 +08:00
|
2
julyclyde 2020-07-20 17:23:23 +08:00
nginx 可以 proxy_pass 到一个变量,这样会导致一个 delayed evaluate 行为,就能反映出来 DNS 的变化了
其他软件不了解 |
3
qwerthhusn OP @julyclyde 那这种情况应该咋处理呢?我试了下 resolver valid 时效,发现没有作用
|
4
qq296015668 2020-12-06 15:04:15 +08:00
1. 你可以对容器设置固定 IP
2. 使用 depends_on 管理启动顺序 |