Keepalived分享
===== keepalived主要功能:
===== 实现ip地址飘移。比如有A和B两个节点,默认前端应用连接的是A节点的IP地址(通常也是vip),A节点出现故障的话,则将A节点的IP地址飘移到B节点,前端应用的请求就会由B节点来响应.
我的ip主为192.168.27.100, 备ip为192.168.27.101 虚拟ip为192.168.27.220(配置好keepalived以后会自动产生,之前我在这产生误区)
下面先安装keepalived
wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
tar xvf keepalived-1.1.17.tar.gz
cd keepalived-1.1.17
./configure --with-kernel-dir=/usr/src/kernels/2.6.18-417.el5-i686/ --prefix=/usr/local/keepalive/
“–with-kernel-dir”这是个很重要的参数,但这个参数并不是要把Keepalived编译进内核, 而是指定使用内核源码里面的头文件,就是include目录。需要安装kernel-headers和kernel-devel包,使用yum安装即可
make
make install
修改配置文件
注意keepalived的配置文件格式要求比较严格,如果是复制粘贴进来的话,可能有问题,我遇到下面一个坑: track_script{ 这里的{前面少个空格,导致这个段失效。
check_run
}
vim /usr/local/keepalive/etc/keepalived/keepalived.conf
192.168.27.100上的keepalived的配置文件如下
global_defs {
notification_email {
#root@localhost #设置报警邮件地址,可以设置多个,每行一个。注意,如果要开启邮件报警,需要开启本机的sendmail服务。
}
#notification_email_from root@localhost #设置邮件的发送地址
#smtp_server localhost #设置smtp server地址,该地址必须是可到达的,否则会出错
#smtp_connect_timeout 30 #设置连接smtp服务器超时时间
router_id LVS_DEVEL #运行Keepalived服务器的一个标识。发邮件时显示在邮件标题中的信息
}
vrrp_script check_run {
script "/root/monitor_nginx.sh"
interval 1
weight -10
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER表示此主机是主用服务器,BACKUP表示是备用服务器
interface eth0 #指定HA监测网络的接口
virtual_router_id 51 #虚拟路由标识,这个标识是一个数字,并且同一个vrrp实例使用唯一的标识,即同一个
priority 100 #定义优先级,数字越大,优先级越高,在一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。
advert_int 1 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication {
auth_type PASS #设置验证类型,主要有PASS和AH两种
auth_pass 1111 #设置验证密码,在一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
}
virtual_ipaddress {
192.168.27.220 #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
}
track_script {
check_run
}
track_interface {
eth0
}
}
192.168.27.101上的keepalived的配置文件如下
global_defs {
notification_email {
#root@localhost
}
#notification_email_from root@localhost
#smtp_server localhost
#smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script check_run {
script "/root/monitor_nginx.sh"
interval 1
weight 1
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.27.220
}
track_script {
check_run
}
track_interface
eth0
}
}
检测文件monitor_nginx.sh
- !/bin/bash
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
then
echo "ok"
exit 1
fi
exit 0
以上配置完以后,配置文件就已完成,就可以启动keepalived了 /usr/local/keepalive/sbin/keepalived -f /usr/local/keepalive/etc/keepalived/keepalived.conf -D 这样就可以开始测试了 本地配置好192.168.27.220 www.test.com 这样会首先访问到192.168.27.100.若将100上的nginx关掉,将会自动切换到101上面,此时将100恢复正常,将会自动切换到100上
keepalived 中master和backup可以参考 http://ixdba.blog.51cto.com/2895551/1544858