首页 > HA-Linux集群技术/缓存加速/高负载/高可用 > keepalived+nginx双机热备笔记

keepalived+nginx双机热备笔记

2016年11月13日

keepalived+nginx双机热备笔记
http://imkerwin.com/588.html
os版本:CentOS release 6.8 (Final)

内核:2.6.32-642.1.1.el6.x86_64

keepalived版本:keepalived-1.2.22

keepalive安装:(当然为了省事也可以直接 yum install keepalived)

1.安装前先解决依赖问题。
yum -y install gcc gcc+ gcc-c++
yum install popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel

2.源码包安装。去官网把keepalived-1.2.22.tar下载到本地,解压,进入目录,./configure,make,make install

3.拷贝文件。(因个人安装目录会有区别,请留意绝对路径,和你本地保持一致)
cp /usr/local/sbin/keepalived /usr/sbin/
cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

4.启动&停止。
service keepalived start/stop /etc/init.d/keepalived start/stop

5.配置文件keepalived.conf说(理论上是指定/etc/keepalived/keepalived.conf这个,因为我启动的时候查看日志说启动这个)

=======================================================================

配置文件:

[[email protected] ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_DEVEL
}
#监测nginx进程状态,每2秒执行一次
vrrp_script chk_nginx {
script “/data/scripts/chk_nginx.sh” #检测脚本路径
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER #从服务器为BACKUP
interface eth0 #绑定vip的网卡
virtual_router_id 51
priority 100 #从服务器要低于100
advert_int 1
mcast_src_ip XXXX.XXXX.XXXX.XXXX #MASTER服务器IP,从服务器写从服务器的IP
authentication {
auth_type PASS
auth_pass 111111
}
track_script {
chk_nginx #监测nginx进程状态
}
virtual_ipaddress {
XXXX.XXXX.XXXX.XXXX #虚拟IP 也就是vip
}
}

上面的配置适用于物理机,但是一般的云主机,对方会在路由上限制arp协议广播的那就需要改一下配置了,将mcast_src_ip XXXX.XXXX.XXXX.XXXX这段修改成下面(阿里云,金山云就需要如下配置)

unicast_src_ip XXXX.XXXX.XXXX.XXXX##(本地IP地址)

unicast_peer {

XXX.XXX.XXX.XXX##(对端IP地址)此地址一定不能忘记

}

====================================================================

检测脚本:chk_nginx.sh

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/data/nginx/sbin/nginx
sleep 3
if [ `ps -C nginx –no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi

重点配置的地方已经加了#号并且说明,主机和备机的配置文件差别也就服务器IP和priority的值不同,其他都一样,因此就不列出来了,另外还可以加上smtp的相关参数用于报警,这个我认为没有必要,因为我本地有zabbix。

6.keepalived日志 (/var/log/messages)。

7.测试成败,在主机杀掉keepalived进程,虚拟ip会自动漂移到备机。

8.遇到的问题,主和备都出现了绑定vip的情况,可以适用tcpdump vrrp命令看看是否有数据包进来,确定是否防火墙问题,主备之间vrrp包能否正常通讯,各自判定各自服务器已挂导致。解决方法,主备之间互相放行varrp iptables -A INPUT -i eth0 -p vrrp -s 主/备 -j ACCEPT

keepalived可以服务后,就剩下nginx的配置了,nginx的配置这里不多说了。

本文的评论功能被关闭了.