文章目录
- keepalived
- 什么是keepalived
- keeepalived的工作原理
- keepalived的特点
- 实现过程
- 配置步骤:
- 环境
- 具体步骤
- ngx1
- ngx2
- 效果测试
keepalived
什么是keepalived
Keepalived 是一个高可用性(High Availability, HA)工具,主要用于 Linux 系统上。它最初是为 LVS(Linux Virtual Server)设计的,但现在已经广泛应用于多种场景中,帮助用户实现服务的负载均衡和故障转移。简单来说,Keepalived 让你可以确保你的服务在遇到故障时,能够迅速切换到备用节点,保持服务的持续可用。
keeepalived的工作原理
Keepalived 的核心工作原理是 VRRP(Virtual Router Redundancy Protocol)。通过 VRRP,Keepalived 可以管理一个或多个虚拟 IP 地址。这些 IP 地址可以在多个服务器之间动态切换。具体流程如下:
节点角色: 在一个 Keepalived 集群中,节点可以是主节点(MASTER)或备份节点(BACKUP)。主节点负责处理流量,而备份节点则在主节点故障时接管流量。
心跳检测: Keepalived 定期发送“心跳”消息,检查主节点的健康状态。如果主节点无法响应,备份节点会自动接管虚拟 IP 地址,接收流量。
优先级设置: 每个节点可以设置一个优先级,优先级高的节点在正常情况下会成为主节点。如果主节点故障,备份节点会根据优先级接管。
虚拟 IP 地址: Keepalived 管理的虚拟 IP 地址对外可用,客户端只需访问这个 IP,系统会自动将请求转发到当前的主节点。
keepalived的特点
高可用性: Keepalived 通过自动故障转移机制,确保服务在主节点故障时不会中断。
负载均衡: 结合 Nginx 等负载均衡器,Keepalived 可以有效分配流量,优化资源利用。
简单易用: Keepalived 的配置相对简单,可以快速上手,适合多种场景。
灵活性: 支持多种配置选项,包括优先级、虚拟 IP 地址等,可以根据需求调整。
监控功能: 可以通过自定义脚本实现健康检查,确保服务的正常运行。
实现过程
在主从模式下,一台服务器作为主服务器(Master),另一台作为备份服务器(Slave)。正常情况下,主服务器绑定一个公网虚拟 IP 并提供负载均衡服务,而备份服务器处于空闲状态。当主服务器发生故障时,备份服务器会接管主服务器的公网虚拟 IP 并提供服务。
配置步骤:
在两台服务器上安装 Nginx 和 Keepalived。
在主服务器上配置 Keepalived 为主模式(MASTER),设置较高的优先级。
在备份服务器上配置 Keepalived 为备份模式(BACKUP),设置较低的优先级。
配置健康检查脚本,用于检测 Nginx 服务是否运行正常。
配置虚拟 IP 地址(VIP),该地址将在主服务器和备份服务器之间漂移。
环境
主机名 | ip | 服务 | 虚拟ip |
---|---|---|---|
ngx1 | 192.168.10.11 | nginx+keepalived | 192.168.10.111 |
ngx2 | 192.168.10.12 | nginx+keepalived | 192.168.10.111 |
具体步骤
ngx1
安装nginx和keepalived
yum -y install nginx keepalived
作为主端配置
vim /etc/keepalived/keepalived.conf
留下需要的配置即可
下面是配置完后的示例
global_defs {router_id LVS_DEVEL1
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.111}
}
然后创建一个测试页面
echo web1 > /usr/share/nginx/html/index.html
启动nginx和keepalived
systemctl start nginx
systemctl enable nginx
systemctl start keepalived
systemctl enable keepalived
查看有没有虚拟ip
ip add
ngx2
安装nginx和keepalived
yum -y install nginx keepalived
vim /etc/keepalived/keepalived.conf
留下需要的配置即可
下面是配置完后的示例
global_defs {router_id LVS_DEVEL2
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.111}
}
然后创建一个测试页面
echo web2 > /usr/share/nginx/html/index.html
启动nginx和keepalived
systemctl start nginx
systemctl enable nginx
systemctl start keepalived
systemctl enable keepalived
查看ip
ip add
可以看到ngx2现在是没有虚拟ip的
效果测试
访问虚拟ip
可以看到MASTER主机上nginx的web页面
现在断开ngx1的网络
nmcli c down ens33
在ngx2上查看ip
ip add
可以看到虚拟ip已经到ngx2上面了
访问ip
也可以看到是ngx2的nginx的web页面了
然后返回ngx1,启动网卡
nmcli c up ens33
查看ip
ip add
可以看到虚拟ip已经回到ngx1上了
同时ngx2的虚拟ip已经消失了
访问ip也是ngx1的web页面了
完事