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

keepalived高可用

6年前 (2019-09-20)Nginx878

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高可用” 的相关文章

PHP编译安装

PHP5.6编译安装配置yum源并安装依赖wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum install zlib-devel&...

Nginx匹配规则和优先级

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

Nginx作为缓存WEB服务

Nginx作为缓存WEB服务

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

Nginx实现Rewrite重写(url重写跳转)及各种案例

Nginx实现Rewrite重写(url重写跳转)及各种案例

Rewrite基本概述Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。Rewrite使用场景1、地址跳转,用户访问www.drz.com这个URL是,将其定向至一个新的域名mobile.drz.com2、协议跳转,用户通过http协议请求网站时,将其...

Nginx+Lua实战灰度发布与WAF

Nginx+Lua实战灰度发布与WAF

1.Lua脚本基础语法Lua是一个简洁、轻量、可扩展的脚本语言Nginx+Lua优势充分的结合Nginx的并发处理epool优势和Lua的轻量实现简单的功能且高并发的场景统计IP统计用户信息安全WAF1.安装lua[root@Nginx-Lua ~]# yum inst...