zoukankan      html  css  js  c++  java
  • keepalived高可用

    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
        }
    }
  • 相关阅读:
    ec20 queclocator V1. 0 test
    javascript JSON.parse and JSON.stringify
    linux command pushd popd
    learning gcc #pragma once
    learning gcc __BEGIN_DECLS and __END_DECLS
    aarch-linux-gnu-g++ install
    启用”开始“菜单中的“运行”功能
    获取本机安装的软件清单
    固定任务栏
    优化菜单显示速度
  • 原文地址:https://www.cnblogs.com/Mercury-linux/p/12359515.html
Copyright © 2011-2022 走看看