2.Keepalived介绍 (接上keepalived安装配置并测试)

2.Keepalived介绍
在这里我们使用Keeplived来实现高可用集群,因为heartbeat在centos6上有一些问题,影响实验效果(切换不及时问题)
keepalived通过VRRP(Virtual router redundancy protocl虚拟路由冗余协议)来实现高可用
在这个协议里会将多台功能相同的的路由器组成一个小组,这个小组里会有一个master角色和N(N>=)个backup角色。(blacpup备用)
master会通过组播的形式向各个backup发送VRRP协议的数据包,当backup收不到master发来的VRRP数据包时,就会认为master宕机了。此时就需要根据各个backup的优先级来决定谁成为新的master。
keepalived要有三个模块,分别是core、check和vrrp,其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析,check模块负责健康检查,vrrp模块主要负责vrrp协议的实现。
3.用Keepalived配置高可用
准备两台机器ip尾号(随机)130和132,130作为master,132作为backup
两台机器都执行 yum install -y keepalived
两台机器都安装nginx, yum install -y nginx
vim /etc/keepalived/keepalived.conf 首先清空配置文件
编辑主130上的keepalived配置文件,内容如下
global_defs {
notification_email { 出现问题时给个邮箱发邮件br/>[email protected]
}
notification_email_from [email protected] 由哪个邮箱发出去
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_script chk_nginx { 检测服务是否正常
script "/usr/local/sbin/check_ng.sh" 写的脚本存放的地方检查nginx是否正常的脚本
interval 3 检测时间为3秒钟
}

vrrp_instance VI_1 { 定义master
state MASTER
interface ens33 定义网卡
virtual_router_id 51 路由器ID
priority 100 权重
advert_int 1
authentication { 认证相关
auth_type PASS
auth_pass shenguanchu>com
}
virtual_ipaddress { 定义共有IP主从都能访问
192.168.237.100
}

track_script {
    chk_nginx                                                          加载到nginx
}

}
主上130编辑监控脚本,内容从 检查nginx是否正常的脚本
vim /usr/local/sbin/checkng.sh路径可自定义
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d
%H:%M:%S<br/>#计算nginx进程数量<br/>n=ps -C nginx --no-heading|wc -l<br/>#如果进程为0,则启动nginx,并且再次检测nginx进程数量,<br/>#如果还为0,说明nginx无法启动,此时需要关闭keepalived<br/>if [ $n -eq "0" ]; then<br/>/etc/init.d/nginx start<br/>n2=ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
server keepalived stop
fi
fi

给脚本755权限
chmod 755 /usr/local/sbin/check_ng.sh
systemctl start keepalived 130启动重新 (service keepalived start centos6命令)
ip add 查看virtual_ipaddress是否绑定
ps aux |grep keepalived 查看是否启动
iptables -nvL 查看是否有防火墙
getenforce查看是否disabled
从上操作
132上编辑配置文件
global_defs {
notification_email { 出现问题时给个邮箱发邮件
br/>[email protected]
}
notification_email_from [email protected] 由哪个邮箱发出去
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_script chk_nginx { 检测服务是否正常
script "/usr/local/sbin/check_ng.sh" 写的脚本存放的地方检查nginx是否正常的脚本
interval 3 检测时间为3秒钟
}

vrrp_instance VI_1 { 定义master
state Backup
interface ens33 定义网卡
virtual_router_id 51 路由器ID
priority 90 权重
advert_int 1
authentication { 认证相关
auth_type PASS
auth_pass shenguanchu>com
}
virtual_ipaddress { 定义共有IP主从都能访问
192.168.237.100
}

track_script {
    chk_nginx                                                          加载到nginx
}

}
132编辑监控脚本,内容从 检查nginx是否正常的脚本
vim /usr/local/sbin/checkng.sh路径可自定义
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d
%H:%M:%S<br/>#计算nginx进程数量<br/>n=ps -C nginx --no-heading|wc -l<br/>#如果进程为0,则启动nginx,并且再次检测nginx进程数量,<br/>#如果还为0,说明nginx无法启动,此时需要关闭keepalived<br/>if [ $n -eq "0" ]; then<br/>server nginx start<br/>n2=ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
server keepalived stop
fi
fi
给脚本755权限
chmod 755 /usr/local/sbin/check_ng.sh
systemctl start keepalived 132启动重新 (service keepalived start centos6.5命令)
ps aux |grep keepalived 查看是否启动
iptables -nvL 查看是否有防火墙
getenforce查看是否disabled
4.测试高可用
先确定好两台机器上nginx差异,比如可以通过curl -i 来查看nginx版本
测试1 关闭master上nginx服务
测试2 关闭master上的keepalived服务
测试3 启动master上的keepalived服务

猜你喜欢

转载自blog.51cto.com/sgc666/2148343