Centos7.9环境下安装Keepalived(亲测版)

目录

一、在线安装

二、离线安装

(1)、 下载

(2)、安装依赖包

(3)、解压文件 

(4)、编译

(4.1)、进入 keepalived-2.2.8 目录中

(4.2)、安装Keepalived

 (5)、配置文件修改

 (6)、启动

 (7)、检查启动状态

(8)、 设置开机自启

 (9)、配置从节点

 (10)、启动从节点keepalived

 (11)、检查从节点状态

(12)、主从节点差异

三、验证VIP漂移

(1)、主节点停止keepalived

(2)、查看从节点状态

(3)、启动主节点

(4)、查看主从状态

四、配置非抢占式

(1)、概念

(2)、非抢占配置

(3)、vip漂移演示

五、问题 

(1)、脑裂问题

(1.1)、现象:

 (1.2)、脑裂故障原因

 (1.3)、故障排查

(1.4)、处理办法之关闭防火墙

(1.5)、处理办法之添加vrrp协议

(2)、WARNING - this build will not support IPVS with IPv6

(2.1)、处理方式:


一、在线安装

执行命令

yum install keepalived

 执行完成后,修改配置文件并启动,配置文件启动方法参考离线安装方式

二、离线安装

(1)、 下载

下载源码包,根据自己需要选择版本,本次安装使用的是2.2.8版本

(2)、安装依赖包

keepalived依赖包有openssl-devel 、net-snmpdevel、libnl、libnl-devel,需要先安装,安装方法可以参考本人nginx安装文章,整体安装的包在nginx基础上多两个,可能会有些雍余,但是不影响。

具体明细如下图:

执行命令

rpm -Uvh *.rpm --nodeps --force

 

(3)、解压文件 

(4)、编译

(4.1)、进入 keepalived-2.2.8 目录中

(4.2)、安装Keepalived

依次执行命令:

./configure --prefix=/usr/local/keepalived

make

make install

prefix后边的路径为keepalived安装的路径

 

 进入到/usr/local下可以看到keepalived安装目录

 (5)、配置文件修改

进入目录/usr/local/keepalived/etc/keepalived

复制keepalived.conf.sample  并且命名为keepalived.conf

修改配置文件 keepalived.conf

! Configuration File for keepalived

global_defs { #全局配置

   router_id lb132  #标识身份->名称
 
}

vrrp_instance VI_1 { #vrrp 实例定义部分 VI_1
    state MASTER #标识角色状态:主节点
    interface ens33 #网卡绑定接口:绑在ens33 上
    virtual_router_id 51 #虚拟路由id
    priority 100  #优先级 主节点值要大于备用节点
    advert_int 1 #监测间隔时间:1秒
    authentication { #认证
        auth_type PASS #认证方式 主从节点要一致
        auth_pass 1111 #认证密码  主从节点要一致
    }
    virtual_ipaddress {
        192.168.75.131 #虚拟的VIP地址
    }
}

 (6)、启动

systemctl start keepalived

 (7)、检查启动状态

systemctl status keepalived

或者 ip a

 

 

(8)、 设置开机自启

systemctl enable keepalived

 (9)、配置从节点

在从节点服务器中按以上步骤安装keepalived,对应的配置文件与主节点有些差别,具体如下

! Configuration File for keepalived

global_defs {

   router_id lb129
 
}

vrrp_instance VI_1 {
    state BACKUP #标识角色状态:备节点
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.75.131
    }
}

 (10)、启动从节点keepalived

systemctl start keepalived

 (11)、检查从节点状态

systemctl status keepalived

或者 ip a

 从节点此时不应该有虚拟vip

(12)、主从节点差异

keepalived配置区别Master节点配置Backup节点配置
router_id(唯一标识)router_id lb132router_id lb129
state(角色状态)state MASTERstate BACKUP
priority(优先级)priority 100priority  50

三、验证VIP漂移

(1)、主节点停止keepalived

systemctl stop keepalived

#查看状态

ip a

(2)、查看从节点状态

ip a

(3)、启动主节点

systemctl start keepalived

 

(4)、查看主从状态

四、配置非抢占式

(1)、概念

上边的配置方式都是抢占方式,即如果Master故障,Backup自动接管,Master恢复后会夺权,

所以抢占方式与非抢占方式的区别为:

  • 抢占式:如果Master恢复后将VIP抢回来,就叫抢占式
  • 非抢占式:节点都是BACKUP,只要节点成为为VIP,其他节点就是启动恢复,哪怕式权重高也不会把VIP抢回来,就叫非抢占式。 

(2)、非抢占配置

配置步骤:

 1.两个节点上的state都必须配置为BACKUP

  2.两个节点都必须加上配置nopreempt

  3.其中一个节点的优先级必须高于另一个节点的优先级

两个节点配置如下:

## lb132

! Configuration File for keepalived

global_defs {

   router_id lb132

}

vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.75.131
    }
}
 

## lb129


! Configuration File for keepalived

global_defs {

   router_id bl129

}

vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.75.131
    }
}

(3)、vip漂移演示

分别启动129和132服务中的keepalived服务,虽然132的权重比较高,但是因为是非抢占式并且129先启动的,所以vip不会漂移到132中。这也说明非抢占模式只要

五、问题 

(1)、脑裂问题

(1.1)、现象:

如果两台服务器都认为自己是Master,就会出现VIP在两台服务器上,造成冲突

 

 (1.2)、脑裂故障原因

  • 服务器网线松动等网络故障
  • 服务器硬件故障发生损坏现象而崩溃
  • 主备都开启firewalld防火墙
  • 配置文件错误

 (1.3)、故障排查

先排查对应的配置文件是否有错误,确保配置文件没有问题

如果配置文件没有错误,则重启keepalived服务

systemctl restart keepalived

观察日志

 tail -f /var/log/messages

 主节点重启后,它会直接去抢MASTER,日志如下:

 从节点重启后,先是进入BackUp状态,然后马上又会争抢进入Master状态,日志如下:

日志显示,从节点先进入 BACKUP,但是紧接着从节点Receive advertisement timeout,接收广播超时后,进入主节点状态。

此时检查了服务器防火墙状态发现,防火墙状态是开启状态。

(1.4)、处理办法之关闭防火墙

关闭从节点防护墙,查看日志发现,从节点正常

 这种关闭防火墙的方式可以解决此问题,但在线上是不可行的。

(1.5)、处理办法之添加vrrp协议

通过命令查看防火墙当前配置

firewall-cmd --list-all

通过命令添加协议

firewall-cmd --zone=public --add-protocol=vrrp --permanent

#重启防火墙

firewall-cmd --reload

查看从节点状态

从节点状态正常

(2)、WARNING - this build will not support IPVS with IPv6

(2.1)、处理方式:

执行./configure --prefix=/usr/local/keepalived 时候报该警告,是因为对应的依赖libnl、libnl-devel没有安装,直接安装如下的对应的依赖包即可

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值