如何负载均衡容器?

13

如何负载均衡运行简单Web应用程序的Docker容器?

我有3个Web容器在单个主机上运行。如何负载均衡我的Web容器?


这听起来像是两个不同的问题。你可能应该编辑帖子,只写一个问题,并单独提出另一个问题。 - fejese
我已经将它分成了两个问题。 - Alok Kumar Singh
你可以使用 docker run 命令的修饰符来为容器分配更多或更少的 CPU 和内存,详情请见 https://docs.docker.com/reference/commandline/cli/#run。关于 CPU,你可以使用 -c,--cpu-shares=0 来设置 CPU 的权重比例;而关于内存,则可以使用 -m,--memory="" 来限制内存的使用(格式为 <number><optional unit>,其中 unit 可以为 b、k、m 或 g)。 - user2915097
1个回答

11

将负载均衡器(如haproxy或nginx)放置在主机上,甚至可以完成工作。

不错的Haproxy文档

Nginx使用指南

无论哪种方式,都将负载均衡器放置在主机上或放置在可以访问容器中公开端口的不同服务器上。对于您的需求,Nginx可能会更简单。

设置基本的nginx负载平衡:

http {
upstream myapp1 {
    server CONTAINER_APP0_IP:PORT;
    server CONTAINER_APP1_IP:PORT;
    server CONTAINER_APP2_IP:PORT;
}
server {
    listen 80;
    location / {
        proxy_pass http://myapp1;
    }
}
}

谢谢回复。是的,在一个Docker主机环境下,这个解决方案可以工作。但是,如果我的Docker容器在像CoreOS这样的容器平台上运行,它将如何工作?我想实现根据负载自动扩展和自动重新配置代理的目标。 - Alok Kumar Singh
只需在主机前面的服务器上安装nginx即可。除了使用服务发现,这是最简单的方法。 - Michael
谢谢,我们可以使用Nginx/Haproxy将请求转发到容器。但是我想知道代理服务器根据etcd中容器的状态如何进行自动重新配置?我们是否需要使用其他工具/编写代码来解决此问题,还是已经有了解决方案? - Alok Kumar Singh
请编辑您的问题,那不是您最初提出的问题,而且那是一个非常不同的问题。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接