keepalived 安装以及主备配置详解

Posted on 2021-09-17,6 min read

一. keepalived 的安装

首先我们再安装 keepalived 之前我们需要安装依赖包:

yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel

安装好依赖包之后我们再使用 yum 进行安装:

yum install keepalived  -y

再我们配置 keepalived 之前还是要检查防火墙和 slinux 是否关闭以及时间同步问题.

二. keepalived 高可用的具体配置

/usr/sbin/keepalived        keepalived 主指令文件

/etc/keepalived/keepalived.conf         keepalived 主配置文件

/usr/lib/system/system/keepalived.service    相当于 keepalived 服务启停脚本

/usr/share/doc/keepalived-2.0.11/samples/   keepalived 众多配置的模板

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
    
   }
   notification_email_from root@director_server
   smtp_server 127.0.0.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 MASTER
interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    mcast_src_ip 192.168.204.130
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 11613
    }
    virtual_ipaddress {
       10.213.116.13
     }
 }

具体配置如上所示, 我们需要注意的是 vrrp_stritc 需要注释掉, 这里的两个 ip 地址, 第一个是本机 ip, 第二个是虚拟 ip, 在第一部分 global_defs 的最后面需要加上用户名和主机名, 还有第二部分的 notification_email_from 后面需要修改为用户名 @主机名, 具体的有不懂的都可以参考上面我的配置文件, 后面的部分暂时用不上都可以注释掉了.

三. keepalived 主备模式的配置

主机的配置如下所示:

global_defs {
   notification_email {
     acassen@firewall.loc
    
   }
   notification_email_from root@director_server
   smtp_server 127.0.0.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 MASTER
    interface ens33
    virtual_router_id 51
   priority 100
    advert_int 1
    mcast_src_ip 10.213.116.11
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 11613
    }
    virtual_ipaddress {
        10.213.116.13
     }

}

这里需要注意的除了上面的 ip 需要修改, 另外就是主机的 state 需要修改为 MASTER.

下面就是从机的配置:

global_defs {
   notification_email {
     acassen@firewall.loc
    
   }
   notification_email_from root@real_server1
   smtp_server 127.0.0.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 ens36
    virtual_router_id 51
    priority 90
    advert_int 1
    mcast_src_ip 10.213.116.12
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 11613
    }
    virtual_ipaddress {
         10.213.116.13
    }

}

从机这里的 state 就要改为 BACKUP, 我们还需要注意的是我们在每一次修改配置文件之后都需要重启服务, 否则配置文件将无法生效. 如果重启失败就是我们的配置文件书写有问题, 我们要特别注意大小写, 尽量避免因为粗心而产生的语法错误, 免得后期排错麻烦.

四. 双主模式的具体配置

双主模式也就是互为主备模式, 还是需要两台虚拟机, 具体配置如下, 我就只写一台的配置, 另外一台的区别也就是修改一下本机 ip, 两台主机的 VI_1 虚拟 ip 一致, VI_2 的虚拟 ip 也要一致, 另外就是第一台的 VI_1state 为 MASTER, 那么第二台的 VI_1 的 state 就要为 BACKUP, 第一台虚拟机的 VI_2 的 state 就要为 BACKUP, 第二台为 MASTER. 具体配置如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
        root@director_server
   }
   notification_email_from root@director_server
   smtp_server 127.0.0.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 MASTER
    interface ens33
    virtual_router_id 51
    interval 1
    #weight -20
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    mcast_src_ip 192.168.204.130
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.204.196
     }
}

vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.204.198
    }
}

五. 相关测试

systemctl start keepalived
systemctl enable keepalived

systemctl status keepalived
Untitled

我们在修改好配置文件之后, 需要重启服务, 使用 ip a 命令查看本机 ip

Untitled

这个是我主机的 ip 地址, 红色圈出来的部分就是我们的虚拟 ip, 我们可以停止的主机的 keepalived 服务, 模拟机器的宕机, 那么我们的虚拟 ip 就会跳转到另一台机器也就是从机上, 保持正常运行状态.

六. 报错及总结

从最后两张图我们可以清晰的发现在主机的 keepalived 服务停止后, 我们的虚拟 IP 跳转到了从机上, 那么当我们主机服务恢复之后, 我们会发现虚拟 IP 会再次回到主机, 这就是我们本次 keepalived 服务的优点之处, 在虚拟机模拟服务器的宕机时, 就算原本主机出现故障, 也不会影响服务的继续进行, 从机会继续接替主机的身份保持服务的继续进行.

我在做 keepalived 的配置过程中具体没有出现什么报错, 在我看来最重要的就是配置文件, 在上面的具体配置中我在需要注意的地方都做了红色标注, 另外就是我们每一次修改配置文件之后都需要再次重启服务配置文件才会生效, 具体在遇到什么问题可以积极留言, 我看到之后都会积极尽力解答. 希望本次分享对大家的学习有所帮助.

下一篇: CentOS7 中 MySQL 5.7 主主互备配置→