首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Nginx的码头动态负载平衡

基于Nginx的码头动态负载平衡
EN

Stack Overflow用户
提问于 2016-06-22 14:10:21
回答 2查看 2.4K关注 0票数 1

我正在做一个专注于Docker的实习,我必须对一个有客户端、服务器和数据库的应用程序进行负载平衡。我使用Nginx作为负载均衡器,我的目标是根据服务器容器的CPU使用量动态缩放其数量。例如,如果CPU使用率超过60%,我想在不重新启动Nginx的情况下动态添加一个新容器来划分CPU使用率。我必须修改nginx.conf文件以添加一个新容器,但我必须重新启动Nginx容器才能应用这些更改,这是非常慢的。

所以我的问题是:是否有一种(免费的)方法来动态地做这件事?

如果你想要更多的信息,请告诉我,原谅我糟糕的英语。谢谢。

编辑:,我做了@Konstantin艾则佐夫告诉我:

代码语言:javascript
复制
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/主机,而不必重新启动容器(除了一个脏脚本)?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-20 11:05:32

我使用了一段时间来自韦尔德的nginx代理映像来负载容器之间的平衡,它适用于多个可伸缩的服务。它监视停靠守护进程,如果发生事件,它将重新构建nginx配置文件,在扩展时添加新的容器实例,如果正在扩展,则将其移除。

因为Docker 1.10 (不确定这是否是正确的版本)有一个内置在Docker守护进程中的内部DNS,所以从那时起我就使用了它的循环特性。现在,我使用映像代理将请求传递到我定义为别名的域到网络选项中。我不知道我是否清楚,因为我的糟糕的英语,但我相信我的Github的例子可能有帮助。

票数 1
EN

Stack Overflow用户

发布于 2016-06-22 14:20:30

不幸的是,在不重新启动的情况下更改配置没有简单(免费)的方法,实现零停机时间缩放的唯一方法是优雅地重新启动Nginx,当您优雅地重新启动Nginx时,它将生成带有新配置的新实例,直到它启动,然后用以前的配置杀死旧实例。

官方指南

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37970578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档