码迷,mamicode.com
首页 > 其他好文 > 详细

keepalived高可用

时间:2020-02-25 00:04:40      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:nginx   star   config   通过   文件   router   master   article   高可用集群   

keepalived简介

优秀博客:https://blog.csdn.net/qq_24336773/article/details/82143367

keepalived是为管理管理中保证能够提供高可用的一个服务软件,其功能称为心跳,可以防止单点故障。

keepalived工作原理

keepalived通过VRRP协议为实现基础的,VRRP全称虚拟路由器冗余协议,即虚拟路由冗余协议

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个备份,master上面有一个对外提供服务的vip(该路由器所在的内部其他机器的替代路由为该vip),主会发重叠,当备份收不到vrrp包时就认为主中断掉了,这时就需要根据[VRRP的优先级]来[选举一个备份当master]。这样的话就可以保证路由器的高可用了。

keepalived原理图

技术图片

keepalived服务

在主备模型中的所有节点中,某一时刻只允许有一个节点处于MASTER状态,其他节点均为BACKUP状态。工作中只有MASTER节点会接受请求,BACKUP状态的节点处于闲置状态。只有在MASTER出现故障的时候,BACKUP节点才会重新选举出新的节点进入MASTER状态。

主机名 IP地址 作用
web01 172.16.1.7 网站
lb01 172.16.1.5 主-负载均衡
lb02 172.16.1.6 备-负载均衡

1. 服务安装

yum install -y keepalived

2. 开启命令

systemctl start keepalived.service      ---启动
systemctl  enable  keepalived.sercice   ---开机自启

keepaliaved 抢占式配置

1. lb01负载均衡服务器---主

[root@lb01 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
    
    global_defs {                       #全局配置
       notification_email {
         acassen@firewall.loc           #邮箱地址配置(主服务出现vip切换, 需要进行邮件告知管理员)
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1        #邮件信息配置
       smtp_connect_timeout 30
       router_id lb01                   #定义一个高可用集群中节点名称
    }
    
    vrrp_instance(家族) china {         #vrrp协议响应参数配置   数据库-实例  tomcat--实例
        state MASTER                    #指定服务器在高可用服务中的身份(MASTER BACKUP)
        interface eth0                  #指定vip地址出现在哪个网卡上
        virtual_router_id 66            #家族标识
        priority 150                    #设置服务器优先级, 优先级越高, 越有可能成为主
        advert_int 1                    #主服务器发送组播包间隔
        authentication {                #配置高可用服务认证信息
            auth_type PASS              #确认进行组播通讯主机是在一个实例中
            auth_pass 1234
        }
        virtual_ipaddress {
            10.0.0.3                    #定义vip地址信息
        }
    }

2. lb02负载均衡服务器--备

[root@lb02 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
    
    global_defs {                       #全局配置
       notification_email {
         acassen@firewall.loc           #邮箱地址配置(主服务出现vip切换, 需要进行邮件告知管理员)
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1        #邮件信息配置
       smtp_connect_timeout 30
       router_id lb02                   #定义一个高可用集群中节点名称   *主备不一样*
    }
    
    vrrp_instance(家族) china {         #vrrp协议响应参数配置   数据库-实例  tomcat--实例
        state BACKUP                    #指定服务器在高可用服务中的身份(MASTER BACKUP)
                                           # *主备不一样*
        interface eth0                  #指定vip地址出现在哪个网卡上
        virtual_router_id 66            #家族标识
        priority 100                    #设置服务器优先级, 优先级越高, 越有可能成为主
                                           # *主备不一样*
        advert_int 1                    #主服务器发送组播包间隔
        authentication {                #配置高可用服务认证信息
            auth_type PASS              #确认进行组播通讯主机是在一个实例中
            auth_pass 1234
        }
        virtual_ipaddress {
            10.0.0.3                    #定义vip地址信息
        }
    }

报警通知

注:如果高可用服务出现主备切换或者有脑裂问题就触发脚本邮件通知

[root@lb02 scripts]# cat monitor_vip.sh 
#!/bin/bash
vip_info="10.0.0.3"
ip a s eth0|grep "$vip_info" >/dev/null
REVAL=$? 

if [ $REVAL -eq 0 ]
then
echo "pls check keepalived server" |mail -s "keepalived error" XXXX@qq.com
fi
[root@lb02 scripts]#  crontab -e 
* * * * *  /bin/sh /server/scripts/monitor_vip.sh &>/dev/null

2. 实现监控nginx服务状态, 进行主备切换

nginx出现错误状态码或者服务端口没有显示进行警告

方法一: 实现秒级执行监控脚本
 #!/bin/bash                         
       ps_num=$(ps -ef|grep -c n[g]inx)
       
       while true  
       do
          if [ $ps_num -lt 2 ]
          then
             systemctl stop keepalived
          fi
          sleep 2
       do    

keepaliaved 抢占式配置

非抢占式不再有主从之分,全部都为BACKUP,并且配置文件中添加nopreempt,用来标识为非抢占式;

master 文件

[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
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
    }
}

backup 文件

[root@lb02 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
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 {
        10.0.0.3
    }
}

 

keepalived高可用

标签:nginx   star   config   通过   文件   router   master   article   高可用集群   

原文地址:https://www.cnblogs.com/Mercury-linux/p/12359515.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!