#!/bin/bash #以下只测试故障切换,未涉及到LVS及故障隔离等,因此不需要arp抑制,所以不必动/etc/sysctl,此故障切换可以防止单点,可应用于REDIS/MEMCACHE/MYSQL等服务。现在简单测试NGINX #编译的时候会提示configure: WARNING: keepalived will be built without libnl support. #以及缺少configure: error: Popt libraries is required yum install popt-devel libnl-devel -y mkdir -p /root/software && cd /root/software wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz tar zxvf keepalived-1.2.7.tar.gz cd keepalived-1.2.7 ./configure --prefix=/usr/local/keepalived/ -disable-lvs-syncd -disable-lvs #不做lvs用,如果要做lvs,./configure --prefix=/usr/local/keepalived/ make && make install && cd .. #如果不指定prefix,那么可执行文件在 /usr/local/sbin/ 配置文件在/usr/local/etc/ #指定目录/usr/local/keepalived/ ,则可执行文件和配置文件等都在这个目录下面 #keepalive默认的配置文件位置 /etc/keepalived/keepalived.conf mkdir -p /etc/keepalived/ ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/ chkconfig --add keepalived chkconfig keepalived on sed -i '14 d' /etc/sysconfig/keepalived echo 'KEEPALIVED_OPTIONS="-f /etc/keepalived/keepalived.conf -D"' >>/etc/sysconfig/keepalived #ps -ef |grep keepalived #Keepalived 正常运行时,共启动 3 个进程,其中一个进程是父进程,负责监控其子进程;一 #个是 vrrp 子进程;另外一个是 checkers 子进程。 # /etc/init.d/keepalived --help #Usage: /etc/init.d/keepalived {start|stop|reload|restart|condrestart|status} #service keepalived #Usage: /etc/init.d/keepalived {start|stop|reload|restart|condrestart|status} #看一下配置文件,如果不需要LVS,后面的配置文件可以直接删掉 :<<glq cat /etc/keepalived/keepalived.conf global_defs { notification_email { 51061358#qq.com } notification_email_from 51061358#qq.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id web //自定义命名 } vrrp_script chk_http_port { script "/root/sh/check_ng.sh" interval 1 //检测脚本执行的间隔 } vrrp_instance VI_1 { //vrrp实例,可以有多个 state MASTER //备的是BACKUP interface eth0 //注意指定网卡接口 virtual_router_id 51 //id主备要一致 priority 151 //若 MASTER 的 priority 值为 150,那么 BACKUP的 priority 只能是 140 或更小的数值。 advert_int 1 //同步通知间隔 advert_int .MASTER 与 BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒。 authentication { auth_type PASS auth_pass 1111 //密码要一致 } track_script { chk_http_port //调用脚本 } virtual_ipaddress { 192.168.2.199 //VIP,可以有多个地址 } } #看下脚本 cat /root/sh/check_ng.sh #!/bin/bash status=`ps -ef |grep nginx|grep -v grep|wc -l` Date=`date --date today +%D_%T` if [ $status -eq 0 ];then echo $Date >> /root/jiankong_log/check_ng.log /etc/init.d/keepalived stop fi 扩展阅读:http://www.keepalived.org/pdf/sery-lvs-cluster.pdf glq
转载于:https://blog.51cto.com/gaolongquan/1209648