当前位置:首页 > Nginx > 正文内容

keepalived高可用

5年前 (2019-09-20)Nginx566

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
    }
}

“keepalived高可用” 的相关文章

Nginx的编译安装

Nginx快速安装Mainline version 开发版Stable version 稳定版Legacy version 历史版本基础环境准备:#确认系统网络 [root@qmf ~]# ping baidu.com #确认yum可用 [root@qmf&n...

Nginx匹配规则和优先级

1.Server优先级Nginx多个相同Server_name优先级1.1、环境准备[root@nginx ~]# mkdir /soft/code{1..3} -p [root@nginx ~]# for i i...

Nginx实现四层负载均衡

Nginx实现四层负载均衡

Nginx四层负载均衡四层负载均衡是基于传输层协议包来封装的(如:TCP/IP),七层是指的应用层,他的组装在四层的基础之上,无论四层还是七层都是指的OSI网络模型。四层负载均衡应用场景1、四层+七层来做负载均衡,四层可以保证七层的负载均衡的高可用性;如:nginx就无法保证自己的服务高可用,需要依...

Nginx作为缓存WEB服务

Nginx作为缓存WEB服务

通常情况下缓存是用来减少后端压力, 将压力尽可能的往前推, 减少后端压力,提高网站并发延时1.缓存常见类型服务端缓存代理缓存, 获取服务端内容进行缓存客户端浏览器缓存Nginx代理缓存原理2.缓存配置语法proxy_cache配置语法Syntax: proxy_cache zon...