[linux] 安装 keepalived

来源:互联网 发布:java api1.6中文版chm 编辑:程序博客网 时间:2024/06/18 13:37

下载 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 <linux/mpls.h>                        ^编译中断。make[2]: *** [vrrp_daemon.o] 错误 1make[2]: 离开目录“/root/soft/keepalived-1.3.2/keepalived/vrrp”make[1]: *** [all-recursive] 错误 1make[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)

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                               fifi 
0 0