Keepalived实现nginx双机主备或双机热备高可用

HA高可用

HA高可用架构图

Keepalived介绍

解决单点故障

组件免费

可以实现高可用HA机制

基于VRRP协议

检测nginx状态,发生故障切换到备用机,还可邮件通知管理员。
主机修复完成可以通过keepalived自动加入内网,重新成为主机,备用机会让主机继续工作
一切过程由keepalived处理,人工干预的只有修复出故障的nginx节点

VRRP协议

Virtual Router Redundance Protocol(虚拟路由冗余协议)

解决内网单机故障的路由协议

构建有多个路由器 MASTER BACKUP

虚拟IP - VIP (Virtual IP Address)

keepalive双机主备原理

KeepAlived双机主备原理

用户请求虚拟ip虚拟ip与nginx绑定到一起。

由于keepalived会进行心跳检测nginx挂了后虚拟ip会与我们的备用nginx绑定到一起。

主备节点配置需要保持一致}(如果备用节点机器配置低于主节点机器可能发生瞬间宕机的情况)

安装Keepalived

安装libnl/libnl-3依赖

1
yum -y install libnl libnl-devel

打开keepalived官网选择download选择响应的版本进行下载并上传到服务器。

解压安装包

进入目录执行命令进行配置生成配置文件

1
./configure --prefix=/usr/local/keepalived --sysconf=/etc

各个参数代表的含义

参数 解释
–prefix 指定keepalived安装位置
–sysconf 核心配置文件路径(要是不设置到这个目录下面的话后面日志会报一个错在/etc目录下找不到keepalived,核心配置文件路径为/etc/keepalived/keepalived.conf)

修改核心配置文件

主节点配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
global_defs {
# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一
router_id keep_001
}

vrrp_instance VI_1 {
# 表示状态是MASTER主机还是备用机BACKUP
state MASTER
# 该实例绑定的网卡(可以使用 ip addr 执行查看)
interface ens33
# 虚拟路由Id,保证主备节点一致即可
virtual_router_id 101
# 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
priority 100
# 主备之间同步检查时间间隔,单位秒
advert_int 1
# 认证权限密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
192.168.88.88
}
}

备用节点配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
global_defs {
# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一
router_id keep_002
}

vrrp_instance VI_1 {
# 表示状态是MASTER主机还是备用机BACKUP
state BACKUP
# 该实例绑定的网卡(可以使用 ip addr 执行查看)
interface ens33
# 虚拟路由Id,保证主备节点一致即可
virtual_router_id 101
# 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
priority 80
# 主备之间同步检查时间间隔,单位秒
advert_int 1
# 认证权限密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
192.168.88.88
}
}

如果本文对你有所帮助,请赏我1个铜板买喵粮自己吃,您的支持是我最大的动力!!!