我正在考虑如何以严肃的方式完成这几个星期,但还没有得出结论。也许我想错了方向。
假设您有一百个来来去去的网络应用程序。你想要一个像 gitlab 例子那样的 nginx 配置:
location / {
proxy_pass http://gitlab;
}
由于 gitlab 是用 创建的docker service create
,nginx 将能够通过它在你的入口网络中的 swarm-vip 假 dns 名称来解析 gitlab。
但是:仅当服务容器正在运行时。否则,nginx 将无法启动,因为 [emerg] 1#1: host not found in upstream "gitlab"
现在,当您必须运行高可用性 nginx 并且确保 proxy_pass 的应用程序正在运行时,这是一个难题。
每次更新 nginx 服务时,如果其他 100 个其他 swarm 服务中只有一个在同一秒内没有运行,它就不会出现.. wtf?
如果这不起作用,为什么我们需要在 swarm 中进行名称解析?你怎么解决这个问题?
我考虑了 nginx 虚拟主机模板的 consul 和动态生成(甚至不要考虑 docker-nginx-proxy!),但是应用程序非常不同,您可以说每个应用程序都有自己的单独配置。而所有这些工作都不是出于特殊原因,只是为了解决 nginx 的解决问题?