使用 Nginx 智能负载均衡
我们来使用 nginx-proxy 配合 DaoCloud 的应用管理来实现负载均衡。如希望使用 HAProxy 请查看这里。
部署 nginx-proxy
监听机器的 80、443 端口,这样端口上的流量由 nginx-proxy 来负载分配。
把 docker.sock 映射到 nginx-proxy 容器中,这样容器变动时需要映射的路径会被自动检测到。
部署 nginx-proxy 的 compose 文件如下:
proxy: image: daocloud.io/daocloud/nginx-proxy:0.3.6 ports: - 443:443 - 80:80 volumes: - /var/run/docker.sock:/tmp/docker.sock:ro restart: always
对于配置好 proxy 的主机,每当在主机上启动一个容器的时候,nignx-proxy 都会自动检查该容器是否含有 VIRTUAL_HOST 这个环境变量,当检查到某个刚启动的容器含有这个环境变量时,便会自动修改 nginx,负载这个域名的流量到容器。
我们试着部署一个博客,并且利用 nginx-proxy 负载均衡我们的服务,请看以下 compose 示例:
blog: image: daocloud.io/cmss/hypo-blog:master-796038f ports: - '4000' environment: - VIRTUAL_HOST=blog.ihypo.net restart: always
我们在应用页面增加容器的数量,nginx-proxy 会自动把流量负载均衡到这些容器上。