gpt4 book ai didi

nginx - 使用Nginx进行Docker动态负载平衡

转载 作者:行者123 更新时间:2023-12-02 19:10:52 26 4
gpt4 key购买 nike

我正在做一个专注于Docker的实习,我必须对具有客户端,服务器和数据库的应用程序进行负载平衡。我将Nginx用作负载平衡器,我的目标是根据服务器容器的CPU使用率动态扩展其数量。例如,如果CPU使用率超过60%,我想在运行时添加一个新容器,而无需重新启动Nginx来划分CPU使用率。
我必须修改nginx.conf文件以添加新的容器,但是我必须重新启动Nginx容器以应用更改,这非常慢。

所以我的问题是:是否有一种(免费的)动态方式?

告诉我,如果您需要更多信息,请原谅我的英语不好。
谢谢。

编辑:我就像@Konstantin Azizov告诉我的那样:

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进程,然后重新加载以应用更改。没有错误,即时重装工作正常,但Nginx不考虑我的新节点,请求仍然仅定向到创建的第一个节点...

编辑2:我找到了问题的根源。似乎为了在“docker-compose scale”之后更新容器的/ etc / hosts,需要停止,删除并重新启动该容器。就我而言,我真的不想停止支持Nginx的容器。

问题:任何人都知道如何在重新缩放后更新容器的/ etc / hosts,而不必重新启动容器(在脏脚本旁边)?

谢谢。

最佳答案

我使用了Json Wilder中的nginx-proxy图像一段时间来在容器之间进行负载平衡,并且它可用于多个可伸缩服务。它监视docker守护程序,如果发生事件,它将重建nginx配置文件,从而在您向外扩展时添加新的容器实例,或者在您扩展时将其删除。

由于Docker 1.10(不确定这是否是正确的版本)已经在Docker守护进程中嵌入了一个内部DNS,因此从那时起我就使用了它的循环功能。现在,我使用正式的nginx图像代理将请求传递到我定义为网络选项别名的域。我不知道由于英语不好我是否很清楚,但我相信Github示例可能会有所帮助。

关于nginx - 使用Nginx进行Docker动态负载平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37970578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com