VIP:10.2.5.208
Keepalived:10.2.5.201 Keepalived:10.2.5.202
Tracker:10.2.5.205 Tracker:10.2.5.204
Storage:10.2.5.205 Storage:10.2.5.203
在201和202两台机器上面搭建keepalived:
步骤1:解压keepalived-1.2.18.tar.gz
tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local
步骤2:配置
mkdir /usr/local/keepalived && cd /usr/local/keepalived-1.2.18 && ./configure --prefix=/usr/local/keepalived
步骤3:编译 安装
make && make install
步骤4:将Keepalived配置为linux自启动服务
创建目录
mkdir /etc/keepalived
拷贝文件
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin
#添加keepalived到开机启动
chkconfig keepalived on
#启动keepalived服务
service keepalived start [stop restart]
或者 yum install keepalived -y
/etc/keepalived
/etc/keepalived/keepalived.conf #keepalived服务主配置文件/etc/rc.d/init.d/keepalived #服务启动脚本
/etc/sysconfig/keepalived
/usr/bin/genhash
/usr/libexec/keepalived
/usr/sbin/keepalived
配置keepalived.conf
201:vim /etc/keepalived/keepalived.conf
global_defs {
router_id 201 ##标识节点的字符串,通常为hostname
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ##执行脚本位置
interval 2 ##检测时间间隔
weight -20 ## 如果条件成立则权重减20(-20)
}
## 定义虚拟路由 VI_1为自定义标识。
vrrp_instance VI_1 {
state MASTER ## 主节点为MASTER,备份节点为BACKUP
## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(我这>里是eth6)
interface eth1
virtual_router_id 201 ## 虚拟路由ID号 同一个集群主备要一致
mcast_src_ip 10.2.5.201 ## 本机ip地址
priority 100 ##优先级配置(0-254的值)
Nopreempt ##
advert_int 1 ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
authentication {
auth_type PASS
auth_pass 1234 ## 真实生产环境下对密码进行匹配
}
track_script {
chk_nginx
}
virtual_ipaddress {
10.2.5.208 ## 虚拟ip(vip),可以指定多个
}
}
202:vim /etc/keepalived/keepalived.conf
global_defs {
router_id 202 ##标识节点的字符串,通常为hostname
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ##执行脚本位置
interval 2 ##检测时间间隔
weight -20 ## 如果条件成立则权重减20(-20)
}
定义虚拟路由 VI_1为自定义标识。
vrrp_instance VI_1 {
state BACKUP ## 主节点为MASTER,备份节点为BACKUP
绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同
interface eth1
virtual_router_id 201 ## 虚拟路由ID号 同一个集群主备要一致
mcast_src_ip 10.2.5.202 ## 本机ip地址
priority 100 ##优先级配置(0-254的值)
Nopreempt ##
advert_int 1 ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
authentication {
auth_type PASS
auth_pass 1234 ## 真实生产环境下对密码进行匹配
}
track_script {
chk_nginx
}
virtual_ipaddress {
10.2.5.208 ## 虚拟ip(vip),可以指定多个
}
}
动态检查脚本
/etc/keepalived/nginx_check.sh:
keepalived 会定时执行脚本并且对脚本的执行结果进行分析,动态调整vrrp_instance的优先级。这里的权重weight 是与下面的优先级priority有关,如果执行了一次检查脚本成功,则权重会-20,也就是由100 - 20 变成了80,Master的优先级为80 就低于了Backup的优先级90,那么会进行自动的主备切换。
如果脚本执行结果为0并且weight配置的值大于0,则优先级会相应增加。
如果脚本执行结果不为0 并且weight配置的值小于0,则优先级会相应减少。
当脚本执行成功,keepalived被关闭,当nginx修复后需要手工启动keepalived 才能使该主机nginx可用
#!/bin/bash
A=`ps -C nginx --no-heading|wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-heading |wc -l` -eq 0 ];then
killall keepalived
fi
Fi
常用命令
service keepalived start
service keepalived restart
service keepalived stop