一、首先要說明兩個概念
1、keepalive的基本工作機制和應用場景
Keepalived是一個專門爲lvs提供高可用功能的機制,它可以實現當有兩個主從lvs,而且主lvs損壞的時候,將其IP地址以及lvs轉移至備份lvs上。IP地址轉移就應用了我們前面說的VRRP協議,lvs轉移可定義其配置文件,動態生成ipvs規則,還能實現健康狀況檢查。
2、VRRP協議
VRRP:Virtual Router Redundancy Protocol,是虛擬路由冗餘協議,通過此協議我們可以把多個路由器做成一個虛擬路由器,從而來保證其中某個路由壞掉的時候不會造成我們內部外出網絡的全部中斷。
實驗目的:實現web高可用的功能。
準備環境:這裏以RHEL5的虛擬機實現,下載軟件包,可以編譯安裝,也可以直接用rpm包安裝,這裏直接下載了rpm包安裝(下載地址 http://www.keepalived.org)
地址規劃:
HA1: 172.16.27.8
HA2: 172.16.27.9
DR1: 172.16.127.8
DR2: 172.16.127.9
VIP: 172.16.27.1
二、配置步驟:
1、配置IP,使其相互間能夠通訊
# setup
# service network restart
# ping 172.16.127.9
2、修改主機名
# hostname node1
# uname -n
# vim /etc/sysconfig/network //使其下次開機也有效
3、配置主機名解析
# vim /etc/hosts
172.16.27.8 node1 node1
172.16.27.9 node2 node2
確保基於主機名可以通訊
# ping node2
4、同步時間
# service ntpd stop
# ntpdate 172.16.0.1 //這裏是我們的時間服務器
# date
【第二個節點和第一個節點的配置基本相同,只需要將IP修改一下即可】
5、配置keepalived
node1:172.16.27.8
# yum -y --nogpgcheck localinstall keepalived-1.2.7-5.el5.i386.rpm
安裝軟件包
# vim /etc/keepalived/keepalived.conf 修改配置文件
global_defs {
notification_email {
root@localhost # 郵件地址
}
notification_email_from root@localhost # 發件人
smtp_server 127.0.0.1 # 郵件服務器地址
smtp_connect_timeout 30 # 連接超時間
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER # 定義初始狀態,這裏是主節點
interface eth0 # 虛擬路由工作的物理接口
virtual_router_id 51 # 組ID
priority 101 # 主節點的優先級
advert_int 1 # 發送通高的時間間隔
authentication {
auth_type PASS # 密碼認證
auth_pass password
}
virtual_ipaddress {
172.16.27.8/16 dev eth0 label eth0:0 # 在別名上配置虛擬地址
}
}
virtual_server 172.16.27.8 80 { # vip地址以及對應的端口
delay_loop 6
lb_algo wlc # 調度算法
lb_kind DR # lvs類型
nat_mask 255.255.0.0 # 網絡掩碼
protocol TCP # tcp協議
real_server 172.16.27.8 80 { #realser的地址
weight 1 # 權重
HTTP_GET { #爲http服務進行健康狀態檢查
url { # 監測http服務的url
path /
status_code 200 # 正確的狀態碼
}
connect_timeout 2 # 連接的超時時長
nb_get_retry 3 # 重試次數
delay_before_retry 1 # 延遲時間
}
}
real_server 172.16.27.9 80 {
weight 1
HTTP_GET{
url {
path /
status_code 200
}
connect_timeout 2
nb_get_retry 3
delay_before_retry 1
}
}
}
[將node1的配置文件複製到node2上]
node2 :172.16.27.9
修改其vrrp狀態爲備份節點BACKUP,以及優先級要低於主節點。(別忘記IP也要修改)
# vim /etc/keepalived/keepalived.conf
在node1和node2上提供腳本
腳本:在/etc/keepalived目錄下提供一個名爲notify.sh腳本
#!/bin/bash
#
ifalias=${2:-eth0:0}
interface=$(echo $ifalias | awk -F: '{print $1}')
vip=$(ip addr show $interface | grep $ifalias | awk '{print $2}')
contact='root@localhost'
workspace=$(dirname $0)
notify() {
subject="$ip change to $1"
body="$ip change to $1 $(date '+%F %H:%M:%S')"
echo $body | mail -s "$1 transition" $contact
}
case "$1" in
master)
notify master
exit 0;;
backup)
notify backup
/etc/rc.d/init.d/httpd restart
exit 0;;
fault)
notify fault
exit 0;;
*)
echo 'Usage: $(basename $0) {master|backup|fault}'
exit 1;;
esac
並執行腳本。
啓動兩個節點的keepalived
安裝ipvsadm和httpd
# yum -y install ipvsadm httpd
# ipvsadm -L -n #查看生成的ipvsadm規則
# service httpd start
到此配置完成,可以通過瀏覽器進行驗證。