构思图:
实现目的:当主nginx服务器宕机之后能够切换到备份的nginx继续运作,从而不影响正常的工作!
1.准备工作
1.1:两台nginx服务器
1.2:安装keepalive
yum install keepalived.x86_64 -y
1.3:一个虚拟的IP地址
2.修改keepalive的配置文件
2.1.主服务器的配置文件
vim /etc/keepalived/keepalived.conf #编辑keeplived'的配置文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.60.100
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/ nginx_check.sh" #脚本存放的路径
interval 2 #检测脚本实行的间隔
weight 2
}
vrrp_instance VI_1 {
state MASTER #如果是备份服务器的话就将MASTER改为BACKUP
interface ens33 #网卡的名称
virtual_router_id 51 #主备服务器的id要相同
priority 100 #主备服务器的优先级不同,主服务器的优先级高于备份服务器
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.60.50 #虚拟ip
}
}
2.2.备份服务器的配置文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.60.101
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/ nginx_check.sh" #脚本存放的路径
interval 2 #检测脚本实行的间隔
weight 2
}
vrrp_instance VI_1 {
state BACKUP #如果是备份服务器的话就将MASTER改为BACKUP
interface ens33 #网卡的名称
virtual_router_id 51 #主备服务器的id要相同
priority 90 #主备服务器的优先级不同,主服务器的优先级高于备份服务器
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.60.50 # 虚拟ip
}
}
3.编辑脚本并放在/usr/local/src/目录中(主备服务器的脚本相同)
#!/ bin/ bash
A=`ps -c nginx -no-header lwc -l`
if [ $A -eq o ] ; then
/usr/local/ nginx/sbin/nginx
sleep 2
if [ `ps -c nginx --no-header |wc -l` -eq 0 ] ; then
kiilall keepalived
fi
fi
4.启动keepalived和nginx
systemctl start keepalived.service
cd /usr/local/nginx/sbin #进入到sbin目录下
./nginx #启动nginx
5.测试!
5.1.测试一,先用虚拟IP在浏览器地址栏输入看能不能打开nginx的页面,测试成功。
5.2.查看主备服务器IP地址,发现虚拟ip被绑定到网卡上了
5.3.停掉主服务器,看能不能自动切换到备份服务器去请求,正确的效果是能切换到备份服务器去请求
5.4.分别查看主服务器和备份服务器上的ip
主服务器
备份服务器
我们发现主服务器停掉之后就没有虚拟ip绑定在网卡在上面了,但是代替主服务器工作的备份服务器上就有虚拟ip绑定着网卡!
实验结论:我们的目的是为了使用keepalived工具创建一个虚拟ip和一个检测脚本,让虚拟的ip去请求nginx服务器,当检测脚本检测到主服务器发生故障之后会自动切换到备份服务器去工作,为了防止nginx宕机导致无法正常工作