Keepalived 的作用是检测后端服务器的状态,如果有一台服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的服务器从系统中剔除。当服务器工作正常后 Keepalived 自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
实验环境
# 内核版本
# cat /proc/version
Linux version 3.0.76-0.11-default (geeko@buildhost) (gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux) ) #1 SMP Fri Jun 14 08:21:43 UTC 2013 (ccab990)
# uname -a
Linux ntp1 3.0.76-0.11-default #1 SMP Fri Jun 14 08:21:43 UTC 2013 (ccab990) x86_64 x86_64 x86_64 GNU/Linux
# 发行版本
# lsb_release -a
LSB Version: core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64:desktop-4.0-amd64:desktop-4.0-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0-amd64:graphics-4.0-noarch
Distributor ID: SUSE LINUX
Description: SUSE Linux Enterprise Server 11 (x86_64)
Release: 11
Codename: n/a
# 补丁版本
# cat /etc/SuSE-release
SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 3
#
实验过程 【keepalived安装说明】 两个节点的优先级priority依次为 100、90; router_id 一次为 LVS_1 LVS_2 ; virtual_router_id 100; state 中,10.211.57.119 为 MASTER ,10.211.57.120 节点为 BACKUP; 网卡均为 eth0; 虚拟IP为 10.211.57.79/24; 若 MASTER 节点 ntp 服务down,脚本检查到,会用优先级100减去30,最后得到的优先级为70,这样VIP就会漂移到 BACKUP 上面去; 当 MASTER 节点 ntp 服务恢复后,VIP就会重新漂移到 MASTER 上面去。 【上传keepalived源码包及依赖包】 # cd /usr/local/src/ # tar xf ntp-keepalived.tar.gz # cd ntp-keepalived/ # ls -1 keepalived-2.0.19 keepalived-2.0.19.tar.gz keyutils-devel-1.2-107.3.x86_64.rpm krb5-devel-1.6.3-133.2.x86_64.rpm libcom_err-devel-1.41.9-2.2.x86_64.rpm libffi6-3.2.1-5.1.x86_64.rpm libopenssl-devel-1.0.2n-2.58.1.x86_64.rpm libopenssl1_0_0-1.0.2n-2.58.1.x86_64.rpm libp11-kit0-0.23.2-32.6.x86_64.rpm libtasn1-4.9-56.6.x86_64.rpm openssl-1.0.2n-2.58.1.x86_64.rpm p11-kit-tools-0.23.2-32.6.x86_64.rpm zlib-1.2.3-143.1.x86_64.rpm zlib-devel-1.2.3-143.1.x86_64.rpm # 【安装依赖包】 # rpm -vih --replacefiles --force --nodeps ./*.rpm 【编译keepalived】 # cd keepalived-2.0.19/ # ls -1 /usr/src/ linux linux-3.0.76-0.11 linux-3.0.76-0.11-obj linux-obj packages # ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/linux-3.0.76-0.11 # make # make install 【准备健康检查脚本】 【各个ntp服务端节点均配置】 # cd /usr/local/keepalived/ # vim /usr/local/keepalived/check_ntp.sh #!/bin/bash count=`netstat -apn | grep 0.0.0.0:123 | wc -l` if [ $count -gt 0 ]; then exit 0 else exit 1 fi # chmod +x /usr/local/keepalived/check_ntp.sh 【准备配置文件】 【MASTER 节点】 # cat > /usr/local/keepalived/etc/keepalived/keepalived.conf << EOF ! Configuration File for keepalived global_defs { router_id LVS_1 } vrrp_script checkhaproxy { script "/usr/local/keepalived/check_ntp.sh" interval 1 weight -30 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 100 priority 100 advert_int 1 authentication { auth_type PASS auth_pass abc666666 } virtual_ipaddress { 10.211.57.79/24 } track_script { checkhaproxy } } EOF # 【BACKUP 节点】 # cat > /usr/local/keepalived/etc/keepalived/keepalived.conf << EOF ! Configuration File for keepalived global_defs { router_id LVS_2 } vrrp_script checkhaproxy { script "/usr/local/keepalived/check_ntp.sh" interval 1 weight -30 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 100 priority 90 advert_int 1 authentication { auth_type PASS auth_pass abc666666 } virtual_ipaddress { 10.211.57.79/24 } track_script { checkhaproxy } } EOF # 【启动keepalived】 # /usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf 【查看ntp和keepalived服务状态】 # netstat -apn | grep 0.0.0.0:123 udp 0 0 0.0.0.0:123 0.0.0.0:* 10739/ntpd # netstat -apn | grep 0.0.0.0:112 raw 0 0 0.0.0.0:112 0.0.0.0:* 7 10756/keepalived raw 0 0 0.0.0.0:112 0.0.0.0:* 7 10756/keepalived # 【备注:keepalived配置文件有变动(包含检测脚本),需先"kill -9 PID"关闭keepalived服务,再启动服务。】