高可用场景及解决方案
- 一般高可用的服务端会都有备用服务,当某一个服务节点挂掉的时候就会有备用机顶上。这往往需要反向代理(Nginx)来将连接切换到可用的服务机器上。如下图:
- 那么,当反向代理服务Nginx挂掉之后,就没办法再对外提供服务了。所以,要想Nginx也高可用就需要有备用Nginx,每个Nginx服务上都有负责检测的keepalived:
- 那么问题来了,这里有两个Nginx服务用户接入的时候怎么知道应该接入哪个。这里就需要有一个公用IP,用户请求都打到这个公用IP上,然后两台Nginx去竞争这个公共IP,谁拿到就谁来转发请求。对于用户而言我只请求了这个公用IP,对于Nginx主备之间的竞争机制是无感知的。
keepalived的安装
sudo apt install -y keepalived
- 安装完成后默认在 /etc/下回创建 keepalived/ 文件夹,里面是空的。在这里创建keepalived.conf配置文件。
global_defs {
router_id lb_111
}
vrrp_script chk_http_port {
script "/etc/keepalived/a.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.44.200
}
}
- 通过优先级来选举主备机。也就是priority字段。