nginx keepalived高可用(私网)

keepalived高可用(私网)

        部署在整个集群中的一个高可用软件,作用是创建一个VIP(虚拟IP),在整个集群中有且只有一个机器上生成VIP,当这台机器出现问题时,keepalived将自动将VIP切换至其他的某一台服务器上。
 

一、部署keepalived:

1.server1、server2安装keepalived

yum install keepalived -y
 
 

2.修改配置文件。

吧原来的清空了,然后在吧这个复制过去修改
server1:
 
 
#全局配置
global_defs {
    #身份识别(全局唯一)
    router_id lb01
}
# 配置VRRP协议
vrrp_instance VI_1 {
    # 状态,MASTER和BACKUP(这里仅仅是一个标记,正真确认VIP的是权重)
    state BACKUP
    nopreempt
    # 绑定网卡
    interface eth0
    # 虚拟路由标示,可以理解为分组
    virtual_router_id 50
    # 优先级(数字越大,权重越大)
    priority 100
    # 监测心跳间隔时间
    advert_int 1
    # 配置认证
    authentication {
        # 认证类型
        auth_type PASS
        # 认证的密码
        auth_pass 1111
    }
    # 设置VIP
    virtual_ipaddress {
        # 虚拟的VIP地址
        192.168.159.33
    }
 
}
server2:
 
#全局配置
global_defs {
    #身份识别(全局唯一)
    router_id lb02
}
# 配置VRRP协议
vrrp_instance VI_1 {
    # 状态,MASTER和BACKUP(这里仅仅是一个标记,正真确认VIP的是权重)
    state BACKUP
    nopreempt
    # 绑定网卡
    interface eth0
    # 虚拟路由标示,可以理解为分组
    virtual_router_id 50
    # 优先级(数字越大,权重越大)
    priority 90
    # 监测心跳间隔时间
    advert_int 1
    # 配置认证
    authentication {
        # 认证类型
        auth_type PASS
        # 认证的密码
        auth_pass 1111
    }
    # 设置VIP
    virtual_ipaddress {
        # 虚拟的VIP地址
        192.168.159.33
    }
}
注意:vip地址必须和绑定网卡地址一个网段
 

3.重启测试

server1、server2:
systemctl restart keepalived
 
用ip a查看ip地址。
 
 

二、抢占士和非抢占式

        state BACKUP    (所有的机器全部设置成BACKUP)
        #开启非抢占式    
        nopreempt
 
解决了那些问题:
        当master宕机切换到backup的时候会短暂一小段时间无法访问,当master恢复服务时候切换回来又宕机一小段时间,如果全部设置问backup那么就没有master切换过去除非宕机要不然不会切换回来了
 

三、高可用时如果出现脑裂问题时怎么解决

 
在配置文件添加

1、通过一个脚本判断

        
            #每5秒执行一次脚本,脚本执行内容不能超过5秒,否则会中断再次重新执行脚本
            vrrp_script check_web {
                # 指定脚本路径
                script "/etc/keepalived/check.sh"
                # 5秒钟执行一次
                interval 5
            }
                
            #调用计划的脚本
            track_script {
                check_web
            }
 
例:
#全局配置
global_defs {
    #身份识别(全局唯一)
    router_id lb01
}
 
 
#每5秒执行一次脚本,脚本执行内容不能超过5秒,否则会中断再次重新执行脚本
vrrp_script check_web {
    # 指定脚本路径
    script "/etc/keepalived/check.sh"
    # 5秒钟执行一次
    interval 5
}
 
 
# 配置VRRP协议
vrrp_instance VI_1 {
    # 状态,MASTER和BACKUP(这里仅仅是一个标记,正真确认VIP的是权重)
    state BACKUP
    nopreempt
    # 绑定网卡
    interface eth0
    # 虚拟路由标示,可以理解为分组
    virtual_router_id 50
    # 优先级(数字越大,权重越大)
    priority 100
    # 监测心跳间隔时间
    advert_int 1
    # 配置认证
    authentication {
        # 认证类型
        auth_type PASS
        # 认证的密码
        auth_pass 1111
    }
    # 设置VIP
    virtual_ipaddress {
        # 虚拟的VIP地址
        192.168.159.33
    }
 
 
    #调用计划的脚本
    track_script {
        check_web
    }
}
 
脚本:
[root@lb01 ~]# cat /etc/keepalived/check.sh
#!/bin/bash
#1.判断端口
#2.通过进程的方式
 
 
ps -aux | grep [n]ginx
if [ $? -ne 0 ] ; then
    /usr/local/nginx/sbin/nginx
    sleep 3;
    ps -aux | grep [n]ginx
    if [ $? -ne 0 ] ; then
    systemctl stop keepalived
    fi
 
 
fi
 
 
posted @ 2021-11-02 22:11  念长卿  阅读(56)  评论(0)    收藏  举报