Keepalived

51 篇文章 2 订阅

1.安装keepalived(ubuntu server)

首先安装依赖:

安装libssl-dev(sudo apt-get install libssl-dev);

        libpopt-dev(sudo apt-get install libpopt-dev);

        libnl libnl-devel(sudo apt-get install libnl libnl-devel)(IPV6);

        libnfnetlink-devel(sudo apt-get install libnfnetlink-devel)(IPV6);

下载keepalived-1.3.6.tar.gz安装包

并解压与~/keepalived-1.3.6/

编译:./configure --prefix=/usr/local/keepalived

            make && make install

2.keepalived配置

复制需要的文件

sudo cp ~/keepalived-1.3.6/keepalived/etc/init.d/keepalived /etc/init.d/keepalived

sudo cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

sudo cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig(/etc/sysconfig不存在,需提前创建)

sudo mkdir /etc/keepalived/

sudo cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf(配置信息可参照如下)

Master配置:

  1. ! Configuration File for keepalived  
  2.   
  3. global_defs {  
  4.    notification_email {  
  5.      localhost@sample.com  
  6.    }  
  7.    notification_email_from notify@sample.com  
  8.    smtp_server smtp@sample.com  
  9.    smtp_connect_timeout 30  
  10.    router_id LVS_59  
  11. }  
  12.   
  13. vrrp_script chk_haproxy {  
  14.    script "/usr/local/keepalived/shell/chk_haproxy.sh"    #服务探测,返回0说明服务是正常的  
  15.    interval 3                     #每隔3秒探测一次  
  16.    weight 5                       #haproxy上线,权重加5;下线,权重减5  
  17.    fall 2  
  18.    rise 2  
  19. }  
  20.   
  21. vrrp_instance mysql_1 {  
  22.     state MASTER  
  23.     interface eth0  
  24.     virtual_router_id 50  
  25.     garp_master_delay 1  
  26.     priority 120  
  27.     advert_int 1  
  28.     authentication {  
  29.         auth_type PASS  
  30.         auth_pass password1  
  31.     }  
  32.     virtual_ipaddress {  
  33.         192.168.56.101  
  34.     }  
  35.     track_interface {  
  36.         eth0  
  37.     }  
  38.     track_script {  
  39.         chk_haproxy  
  40.     }  
  41. }  

Slave配置:

  1. ! Configuration File for keepalived  
  2.   
  3. global_defs {  
  4.    notification_email {  
  5.      localhost@sample.com  
  6.    }  
  7.    notification_email_from notify@sample.com  
  8.    smtp_server smtp@sample.com  
  9.    smtp_connect_timeout 30  
  10.    router_id LVS_59  
  11. }  
  12.   
  13. vrrp_script chk_haproxy {  
  14.    script "/usr/local/keepalived/shell/chk_haproxy.sh"    #服务探测,返回0说明服务是正常的  
  15.    interval 3                     #每隔3秒探测一次  
  16.    weight 5                       #haproxy上线,权重加5;下线,权重减5  
  17.    fall 2  
  18.    rise 2  
  19. }  
  20.   
  21. vrrp_instance mysql_1 {  
  22.     <strong><span style="color:#FF0000;">state BACKUP</span></strong>  
  23.     interface eth0  
  24.     virtual_router_id 50  
  25.     garp_master_delay 1  
  26.     <strong><span style="color:#FF0000;">priority 100</span></strong>  
  27.     advert_int 1  
  28.     authentication {  
  29.         auth_type PASS  
  30.         auth_pass password1  
  31.     }  
  32.     virtual_ipaddress {  
  33.         192.168.56.101  
  34.     }  
  35.     track_interface {  
  36.         eth0  
  37.     }  
  38.     track_script {  
  39.         chk_haproxy  
  40.     }  
  41. }  


检测脚本chk_haproxy.sh:

  1. #!/bin/bash  
  2.   
  3. # 定时查看haproxy是否存在,如果不存在则启动haproxy,  
  4. # 如果启动失败,则停止keepalived  
  5. echo "[Keepalived]Check HAProxy Running..."  
  6.   
  7. beforeStatus=$(ps aux|grep haproxy | grep -v grep | grep -v chk_haproxy.sh | grep -v bash | wc -l)  
  8. if [ $beforeStatus -le 0 ]; then  
  9.    echo "[Keepalived]Startup HAProxy Service"  
  10.    sudo sh /usr/local/haproxy/startup.sh  
  11.    sleep 2  
  12.    afterStatus=$(ps aux|grep haproxy | grep -v grep | grep -v bash |wc -l)  
  13.    echo "After:$afterStatus"  
  14.    if [ $afterStatus -le 0  ]; then  
  15.       echo "[Keepalived]Shutdown Keepalived Service"  
  16.       sudo sh /usr/local/keepalived/shutdown.sh  
  17.    fi  
  18. fi  
  19.   
  20. echo "[Keepalived]Check HAProxy Running Done."  
curl -I -s --connect-timeout $timeout http://localhost:8080 -w %{http_code} | tail -n1

添加软连接:首先创建/etc/rc.d/init.d/目录

sudo ln -s /lib/lsb/init-functions /etc/rc.d/init.d/functions

3.启动keepalived

/etc/init.d/keepalived start|restart|stop

启动时需要输入当前用户密码


4.查看keepalived是否已启动

ps aux|grep keepalived

查看keepalived设置IP:ip a


5.配置keepalived日志

在/etc/sysconfig/keepalived文件中修改KEEPALIVED-OPTIONS="-D",修改为:KEEPALIVED-OPTIONS="-D -d -S 0"

在/etc/rsyslog.conf文件中添加:

#keepalived

local0.* /var/log/keepalived.log

在/etc/rsyslog.d/中添加48-keepalived.conf文件(sudo cp 50-default.conf 48-keepalived.conf)

删除原内容并添加如下内容:

local0.*     /var/log/keepalived.log

表示local0设备的日志信息记录于/var/log/keepalived.log里

然后重启rsyslog服务:sudo service rsyslog restart


6.启动停止脚本

启动:

  1. #!/bin/sh   
  2.   
  3. HOME=/usr/local/keepalived/  
  4. DAEMON=/etc/init.d/keepalived  
  5. DAEMON_ARGS="start -f /etc/keepalived/keepalived.conf -d -D -S 0"  
  6. DESC="Keepalived Daemon"  
  7.   
  8. echo "Starting $DESC, and use conf $DAEMON_ARGS"  
  9.   
  10. $DAEMON $DAEMON_ARGS  
停止:

  1. #!/bin/sh   
  2.   
  3. HOME=/usr/local/keepalived/  
  4. DAEMON=/etc/init.d/keepalived  
  5. DAEMON_ARGS=" stop -f /etc/keepalived/keepalived.conf -d -D -S 0"  
  6. DESC="Keepalived Daemon"  
  7.   
  8. echo "Stopping $DESC, and use conf $DAEMON_ARGS"  
  9.   
  10. $DAEMON$DAEMON_ARGS  

问题

问题1:Keepalived执行chk_haproxy.sh检测脚本时出现exited due to signal 15

解决1:vrrp_script{}中的interval时间需大于脚本中的sleep时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值