Keepalived+Nginx双机热备实验
![](http://djy.oldit.cn/article/keepalived_cover.webp)
Keepalived+Nginx双机热备实验
Hunter前言
- Keepalived是一款高可用性的服务,它可以帮助您在云服务器上实现负载均衡和故障转移。该服务通过VRRP协议实现了主备节点之间的故障切换和负载均衡。
- VRRP是一种虚拟路由器冗余协议,它能够在网络中的节点故障时自动将工作负载转移到备用节点上,从而保证网络的高可用性。Keepalive软件与VRRP协议结合使用,可以实现更加可靠和稳定的高可用性。
- Keepalived的主要功能包括管理LVS负载均衡软件、实现对LVS集群节点健康检查的功能、作为系统网络服务的高可用功能以及作为高可用故障切换转移原理。当Keppalived服务正常工作时,主Master节点会不断地向备节点发送心跳消息,告诉备Backup节点自己还活着。当主Master节点发生故障时,备节点会调用自身的接管程序,接管主Master节点的IP资源及服务。当主Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。
一、Keepalived的工作过程
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
二、Keepalived+Nginx双机热备实验
1、基础环境
机器 | 主备 | IP地址 |
---|---|---|
nginx-1 | 主 | 192.168.222.143 |
nginx-2 | 备 | 192.168.222.167 |
客户端/windows | / | 192.168.222.1 |
1.1、关闭防火墙和selinux
nginx-1和nginx-2的配置如下:
1 | [root@nginx-1 ~]# systemctl stop firewalld |
2、安装nginx
配置好阿里的yum源,使用yum安装nginx。
nignx-1和nginx-2配置如下:
1 | nginx-1: |
2.1、nginx的一些默认配置文件路径
- /etc/nginx/nginx.conf # nginx的默认配置文件
- /etc/nginx/conf.d # nginx的自定义配置文件
- /usr/share/nginx/html/ # nginx的默认网页存放目录
- /var/log/nginx/ # nginx的日志文件存放目录
2.2、对nginx的网页页面进行修改
修改nginx的默认页面文件,以便客户端测试查看效果
nginx-1和nginx-2的配置如下:
1 | nginx-1配置: |
3、安装Keepalived
nginx-1和nginx-2 使用yum安装
1 | [root@nginx-1 ~]# yum install keepalived -y |
3.1、修改配置文件
默认的配置文件在/etc/keepalived目录下
1 | [root@nginx-1 ~]# cd /etc/keepalived/ |
3.2、分别修改nginx-1和nginx-2的配置文件
nginx-1(主)配置:
1 | [root@nginx-1 keepalived]# > keepalived.conf |
nginx-2(备)配置:由于主备的配置是一样的,只需要修改部分参数,可以通过scp命令把nginx-1的配置文件传到nginx-2上
1 | [root@nginx-1 keepalived]# scp keepalived.conf 192.168.222.167:`pwd` |
3.3、查看ip
此时通过ip a去查看两台nginx服务器,只有nginx-1主备是有虚拟ip地址,只有等nginx-1宕机后,才会转移到nginx-2上
nginx-1:
nginx-2:
3.4、编写nginx存活脚本
- 由于keepalived是通过内核转发请求判断主备服务器是否在线,而nginx是应用程序,它有进程意外退出的可能性,不涉及内核,所以nginx挂了keepalived并不能作出相应的判断来切换备服务器,这时需要使用一个脚本来实时监控nginx进程是否存在,如果不存在则重启开启,重启开启不了杀掉当前主机中的keepalived服务来实现故障切换。开启keepalived后脚本自动执行
1 | #在/etc/keepalived目录下创建nginx存活检测脚本 |
4、客户端测试
4.1、分别对两台nginx服务器进行访问
4.2、对VIP进行访问
看到的结果是nginx-1的服务器,因为nginx-1服务器是master主服务器
4.3、故障测试
- 模拟服务器故障,如果nginx-1服务器突然宕机后,让keepalived实现自动故障转移,让客户端访问的页面到backup服务器上
- 此时再次尝试访问刷新VIP查看结果
此时访问的页面是nginx-2服务器提供的,VIP也已经到nginx-2服务器的ens33网卡上
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果