云计算运维 · 第二阶段 · keepalived

学习b记 · 第二阶段

七、Keepalived

1、Keepalived 高可用基本概述
什么是高可用
一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用户是无感知的。
2、keepalived是如何实现高可用的?
keepalived软件是基于VRRP协议实现的,VRRP虚拟路由冗余协议,主要用于解决单点故障问题
3、高可用keepalived核心概念
    如何确定谁是主节点谁是备节点(选举投票,优先级)
    如果Master故障,Backup自动接管,那么Maste恢复后会夺权吗(抢占试、非抢占式)
    如果两台服务器都认为自己是Master会出现什么问题(脑裂)
Keepalived高可用安装配置
环境准备
作用	       IP	       角色
node1	192.168.17.232	Master
node2	192.168.17.233	Backup
 VIP	192.168.17.128	 虚拟
1、安装keepalived
    [root@lb01 ~]# yum install -y keepalived
    [root@lb02 ~]# yum install -y keepalived
2、配置文件
    #lb01
    [root@lb keepalived]# vim /etc/keepalived/keepalived.conf 

    global_defs {
        router_id lb01
    }

    vrrp_instance VI_1 {
        state BACKUP#这里默认是MASTER 因为做了非抢占式改成了BACKUP
        interface eth0
        virtual_router_id 50
        nopreempt#修改成非抢占式
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.17.128
        }
    }
    #lb02
    [root@lb02 /]# vim /etc/keepalived/keepalived.conf 

    global_defs {
        router_id lb02
    }

    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 50
        priority 100
        nopreempt#修改为非抢占式
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.17.128
        }
    }
    
3、高可用keepalived故障脑裂
    由于某些原因,导致两台keepalived高可用服务器在指定时间内,无法检测到对方的心跳,个字去的资源及服务的所有权,而此时的两台高可用服务器又都还活着。

    脑裂故障原因:
    服务器网线松动等网络故障
    服务器硬件故障发生损坏现象而崩溃
    主备都开启firewalld防火墙
1、高可用keepalived与nginx
    为什么域名解析到VIP就可以访问nginx?
    Nginx默认监听在所有的IP地址上,VIP会飘到一台节点上,相当于那台nginx多了VIP这么一个网卡,所以可以访问到nginx所在机器

    但是…..如果nginx宕机,会导致用户请求失败,但是keepalived没有挂掉不会进行切换,所以需要编写一个脚本检测Nginx的存活状态,如果不存活则kill掉keepalived
2、配置keepalived检测nginx存活脚本
    [root@lb keepalived]# vim check_nginx.sh 、
    #!/bin/sh
    ng=`netstat -lntup | grep nginx | wc -l`

    #1.判断Nginx是否存活,如果不存活则尝试启动Nginx
    if [ $ng -eq 0 ];then
        systemctl restart nginx
        sleep 3
        #2.等待3秒后再次获取一次Nginx状态
        ng=`netstat -lntup | grep nginx | wc -l`
        #3.再次进行判断, 如Nginx还不存活则停止Keepalived,让地址进行漂移,并退出脚本  
        if [ $ng -eq 0 ];then
            systemctl stop keepalived
       fi
    fi
    #给权限
    [root@lb keepalived]# chmod +x check_nginx.sh
3、在lb01主机的keepalived配置文件中调用此脚本
    [root@lb keepalived]# vim keepalived.conf 

    vrrp_script check_web {
        script "/etc/keepalived/check_nginx.sh"
        interval 5
    }

    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 50
        #nopreempt
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.17.128
        }
    track_script {
        check_web
        }
    }
#在Master的keepalived中调用脚本,抢占式,仅需在master配置即可。(注意,如果配置为非抢占式,那么需要两台服务器都使用该脚本)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值