当上游集装箱中的一个发生故障时,如何使nginx进行快速故障转移?在非对接环境中,故障转移似乎是瞬时的,但在进行停靠时,会有几个请求超时。
在同一个节点应用程序的两个实例前面,我使用nginx作为单个节点/vm上的负载均衡器/代理。我设想的新版本部署如下(通常称为蓝绿色部署):
然而,在nginx上并没有无缝地做#4,当我取下一个上游容器作为版本凸起时,nginx将超时几个请求(以循环的方式),因为它会发现其中一个容器已经关闭。我从来没有在非码头环境中发生过这种事。
这是我的码头云堆栈文件:
load-balancer:
image: 'foo/load-balancer:latest'
links:
- node-blue
- node-green
ports:
- '80:80'
node-blue:
image: 'foo/node-app:latest'
node-green:
image: 'foo/node-app:latest'nginx.conf看起来像:
events {
worker_connections 1024;
}
http {
gzip on;
upstream app {
server node-green;
server node-blue;
}
server {
listen 80;
server_name app.local;
location / {
proxy_pass http://app;
}
}
}发布于 2016-09-01 20:32:30
经过一场摔跤,我想我想出了一个合理的解决办法。为码头云/haproxy交换了一个自定义的nginx容器。显然,负载均衡器需要能够听码头云事件,并相应调整。
堆栈文件现在看起来如下:
load-balancer:
image: 'dockercloud/haproxy:1.5.3'
restart: always
roles:
- global
links:
- node-blue
ports:
- '80:80'
node-blue:
image: 'foo/node-app:latest'
environment:
- VIRTUAL_HOST=app.local
node-green:
image: 'foo/node-app:latest'
environment:
- VIRTUAL_HOST=app.local当我想部署一个新版本时,我只运行以下脚本:
docker-cloud service set --link node-green:node-green load-balancer
docker-cloud service redeploy node-blue --sync
docker-cloud service set --link node-blue:node-blue load-balancer
docker-cloud service redeploy node-green --synchttps://stackoverflow.com/questions/39275645
复制相似问题