Keepalived—部署和配置指南

引言


  最近做 Nginx 的高可用集群,需要用到 Keepalived 组件,顺带做一个笔记。

编译


  首先到官网下载合适的版本,笔者下载的是Version 2.0.16,然后将压缩包上传到Linux服务器;
  接下来解压压缩包,运行如下命令:

tar -zxvf keepalived-2.0.16.tar.gz

  然后进入解压后的文件夹,并运行 configure 命令检查当前环境是否满足安装要求,并进行配置:

cd keepalived-2.0.16
./configure

Unfortunately,笔者的环境中差依赖组件,运行后出现如下错误:

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

【解决方法】安装OpenSSL,运行如下命令:

yum -y install openssl-devel

安装完成后再次配置,出现如下警告:

*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.

【解决方法】安装libnl,运行如下命令:

yum -y install libnl libnl-devel  

安装完成后再次配置,配置成功后进行编译,运行如下命令:

./configure
make && make install

配置


  Keepalived有三个文件需要拷贝到系统配置目录下,分别存放在编译成功后的 Keepalived 目录中:

# Keepalived 启动脚本
keepalived/sbin/keepalived
# Keepalived 配置文件
keepalived/etc/keepalived/keepalived.conf
# Keepalived 日志级别配置文件
keepalived/etc/sysconfig/keepalived

运行如下命令将配置文件拷贝到系统对应的目录下:

mkdir /etc/keepalived
chmod 755 /usr/local/keepalived/sbin/keepalived
cp /usr/local/keepalived/sbin/keepalived /etc/rc.d/init.d/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

启动 Keepalived,并查看状态:

systemctl start keepalived
systemctl status keepalived

可以看到如下的状态:

status.png

高可用主备配置


配置文件如下:

! Configuration File for keepalived
global_defs {
    router_id 192.168.70.129 ## 标识id,通常为 hostname,当前部署机器的IP
    vrrp_skip_check_adv_addr
    #vrrp_strict
    vrrp_garp_interval 0
    vrrp_gna_interval 0
} 
## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级.
##如果weight配置的值大于0,且脚本执行结果为 0,则优先级相应的增加;
##如果weight配置的值小于0,且脚本执行结果非 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。

## 定义虚拟路由, VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
    state MASTER ## 主节点为 MASTER, 对应的备份节点为 BACKUP
    interface eno16777736 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同, 我的是 eth016777736
    virtual_router_id 51 ## 虚拟路由的 ID 号, 两个节点设置必须一样, 可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址
    mcast_src_ip 192.168.70.129 ## 本机 IP 地址
    priority 100 ## 节点优先级, 值范围 0-254, MASTER 要比 BACKUP 高
    nopreempt ## 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
    advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样, 默认 1s
    ## 设置验证信息,两个节点必须一致
    authentication {
        auth_type PASS
        auth_pass 123@qwe.com ## 真实生产,按需求对应该过来
    }
    ## 将 track_script 块加入 instance 配置块
    track_script {
        chk_nginx ## 执行 Nginx 监控的服务
    } #
    # 虚拟 IP 池, 两个节点设置必须一样
    virtual_ipaddress {
        192.168.70.11 ## 虚拟 ip,可以定义多个
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容