勿知勿畏

keepalived高可用

2019-09-20 09:00:27

1、keepalived

    通过vrrp协议实现的高可用.             虚拟路由冗余协议

    VMAC和VIP实现高可用技术方案      地址漂移


2、keepalived安装
[root@lb01 ~]# yum install keepalived -y
[root@lb02 ~]# yum install keepalived -y
3、keeplaived配置
主的配置文件
global_defs {     
    router_id lb01   
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 50
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    10.0.0.3
    }
}
备的配置文件
global_defs {
    router_id lb02
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
}
    virtual_ipaddress {
    10.0.0.3
    }
}
3、keepalived启动
[root@lb01 ~]# systemctl start keepalived
[root@lb01 ~]# systemctl enable keepalived


4、主配置文件和备配置文件区别

Keepalived配置区别     Master配置     Backup节配置
route_id(唯一标识) lb01 lb02
state(角色状态) MASTER BACKUP

priority(优先级) 150 100



keepalived检测脑裂
vip=10.0.0.3
master_ip=10.0.0.5
while true;do
#1.通过ping命令测试主是否是通
   ping -c 2 -W 3 $master_ip &>/dev/null
#2.ping的通master的ip,同时本地还存在一个vip地址
if [ $? -eq 0 -a `ip add|grep "$vip"|wc -l` -eq 1 ];then
        echo "ha is split brain.warning."
    else
        echo "ha is ok"
    fi
sleep 5
done
-------------------------------------------------------------
[root@lb02 scripts]# cat check_split.sh 
vip=10.0.0.3
master_ip=10.0.0.5
while true;do
    ping -c 2 -W 3 $master_ip &>/dev/null
    if [ $? -eq 0 -a `ip add|grep "$vip"|wc -l` -eq 1 ];then
        echo "ha is split brain.warning."
pkill keepalived &>/dev/null
    if [ $? -eq 0 ];then
        echo "Keepalived pkill"
    else
    exit
    fi
    else
        echo "ha is ok"
    fi
sleep 5
done
如果Nginx故障了,怎么办?
1.尝试拉起nginx
2.如果拉不起Nginx,则把keepalived给杀死
[root@lb01 ~]# cat /scripts/check_web.sh
#!/bin/sh
nginxpid=$(ps -C nginx --no-header|wc -l)
#1.判断Nginx是否存活,如果不存活则尝试启动Nginx
if [ $nginxpid -eq 0 ];then
    systemctl start nginx
    sleep 3
    #2.等待3秒后再次获取一次Nginx状态
    nginxpid=$(ps -C nginx --no-header|wc -l) 
    #3.再次进行判断, 如Nginx还不存活则停止Keepalived,让地址进行漂移,并退出脚本  
    if [ $nginxpid -eq 0 ];then
        systemctl stop keepalived
   fi
fi
-----------------配置keepalived支持脚本
1.给脚本增加执行权限
[root@lb01 conf.d]# chmod +x /scripts/check_web.sh
2.修改keepalived配置文件
[root@lb01 conf.d]# cat /etc/keepalived/keepalived.conf 
global_defs {     
    router_id lb01   
}
#定义脚本存放的位置
vrrp_script check_web {
   script "/scripts/check_web.sh"
   interval 5
}
vrrp_instance VI_1 {
    state BACKUP
    priority 150
    nopreempt
    interface eth0
    virtual_router_id 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
}
    virtual_ipaddress {
        10.0.0.3
    }
#调用并运行该脚本
    track_script {
        check_web
    }
}
作者:无知勿畏 分类:Nginx 浏览:1119 评论:0
控制面板
您好,欢迎到访网站!
  查看权限
搜索
你好,朋友
真是美好的一天!
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
网站分类
站点信息
  • 文章总数:90
  • 页面总数:0
  • 分类总数:9
  • 标签总数:0
  • 评论总数:0
  • 浏览总数:119133