我正在做一个专注于Docker的实习,我必须对一个有客户端、服务器和数据库的应用程序进行负载平衡。我使用Nginx作为负载均衡器,我的目标是根据服务器容器的CPU使用量动态缩放其数量。例如,如果CPU使用率超过60%,我想在不重新启动Nginx的情况下动态添加一个新容器来划分CPU使用率。我必须修改nginx.conf文件以添加一个新容器,但我必须重新启动Nginx容器才能应用这些更改,这是非常慢的。
所以我的问题是:是否有一种(免费的)方法来动态地做这件事?
如果你想要更多的信息,请告诉我,原谅我糟糕的英语。谢谢。
编辑:,我做了@Konstantin艾则佐夫告诉我:
docker cp ./new.conf $(docker ps -f "name=dockerizedrubis_nginx" -q ):/etc/nginx/nginx.conf
docker exec $(docker ps -f "name=dockerizedrubis_nginx" -q) bash -c 'kill -HUP $(cat /run/nginx.pid)'
docker exec $(docker ps -f "name=dockerizedrubis_nginx" -q) bash -c '/etc/init.d/nginx reload'配置文件很好地粘贴在支持Nginx的容器中,我发送HUP信号来重新配置Nginx进程et,然后重新加载以应用我的更改。没有错误,重新加载运行良好,但是Nginx没有考虑到我的新节点,请求仍然只指向创建的第一个节点.
编辑2 :我找到了问题的根源。看起来,为了更新容器的/etc/主机后的“对接-合成规模”,这个容器需要停止,删除和重新启动。在我的例子中,我真的不想阻止支持Nginx的容器。
问题:任何人都知道如何在重新调整容器后更新/etc/主机,而不必重新启动容器(除了一个脏脚本)?
谢谢。
发布于 2016-10-20 11:05:32
发布于 2016-06-22 14:20:30
不幸的是,在不重新启动的情况下更改配置没有简单(免费)的方法,实现零停机时间缩放的唯一方法是优雅地重新启动Nginx,当您优雅地重新启动Nginx时,它将生成带有新配置的新实例,直到它启动,然后用以前的配置杀死旧实例。
见官方指南。
https://stackoverflow.com/questions/37970578
复制相似问题