赞
踩
将最近调试的keepalived做个简单的总结,部分配置可能
由于个人理解的关系,有些不同。希望大家能够指正!
Ubuntu 测试时,编译如下:
官网: http://www.keepalived.org/download.html
cd /usr/local/src
wget http://www.keepalived.org/software/keepalived-1.2.6.tar.gz
tar zxf keepalived-1.2.6.tar.gz
cd keepalived-1.2.6
./configure --prefix=/usr/local/keepalived
make
make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir -p /etc/keepalived/
emacs /etc/keepalived/keepalived.conf
网络拓扑图如下:
1)主路由:
由于我没有用到邮件通知,所以没有配置。
root@R1:/# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
! notification_email {
! user@example.com
! }
! notification_email_from mail@example.org
! smtp_server 192.168.200.1
! smtp_connect_timeout 30
router_id NodeA
}
# 本来网上说可以增加脚本配置,但是我测试了不起作用。
#vrrp_script check_local {
# script "/etc/keepalived/check_local.sh"
# interval 5
#}
vrrp_instance VI_1 {
state MASTER #指定A节点为主节点 备用节点上设置为BACKUP即可
interface br-lan #绑定虚拟IP的网络接口
virtual_router_id 231 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
priority 105 #主节点的优先级(1-254之间),备用节点必须比主节点优先级低
advert_int 1 #组播信息发送间隔,两个节点设置必须一样
# nopreempt
authentication { #设置验证信息,两个节点必须一致
auth_type PASS #主从服务器验证方式
auth_pass 123456
}
virtual_ipaddress { #指定虚拟IP, 两个节点设置必须一样
10.237.46.233 #虚拟IP
}
# 触发脚本配置,配置未生效,故自己增加了另外的脚本
# track_script {
# check_local
# }
}
root@R1:/#
2) 备用路由
配置基本和主路由相同。
root@R1:/# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
! notification_email {
! user@example.com
! }
! notification_email_from mail@example.org
! smtp_server 192.168.200.1
! smtp_connect_timeout 30
router_id NodeA
}
# 本来网上说可以增加脚本配置,但是我测试了不起作用。
#vrrp_script check_local {
# script "/etc/keepalived/check_local.sh"
# interval 5
#}
vrrp_instance VI_1 {
state BACKUP #标示状态为BACKUP
interface br-lan
virtual_router_id 232
priority 51 #MASTER权重要高于BACKUP
advert_int 1
# nopreempt
authentication {
auth_type PASS #主从服务器验证方式
auth_pass 123456
}
virtual_ipaddress {
10.237.46.233 #虚拟IP
}
# 触发脚本配置,配置未生效,故自己增加了另外的脚本
# track_script {
# check_local
# }
}
root@R1:/#
3) 基本配置参数的说明
virtual_router_id
网上其他的资料要求2个主备路由器配置的id相同(“VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组”),但是配置后测试发现,有一台的keepalived启动失败(使用“ip a show |grep -w inet”命令即可查看)
interface
原来配置此接口时不太理解,参考网上配置,都为成功,但是修改为br-lan后,成功了。个人理解为:按照我的应用场景,应该是向下的网关。
4) 其他参数:
global_defs: 全局配置标识,表面下面的区域{}是全局配置
- notification_email:
里面填邮箱地址,如果keepalived在发生诸如切换操作时会的发邮件到配置上的邮箱,邮件地址可以多个,每行一个
- notification_email_from:表示发送通知邮件时邮件源地址是谁
- smtp_server:表示发送email时使用的smtp服务器地址,可以填127.0.0.1
- smtp_connect_timeout:连接smtp超时时间
- vrrp_instance:各服务器上实例配置域,这里按本服务器的具体情况填值
- state:本实例启动状态,MASTER/SLAVE,不管填MASTER/SLAVE,最终还是要看本机器的权重。
- interface:实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的,这里按本机情况而定
- virtual_router_id:这里设置VRID,如果两台机器是同一个备份组,设置一样
- priority:设置本节点的优先级,优先级高的为master,不能超过255
- advert_int:组播信息发送间隔,同一个备份组两个机器设置必须一样,默认是1S
- authentication:验证域,同组的机器auth_type(验证类型)和auth_pass(验证密码)必须一样
- virtual_ipaddress:VIP,为master机器设置的虚拟地址,和实例绑定的网卡(interface)设置到一个网段
4) 自定义的配置脚本
刚开始配置完成后,如果主路由故障,可以自动切换到备用路由。但是,主路由恢复后,不能主动切换回主路由。如做了以下简单的脚本。
有些帖子中提到,nopreempt此参数可以起到自动切换的功能,但是我没有测试成功。
还有在配置文件中增加触发脚本,我也没有测试成功。
基于此,以下脚本使用watch -n 2来执行,即2s执行一次。
root@R1:/# cat keepalived_monitor.sh
#!/bin/sh
IP=114.114.114.114
FAIL_COUNT=0
while [[ $FAIL_COUNT -le 2 ]]; do
#statements
ping -c 2 -W 1 $IP > /dev/null 2>&1
if [ "$?" == "0" ]; then
echo "Network connect!"
keepalived_status=`ps |grep keepalived |grep -v grep`
if [[ $? == "0" ]]; then
#
echo "keepalived is running!"
break
else
#
echo "keepalived is not running, it will be started."
/etc/init.d/keepalived start
break
fi
else
echo "Network disconnect!"
let FAIL_COUNT++
echo $FAIL_COUNT
if [[ $FAIL_COUNT == "3" ]]; then
# stop the keepalived services.
/etc/init.d/keepalived stop
break
fi
fi
done
root@R1:/#
此次调试总结,到此为止。希望朋友们指正……有好多参数的具体含义也没有完全理解,应该有更加晚上的配置和脚本,希望后期有时间继续研究。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。