[linux] 安装 keepalived

下载 keepalived

官网下载

安装 keepalived

$ wget http://www.keepalived.org/software/keepalived-1.3.2.tar.gz
$ tar -xzvf keepalived-1.3.2.tar.gz
$ cd keepalived-1.3.2
$ ./configure
$ make && make install
  • 安装问题 1
configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files.!!!
  • 解决方法

    检查问题发现 openssl 已经被安装,但是没有安装 openssl-devel

    yum install openssl-devel


  • 问题 2
In file included from vrrp_daemon.c:37:0:
./../include/vrrp_iproute.h:32:24: 致命错误:linux/mpls.h:没有那个文件或目录
 #include 
                        ^
编译中断。
make[2]: *** [vrrp_daemon.o] 错误 1
make[2]: 离开目录“/root/soft/keepalived-1.3.2/keepalived/vrrp”
make[1]: *** [all-recursive] 错误 1
make[1]: 离开目录“/root/soft/keepalived-1.3.2/keepalived”
make: *** [all-recursive] 错误 1

此问题没有解决,暂时搁置。采用 yum install keepalived 方法安装


  • 问题3

keepalived 主备服务器没有正常通信
注:检测两个 keepalived 主机之间是否能通信的办法有 停掉主keepalived 服务,看备 keepalived 的日志 /var/log/messages 里是否有 keepalived 相关日志信息

  • 解决方法

    1. 关闭 SELinux、firewall 等防火墙、安全策略软件
    2. keepalived 使用 vrp 协议进行通信(端口号为 112)
  • 问题 4

    * WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
    configure: error: libnfnetlink headers missing

  • 解决方法

    1. yum -y install libnl libnl-devel
    2. yum install -y libnfnetlink-devel

keepalived 配置说明

! Configuration File for keepalived
## 配置故障发生时的通知对象以及机器标识
global_defs {
   notification_email {
## 故障时,给谁发送通知邮件,可添加多个
#     acassen@firewall.loc
   }
## 邮件发送方
#   notification_email_from Alexandre.Cassen@firewall.loc
## 通知邮件的smtp地址
#   smtp_server 192.168.200.1
## 连接smtp服务器的超时时间
#   smtp_connect_timeout 30
## 标识本节点的字条串,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到
   router_id LVS_DEVEL
}

## 定义 vrrp 实例 
vrrp_instance VI_1 {
## MASTER,配置为主服务器;BACKUP 为备用服务器   
    state MASTER
## 通讯网卡,与系统网卡名称一致
## 查询网卡名称可使用 `ip a` or `ifconfig` or 'ip addr' 等命令
    interface enp0s3
## 虚拟路由标识,这个标识是一个数字,并且同一个 vrrp 实例使用唯一的标识
    virtual_router_id 51
## 优先级,0--254,权重值 MASTER 一定要高于 BACKUP
    priority 101
## 同步时间间隔,实际部署时可以设置小一点,减少延时
    advert_int 1
## 验证信息
    authentication {
## 验证类型
        auth_type PASS
## 验证密码,用于通讯主机间验证,备用服务器必须与主服务器密码相同
        auth_pass 1111
    }

## 虚拟 IP,主服务器与从服务器设置相同的虚拟 IP,可配置多个
## 注:外部访问时,hosts 指向与本虚拟 IP 一致
    virtual_ipaddress {
    192.168.4.200 dev enp0s3
#        192.168.200.17
#        192.168.200.18
    }

## 虚拟服务定义块
    virtual_server 192.168.4.200 80{
## 健康检查时间间隔,单位 秒
    delay_loop 6
## 负载均衡转发规则,一般包括 DR、NAT 和 TUN 三种
    lb_kind DR
## 会话保持时间,单位 秒
    persistence_timeout 50
## 转发协议,一般有 TCP、UDP 两种
    protocol TCP

## 实际服务器 IP
    real_server 192.168.4.171 80{
## 权重值 数值越大,权重越高
        weight 1
## 检测到真实服务 down 后执行的脚本
        notify_down '/root/nginx_pid.sh'
## http 或 ssl 检查方式
        HTTP_GET|SSL_GET{
            url{
                path '/index.html'
            }
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
## Tcp检查
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
## 脚本检查
        MISC_CHECK {
## 外部程序检查
           misc_path /usr/local/bin/script.sh!
## 脚本执行超时时间                         
           misc_timeout 10                    
        }
    }
}

nginx_pid.sh 脚本内容

## 查看是否有 nginx 进程
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then                                         ## 如果进程值为 零,重启 nginx  
       /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
       sleep 2
## 验证 nginx 进程是否重启成功
       if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
       ## 结束 keepalived 进程
              killall keepalived                        
       fi
fi 

你可能感兴趣的:(keepalived)