欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在VM虚拟机中,安装centos7环境下的keepalived

程序员文章站 2022-04-09 21:19:03
...

这里简短讲下在centos7中安装keepalived

首先是从keepalived官网中获取,这里我是放在/opt/目录下

wget http://www.keepalived.org/software/keepalived-1.4.4.tar.gz

解压缩

tar -zxvf keepalived-1.4.4.tar.gz

在安装前先下载LVS

Yum install ipvsadm

接下来是很关键的安装依赖,之前笔者在这步没作好,就会发现接下来的指定安装文件夹或是make编译时都会报错,所以这里的依赖大家最好都是按转下:

Yum install gcc-c++ 
Yum -y install libnl libnl-devel
Yum install -y libnfnetlink-devel
Yum -y install ncurses   ncurses-devel
Yum install openssl

Yum install openssl-devel

安装完成后指定安装文件夹,这里我就直接放在下载的目录中

./configure --prefix=/opt/keepalived-1.4.4

之后就是编译与安装,我们可以放在一句命令中完成

make&&make install

若成功则出现界面大致如下(这里是网上找的一张图)

在VM虚拟机中,安装centos7环境下的keepalived

完成后我们就需要去配置keepalived.conf文件,首先我们先去安装目录下的/etc/下将配置文件拷贝一份到 /etc/keepalived中,因为keepalived启动时默认去这个路径加载配置文件,这里笔者就以自己的目录为例

cp /opt/keepalived-1.4.4/etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf

然后用vim打开

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived  
  
global_defs {  
    notification_email {    
     aaa@qq.com    
   }    
   notification_email_from aaa@qq.com    
   smtp_server localhost    
   smtp_connect_timeout 30    
   router_id  NodeA   
}  
  
  
vrrp_instance VI_1 {    
    state MASTER   #指定A节点为主节点 备用节点上设置为BACKUP即可    
    interface ens33   #绑定虚拟IP的网络接口    
    virtual_router_id 51  #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组    
    priority 100   #主节点的优先级(1-254之间),备用节点必须比主节点优先级低    
    advert_int 1   #组播信息发送间隔,两个节点设置必须一样    
    authentication {   #设置验证信息,两个节点必须一致    
        auth_type PASS    
        auth_pass 1111    
    }    
    virtual_ipaddress {   #指定虚拟IP, 两个节点设置必须一样    
        192.168.1.220  
    }    
}   

其中网卡名称要大家自己去查看并更改,可以用ip a查看网卡

按同样的方法配置节点B并修改配置文件,可将A节点的配置文件复制到B节点,并修改以下几项: 
router_id  NodeB

state   BACKUP

priority   99

其它项不必修改。


这时可以启动keepalived

/opt/keepalived-1.4.4/sbin/keepalived -D

就可以发现已经启动完成,我们可以用命令来查看下进程

ps aux | grep keepalived

在VM虚拟机中,安装centos7环境下的keepalived

Keepalived 正常运行时,共启动 3 个进程,其中一个进程是父进程,负责监控其子进程;一个是 vrrp 子进程;另外一个是 checkers 子进程

并且用ip a查看网卡会发现多了一个vip


测试:

这时,我们的主从机都配置完成。当主机宕机,vip会转移到从机。当从机宕机后,vip会转移到主机。


但是这里会发现一个问题,就是当主机重启后,vip出现在了主、从机上。这也就是所谓的“脑裂”了。网上查找解决该模式,多会关联到ngnix,笔者这里暂时不想用到ngnix。所以就在从机上编写了一个脚本,检测主机的vip是否能通。代码如下:

vim check_split.sh

#!/bin/bash
# 检查脑裂的脚本,在备节点上进行部署
LB01_VIP=192.168.73.127

while true
do
  ping -c 2 -W 3 $LB01_VIP &>/dev/null
    if [ $? -eq 0 -a `ip add|grep "$LB01_VIP"|wc -l` -eq 1 ];then
        killall keepalived
    else
        systemctl start keepalived
    fi
    sleep 5
done

killall 是需要centos7安装psmisc的,命令如下:

yum install psmisc

之后我们在从机上后台运行脚本:

nohub bash check_split.sh &

这时脚本就在后台运行啦。

然后我们再来测试,当主机运行时,从机的keepalived进程就被killall了。主机宕机的时候,从机的keepalived进程又被启动接管vip。这时我们的热备就算完成一小阶段了。

当然,这里把脚本设置为开机启动是最好的,避免以后还要手动启动。

一、将脚本移到/etc/rc.d/init.d/目录下

mv /root/check_split.sh /etc/rc.d/init.d

二、增加脚本的可执行权限

chmod +x /etc/rc.d/init.d/check_split.sh

三、添加脚本到开机自动启动项目中

cd /etc/rc.d/init.d

chkconfig --add check_split.sh

chkconfig check_split.sh

至此,大功告成啦~