生产环境中,可以一个域名绑定多个ip轮询访问,比keepalived好用多了,后端的话有eureka之类的,所以在生产环境中根本用不到。
因此,这个就是自己玩的,但是keepalived解决问题的思路我很欣赏。
keepalived只支持两台机器主备。
vip就是keepalived的虚拟ip,抽象的看,可以理解是虚拟网关
主备之间互相进行心跳检测,默认设置主机挂vip,主机死了,备机可以检测到,备机就挂vip。
同时,在机器上让keepalived对nginx进程进行心跳检测,死了就拉起来,拉不起来就把自己干死。vip就自动挂到备机上了。高可用嘛,死了接着用。
下面用docker玩一下
docker pull osixia/keepalived
docker run -d --rm -v /keepalived/conf/keepalived.conf:/container/service/keepalived/assets/keepalived.conf --name keepalived osixia/keepalived
vi /container/service/keepalived/assets/keepalived.conf
global_defs {
default_interface eth0
}
vrrp_script chk_http_port {
script "xxx.sh" # 执行脚本,在这里检测nginx死没死,死了拉起来,拉不起来就干死自己
interval 2 # 心跳
weight 2
}
vrrp_instance VI_1 {
state MASTER # 主 MASTER 备 BACKUP
interface eth0
virtual_router_id 51 # 主备机一致
priority 150 # 值大的挂vip
advert_int 1
virtual_ipaddress {
192.168.52.200
}
authentication {
auth_type PASS
auth_pass d0cker
}
notify "/container/service/keepalived/assets/notify.sh"
}
在设置一个备机就ojbk了