文章目录
Keepalived 实现双机主备高可用
1. 对128主服务器的配置
! Configuration File for keepalived
# global_defs 全局配置
global_defs {
# 路由id: 当前安装keepalived节点主机的标识符, 全局唯一(可以理解成主键), 我们更改为 keep_128
router_id keep_128
}
# vrrp协议, 相当于计算机节点
vrrp_instance VI_1 {
# 表示的状态, 当前的 128 为nginx的主节点, 即为 MASTER; 备用机的话是 BACKUP
state MASTER
# 当前实例绑定的网卡,通过命令ip addr查看 : ens33
interface ens33
# 虚拟路由id, 保证主备节点这里一致, 即在同一个路由分组内
virtual_router_id 51
# 权重, 用于备用机的竞争, 谁的权重高, 在MASTER挂掉之后, 就能称为MASTER
priority 100
# 主备自己同步检查的时间间隔(心跳检测), 默认是1秒
advert_int 1
# 认证授权的密码, 防止非法节点被监听, 导致非法节点的进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟ip, 即VIP 的配置, 我们使用 192.168.92.150
virtual_ipaddress {
# 虚拟ip, 即VIP 的配置, 我们使用 192.168.92.150
virtual_ipaddress {
192.168.92.150
}
}
2. 对129备用服务器的配置
! Configuration File for keepalived
global_defs {
router_id keep_129
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.92.150
}
}
3. 注意事项如下:
- 两台服务器的硬件配置应该一样
- router_id 是全局唯一的, 即两台服务器不同
- vrrp协议中, 主服务器的状态(state)为
MASTER
, 备用服务器的状态的BACKUP
;
虚拟路由Idvirtual_router_id
应该保证一致;
4. 测试如下
-
先访问两台服务器, 访问正常如下:
-
访问我们的虚拟路由VIP(我们配置的是150)
-
我们将主服务器停掉(上一节将keepalived注册为系统服务, 这里就使用系统服务进行关闭)
systemctl stop keepalived.service
-
再次访问我们的虚拟路由VIP
-
再次启动我们的主服务器(模拟修复了主节点), 并且访问VIP
systemctl start keepalived.service
我们访问VIP, 即如下, 配置成功