keepalived 安装及使用

两点说明

  1. 本文不讲 keepalived 的工作机制及原理

  2. 个人实验采用的源码安装的方式进行的安装,比较麻烦。

通过 yum 安装会更快,方法如下:

yum install keepalived

启动/关闭/重启/查看状态

systemctl start/stop/restart/status keepalived

编辑配置文件

vi /ect/keepalived/keepalived.conf

因此采用 yum 安装可以直接跳到 第 5 步。

注意:

不管是哪种方式安装,关注点在 配置文件 和 启动脚本的位置。

1. 下载源码包

wget https://www.keepalived.org/software/keepalived-1.2.16.tar.gz

2. 安装

  • mkdir keepalived-1.2.16

  • tar -zxvf keepalived-1.2.16.tar.gz -C keepalived-1.2.16

  • cd keepalived-1.2.16

  • ./configure

如果出现如下错误

configure: error: 
  !!! OpenSSL is not properly installed on your system. !!!
  !!! Can not include OpenSSL headers files.            !!!

解决办法: yum -y install openssl-devel

  • make

  • make install

3. 配置

  • /bin/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

  • mkdir /etc/keepalived # 复制配置文件

  • /bin/cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived

  • /bin/cp /usr/local/sbin/keepalived /usr/sbin/

4. 启动 和 关闭 keepalived

启动

/etc/init.d/keepalived start

查看进程

ps -ef | grep keepalived

关闭

/etc/init.d/keepalived stop

5. 使用

我采用的 keepalived-1.2.16 版本。版本功能差异,以及配置文件差异不确定。 以下全部基于 1.2.16 版本。

5.1 配置文件

! Configuration File for keepalived

# 暂时没什么用,只需改最后一个字段 router_id
global_defs {
   notification_email {
     1111@163.com # 收件人配置
     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_01 
}

# 检测脚本
vrrp_script checkTest
{
		# 脚本所在路径
    script "/mano/module/checkTest.sh"
    interval 3 
    weight -20
}

# vrrp 实例,可以有多个实例,但是好像有个数限制
# 需要改的地方 
# 1. state 主 :MASTER 备 :BACKUP
# 2. virtual_router_id 主备保持一致 
# 3. priority 一大一小
# 4. virtual_ipaddress 主备保持一致
vrrp_instance VI_1 { 
    state MASTER # 服务器状态:主, 如果是备用服务器,改为 BACKUP
    interface eth0 # 通信端口
    virtual_router_id 51 # 主备需要配置一样
    priority 100 # 优先级
    advert_int 1 # 心跳间隔
    authentication { # 主备服务器间通信的钥匙对
        auth_type PASS
        auth_pass 1111
    }
    
    # 检测脚本配置
    track_script
    {
    	checkTest
    }
    
    # 虚拟ip,即vip 一个或多个
    virtual_ipaddress { 
        172.16.10.83/24 # 绑在 interface上
        # 192.168.200.17
        # 192.168.200.18
    }
    
    # 通知脚本
    notify_master "/path/to/to_master.sh"
    notify_backup "/path/to/to_backup.sh"
}

# 以下的配置是为了配置负载均衡的,因为我们用不到,暂时删除了。

5.2 验证是否可用

  1. 分别启动两台机器上的 keepalived

  2. 启动成功后

    在 MASTER 机器上执行,

    ip add | grep 172.16.10.83(配置文件中配置的虚拟ip)
    
    打印结果:inet 172.16.10.83/24 scope global secondary eth0
    

    在 BACKUP 机器上执行

    ip add | grep 172.16.10.83(配置文件中配置的虚拟ip)
    
    打印结果:什么也不输出
    
  3. 关闭 MASTER 机器上的 keepalived ,执行步骤 2, 结果相反