nginx+keepalived实现主备高可用搭建过程
nginx+keepalived实现主备高可用搭建过程
1.实验物料
基本的理论在这里就不过多说了,我们就是先只实现主备模型,双主模型我们后续再说。
对于keepalived的理论不是很理解的同学,请参考我之前写的lvs的相关内容:《LVS负载均衡DR模式的搭建过程(不用keepalived)》和《LVS+keepalived实现高可用的DR模式负载均衡的搭建过程》。
2.软件安装
1.安装虚拟机
这里我安装了两台linux centos7 64的虚拟机,以nat的网络方式配置,两台机器的ip 分别为192.168.222.102和192.168.222.103。至于安装过程,这里不再详细说明,不会的同学可以根据我之前的博客《VMware虚拟机下安装CentOS(NAT模式)》来进行参考。
2.安装nginx
这里我分别在192.168.222.102和192.168.222.103安装nginx,关于安装过程,这里不再想起介绍,不会的同学请参考我之前的博客《CentOS-7下安装Nginx的详细过程》来进行安装。
3.keepalived安装及配置
1.下载及安装
yum install keepalived -y
安装完成后,软件配置在etc/keepalived下
2.配置keepalived
1.先备份一下原始配置文件
cp keepalived.conf keepalived.conf.bak
2.配置:
192.168.222.102 MASTER上的配置:
! Configuration File for keepalived
global_defs {
notification_email {
aaa@qq.com
aaa@qq.com
aaa@qq.com
}
notification_email_from aaa@qq.com
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_http_port {
script "/opt/chk_nginx.sh"
interval 2
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.222.150/24 dev eth0 lable eth0:3
}
}
192.168.222.103 BACKUP上的配置:
! Configuration File for keepalived
global_defs {
notification_email {
aaa@qq.com
aaa@qq.com
aaa@qq.com
}
notification_email_from aaa@qq.com
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_http_port {
script "/opt/chk_nginx.sh"
interval 2
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.222.150/24 dev eth0 lable eth0:3
}
}
3.编写nginx自动化监测脚本
脚本内容如下:
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
echo "$counter"
if [ "${counter}" = "0" ]; then
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
service keepalived stop
fi
fi
3.启动运行
1.启动nginx
分别在两台虚拟机上执行命令:
/usr/local/nginx/sbin/nginx
2.启动keepalived
分别在两台虚拟机上执行命令:
service keepalived start
3.查看vip是否成功
在192.168.222.102 MASTER执行:
ip addr
在192.168.222.103 MASTER执行:
配置成功。
4.验证
1.正常情况
直接访问http://192.168.222.150,运行正常:
2.挂掉keepalived
挂掉192.168.222.102 MATER:
service keepalived stop
此时查看ip
看到VIP 192.168.222.150 消失
然后我们查看192.168.222.103 BUCKUP的ip
看到VIP 192.168.222.150 飘到了BUCKUP上,完成了故障转移。
我们再看一下页面是否能访问:
仍然正常进行。
3.重启keepalived的MASTER
在192.168.222.102 MATER 重新启动keepalived:
service keepalived start
查看ip:
VIP又重新飘回了来了。
VIP在BUCKUP上消失了。
4.关掉nginx
关掉nginx后,2秒后又会重启nginx,如果重启失败,会杀掉keepalived,VIP会再次飘到BUCKUP上。
5.注意问题
- keepalied 的配置中,要把vrrp_strict这个参数注释掉,否则无法ping通VIP,也无法访问VIP.,还会出现脑裂,就是主备都有VIP;
- 注意要编写nginx的自动化监测脚本;
- 关掉防火墙,关掉防火墙,关掉防火墙,重要的事情说三遍。
上一篇: nginx 服务器搭建
下一篇: 织梦CMS能不能做淘宝电商类的网站
推荐阅读
-
基于mysql+mycat搭建稳定高可用集群负载均衡主备复制读写分离操作
-
JAVAEE——宜立方商城03:Nginx负载均衡高可用、Keepalived+Nginx实现主备
-
Redis 5.0.4-搭建3主3从3哨兵,实现高可用性与故障转移
-
Ubuntu搭建Mysql+Keepalived高可用的实现(双主热备)
-
Ansible实现主备模式的高可用(Keepalived)
-
LVS+keepalived实现高可用的DR模式负载均衡的搭建过程
-
关于使用Keepalived实现Nginx的自动重启及双主热备高可用问题
-
nginx+keepalived实现主备高可用搭建过程
-
JAVAEE——宜立方商城03:Nginx负载均衡高可用、Keepalived+Nginx实现主备
-
基于mysql+mycat搭建稳定高可用集群负载均衡主备复制读写分离操作