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

keepalived高可用

5年前 (2019-09-20)Nginx789

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实现动静分离

Nginx实现动静分离

Nginx动静分离基本概述动静分离,通过中间件将动静分离和静态请求进行分离;通过中间件将动态请求和静态请求分离,可以建上不必要的请求消耗,同事能减少请求的延时。通过中间件将动态请求和静态请求分离,逻辑图如下:动静分离好处:动静分离后,即使动态服务不可用,但静态资源不会受到影响。Nginx动静分离场景...

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

GoAccess分析Nginx日志

GoAccess分析Nginx日志

1.GoAccess基本概述GoAccess是一个基于终端的快速日志分析器。其核心思想是实时快速分析和查看Web服务器统计信息。1.安装简单;2.操作容易;3.界面酷炫;2.GoAccess安装方式安装分为yum安装与源码安装,大家可以自行选择,我这里选择使用源码的方式安装1.安装goaccess[...