我在Linux-EC2服务器上设置了一个Nginx容器。我的Nginx配置文件如下:
server {
listen 80;
server_name client-dev.com;
location / {
proxy_pass http://dev-client.1234.io:5001/;
proxy_redirect off;
##proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
server {
listen 80;
server_name client-test.com;
location / {
proxy_pass http://test-client-1234.io:5005/;
proxy_redirect off;
##proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
它将具有不同端口的请求传递到端口80.现在,我需要在主动 - 被动模式下创建冗余Nginx。如果Nginx容器停止/停止。
为此,我需要在同一台服务器中设置另一个Nginx容器吗?如果是这样,应该如何设置自动进行故障转移?
我看过"上游"选项,但正如我发现,它不适用于这种情况。我拥有的proxy_pass是外部和动态的,我使用docker-cloud中的脚本获取它们。
还有另一种名为" docker-gen"但是,我不确定它会有多大用处,如果有的话我更喜欢用另一种方式?
任何帮助都将不胜感激。
答案 0 :(得分:1)
我可以考虑以下选项:
Kubernetes:您可以为nginx设置创建部署并使用活跃性探针。 Kubernetes将使用您提供的http请求/间隔探测nginx容器,如果pod不健康,它将被终止并重新创建。使用kubernetes集群中的多节点,您甚至可以缓解节点故障。
Docker Swarm:使用具有多个节点的docker swarm模式,您可以缓解节点故障,但应该通过可以使用bash
和{{1}完成的外部自定义脚本来检查nginx运行状况}。
使用keepalived的独立主机:这是使用keepalived的传统nginx主动/被动群集。您也可以将它与docker一起使用,但它会很脏。因为所有容器在一台主机上都是被动的。