Keepalived

Keepalived
Keepalived 软件由 C 编写的,最初是专为 LVS负载均衡软件设计的,Keepalived 软件主要是通过 VRRP 协议实现高可用功能。

VRRP部分,该部分可以包含以下四个子模块
1. vrrp_script #我们会用到第一个和第四个
2. vrrp_sync_group
3. garp_group
4. vrrp_instance #我们会用到第一个和第四个

 

复制代码
1.keepalived的安装
    步骤1:从官方网站下载keepalived,官网地址
        https://keepalived.org/
    步骤2:将下载的资源上传到服务器
        keepalived-2.0.20.tar.gz
    步骤3:创建keepalived目录,方便管理资源
        mkdir keepalived
    步骤4:将压缩文件进行解压缩,解压缩到指定的目录
        tar -zxf keepalived-2.0.20.tar.gz -C keepalived/
    步骤5:对keepalived进行配置,编译和安装
        cd keepalived/keepalived-2.0.20
        ./configure --sysconf=/etc --prefix=/usr/local
        make && make install
1.keepalived的安装
复制代码

 

复制代码
2.keepalived的配置
cp /etc/keepalived/keepalived.conf.sample /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf
    #vrrp master配置
    global_defs {
       notification_email {             #通知邮件,当keepalived发生切换时,需要发email给具体的邮箱地址
         acassen@firewall.loc           
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc        #设置发件人的邮箱信息
       smtp_server 192.168.200.1                        #指定smpt服务地址
       smtp_connect_timeout 30                          #指定smpt服务连接超时时间
       router_id LVS_DEVEL                              #运行keepalived服务器的一个标识,可以用作发送邮件的主题信息
       
       vrrp_skip_check_adv_addr     #默认是不跳过检查。检查收到的VRRP通告中的所有地址可能会比较耗时,设置此命令的意思是,如果通告与接收的上一个通告来自相同的master路由器,则不执行检查(跳过检查)
       vrrp_strict                  #严格遵守VRRP协议。
       vrrp_garp_interval 0         #在一个接口发送的两个免费ARP之间的延迟。可以精确到毫秒级。默认是0
       vrrp_gna_interval 0          #在一个网卡上每组na消息之间的延迟时间,默认为0
    }

    vrrp_instance VI_1 {            #设置keepalived实例的相关信息,VI_1为VRRP实例名称
        state MASTER                #有两个值可选MASTER主 BACKUP备;这个值有什么意义?实际生效还是靠优先级
        interface ens33             #vrrp实例绑定的接口,用于发送VRRP包[当前服务器使用的网卡名称]
        virtual_router_id 51        #指定VRRP实例ID,范围是0-255
        priority 100                #指定优先级,优先级高的将成为MASTER
        advert_int 1                #指定发送VRRP通告的间隔,单位是秒
        authentication {            #vrrp之间通信的认证信息
            auth_type PASS          #指定认证方式。PASS简单密码认证(推荐)
            auth_pass 1111          #指定认证使用的密码,最多8位    
        }
        virtual_ipaddress {
            192.168.1.99            #虚拟IP地址设置虚拟IP地址,供用户访问使用,可设置多个,一行一个
        }
        track_script {
            check_nginx
        }
    }
    
    #keepalived只能做到对网络故障和keepalived本身的监控,即当出现网络故障或者keepalived本身出现问题时,进行切换。
    #但是这些还不够,我们还需要监控keepalived所在服务器上的其他业务,比如Nginx,如果Nginx出现异常了,仅仅keepalived保持正常,是无法完成系统的正常工作的,
    #因此需要根据业务进程的运行状态决定是否需要进行主备切换,这个时候,我们可以通过编写脚本对业务进程进行检测监控。
    #我们需要使用 vrrp_script,使用脚本监控指定的系统状态,进而完成vrrp的切换
    #此处仅在master进行配置即可
    vrrp_script check_nginx {
        script /root/check_nginx.sh     #执行脚本位置
        interval 3 #执行时间间隔
        weight -20 #动态调整vrrp_instance的优先级
    }

    [root@yefeng ~]# cat check_nginx.sh
    #!/bin/bash
    num=`ps -C nginx --no-header | wc -l`
    if [ $num -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 2
        if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
            killall keepalived
        fi
    fi
    
    #注意,脚本若要正确执行,需要给予正确的权限
    chmod 755 /root/check_nginx.sh
    
    #反正验证了,check_nginx.sh的相关配置无误,但是keepalived并未执行check_nginx.sh脚本。
    --------------------------------------------------------
    #vrrp backup配置
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
       vrrp_skip_check_adv_addr
       vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }

    vrrp_instance VI_1 {
        state BACKUP                #修改此项,其余使用默认配置
        interface ens33             #修改此项,其余使用默认配置
        virtual_router_id 51
        priority 90                 #修改此项,其余使用默认配置
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.1.99            #修改此项,其余使用默认配置
        }
    }
2.keepalived的配置
复制代码

 

3.启动keepalived并测试
    /usr/local/sbin/keepalived
    #ip a s ens33 观察现象,vip确实启用了
3.启动keepalived并测试

 

posted @   雲淡風輕333  阅读(41)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示