文章目录
- 高可用场景及解决方案
- keepalived的安装
高可用场景及解决方案
- 一般高可用的服务端会都有备用服务,当某一个服务节点挂掉的时候就会有备用机顶上。这往往需要反向代理(Nginx)来将连接切换到可用的服务机器上。如下图:
- 那么,当反向代理服务Nginx挂掉之后,就没办法再对外提供服务了。所以,要想Nginx也高可用就需要有备用Nginx,每个Nginx服务上都有负责检测的keepalived:
- 那么问题来了,这里有两个Nginx服务用户接入的时候怎么知道应该接入哪个。这里就需要有一个公用IP,用户请求都打到这个公用IP上,然后两台Nginx去竞争这个公共IP,谁拿到就谁来转发请求。对于用户而言我只请求了这个公用IP,对于Nginx主备之间的竞争机制是无感知的。
keepalived的安装
- 直接安装
sudo apt install -y keepalived
- 安装完成后默认在 /etc/下回创建 keepalived/ 文件夹,里面是空的。在这里创建keepalived.conf配置文件。
# keepalived.conf文件内容如下:
global_defs {
router_id lb_111
}
vrrp_script chk_http_port { # 这个配置不是必须的,当有vrrp_script的时候,keepalived检测机制就是脚本的逻辑(可以通过它来检测Nginx的进程有没有挂掉),没有vrrp_script的时候,keepalived检测的是keepalived进程有没有挂掉。
script "/etc/keepalived/a.sh"
interval 2 #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 { # VI_1代表的是实例名称,主备机的必须相同
state BACKUP # 表示当前机器是 MASTER 还是 BACKUP
interface ens33 # 网卡名称,可以通过ifconfig查看
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 90 # 优先级,一般主机值较大,备份机值较小。用作主备竞选的时候
advert_int 1 # 间隔检测的时间
authentication { # 分组,一个局域网络中可能有多个keepalived程序,对同一组中的keepalived的authentication配置要一样
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.44.200 # 公用虚拟地址
}
}
- 通过优先级来选举主备机。也就是priority字段。