问题描述
我有两个相同的 linux 服务器通过 Nginx 提供相同的内容。我想通过keepalived通过故障转移获得高可用性,即1号服务器总是尽可能服务Nginx的内容,如果它崩溃,服务器2(备份)将开始服务Nginx的内容(内容不会因服务器而异到服务器)。当我停止服务器 1 时,一切似乎都正常工作,它通过服务器 2 上配置的内部 IP 提供服务,但是如何使该内容通过最终端点提供给外部?也就是说,客户端连接到“domain.externo.com”并在服务器 2 关闭时提供服务器 2 的内容。
基本基础架构如下所示:
为此,我在主服务器上使用了具有以下配置的 keepalived 工具(“/etc/keepalived/keepalived.conf”):
# script "/usr/bin/curl -k https://172.31.12.20" #Slave
script "/usr/bin/curl -k https://172.31.11.251" # Master
interval 2
weight 2
fall 2
rise 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 1
priority 101 # 101 on master,100 on backup
advert_int 1
virtual_ipaddress {
172.31.100.100/24
}
track_script {
chk_Nginx
}
}
在slave配置中("/etc/keepalived/keepalived.conf")
vrrp_script chk_Nginx {
script "/usr/bin/curl -k https://172.31.12.20" #Slave
# script "/usr/bin/curl -k https://172.31.11.251" # Master
interval 2
weight 2
fall 2
rise 2
}
vrrp_instance VI_1 {
interface eth0
state SLAVE
virtual_router_id 1
priority 100 # 101 on master,100 on backup
advert_int 1
virtual_ipaddress {
172.31.100.100/24
}
track_script {
chk_Nginx
}
}
我有Master的Nginx配置(Slave很相似,不是为了加长帖子):
listen 80;
listen [::]:80;
server_name domain.externo.com;
location / {
rewrite ^ https://$host$request_uri? permanent;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/Nginx/html;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name domain.externo.com;
ssl_certificate /etc/certs/domain.externo.com/fullchain.pem;
ssl_certificate_key /etc/certs/domain.externo.com/domain.externo.com.key;
ssl_trusted_certificate /etc/certs/domain.externo.com/domain.externo.com.ca.crt;
include /etc/Nginx/conf.d/ssl.conf;
location ~ / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# # Fix the “It appears that your reverse proxy set up is broken" error.
# proxy_pass https://172.31.100.100;
proxy_read_timeout 90;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/Nginx/html;
}
}
我在之前的配置文件“/etc/keepalived/keepalived.conf”中尝试过在指令中引入域:
...
virtual_ipaddress {
# 172.31.100.100/24
domain.externo.com
...
}
这行不通。我在 Nginx 或 KeepAlived 配置中缺少什么?我希望有一个人可以帮助我。预先非常感谢您
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)