實驗介紹:
系統Centos6.4
keepalived的主配置檔案 /etc/keepalived/keepalived.conf
keepalived的服務腳本 /etc/rc.d/init.d/keepalived
172.16.4.1 cont.magedu.com cont (作為控制節點,控制no1、no2)
Master 172.16.4.7 no1.magedu.com no1
Backup 172.16.4.11 no2.magedu.com no2
Real server1 172.16.4.5 no3.magedu.com no3
Real server2 172.16.4.15 no4.magedu.com no4
Vip: 172.16.4.55
Cont節點
#ssh-keygen -t rsa -P ‘’
No1、no2
# ansible all -a 'date' #檢視時間是否同步
# ansible all -m yum -a 'name=keepalived state=present'
一 、主從兩個節點安裝keepalived ipvsadm
這裡可以根據自己需要使用源碼編譯安裝,或者安裝rpm格式包,這裡我們使用系統自帶的安裝包
#yum -y install keepalived ipvsadm
二、編輯主配置檔案
#vim /etc/keepalived/keepalived.conf
global_defs { 全局配置段
notification_email {
root@localhost 郵件接收方
}
notification_email_from keepadmin@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 100 初始優先級
advert_int 1 初始化通告
authentication { 認證機制
auth_type PASS 明文認證
auth_pass 1111 認證密碼
virtual_ipaddress { 定義虛拟ip位址
172.16.4.55
virtual_server 172.16.4.55 80 { #定義虛拟伺服器,需指定虛拟ip和端口
delay_loop 6 #設定健康檢查時間,機關為秒
lb_algo wrr #設定負載排程算法,此處為權重輪叫算法
lb_kind DR #設定LVS實作負載均衡的模式
nat_mask 255.255.0.0 #設定子網路遮罩
protocol TCP #設定轉發協定的類型
real_server 172.16.4.5 80 { #定義realserver,需指定ip和端口
weight 1 #指定權重
HTTP_GET { #設定檢測後端realserver的方式為擷取http協定封包
url {
path /
status_code 200 #狀态碼為200則證明後端伺服器是線上的
connect_timeout 3 #設定逾時時間
nb_get_retry 3 #設定逾時時候重試幾次
delay_before_retry 3 #在重試的時候的時間間隔
real_server 172.16.4.15 80 {
weight 1
HTTP_GET {
status_code 200
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
可以将配置檔案發送給backup節點,然後修改下面的選項:
state BACKUP
priority 99
#man keepalived.conf 檢視各個配置的相關資訊說明
#tail -f /var/log/messages 檢視日志資訊
兩個節點都要重新開機服務,我們可以在控制節點執行
#ansible all -m shell -a ‘service keepalived restart’
#ip addr show 檢視定義的虛拟ip
<a href="http://blog.51cto.com/attachment/201309/222918348.png" target="_blank"></a>
将主節點停止服務,資源會自動轉移到backup節點,當主節點重新上線後,資源會再轉移到主節點上,可以檢視日志資訊判斷目前資源所在的節點
三、在兩台Realserve上安裝并啟動httpd服務
1、這裡我們就不示範了,參考http://qidian510.blog.51cto.com/7319882/1282663,我們安裝系統自帶的服務
#yum -y install httpd
#chkconfig httpd on
為了友善我們的測試,這裡為它們提供不同的測試網頁
# vim /var/www/html/index.html
<h1>web1.test.com</h1>
#service httpd start
2、為兩台Realserver提供Sysv格式的腳本來自動修改核心參數與虛拟IP并運作腳本
# mkdir src
# cd src/
# vim realserver.sh
#!/bin/bash
#
# Script to start LVS DR real server.
# description: LVS DR real server
. /etc/rc.d/init.d/functions
VIP=172.16.455 #修改你的VIP
host=`/bin/hostname`
case "$1" in
start)
# Start LVS-DR real server on this machine.
/sbin/ifconfig lo down
/sbin/ifconfig lo up
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
;;
stop)
# Stop LVS-DR real server loopback device(s).
/sbin/ifconfig lo:0 down
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0 | grep $VIP`
isrothere=`netstat -rn | grep "lo:0" | grep $VIP`
if [ ! "$islothere" -o ! "isrothere" ];then
# Either the route or the lo:0 device
# not found.
echo "LVS-DR real server Stopped."
else
echo "LVS-DR real server Running."
fi
*)
# Invalid entry.
echo "$0: Usage: $0 {start|status|stop}"
exit 1
esac
#chmod +x realserver.sh
# ./realserver.sh start
3、檢視相關配置
# cat /proc/sys/net/ipv4/conf/lo/arp_ignore
1
# cat /proc/sys/net/ipv4/conf/lo/arp_announce
2
# cat /proc/sys/net/ipv4/conf/all/arp_ignore
# cat /proc/sys/net/ipv4/conf/all/arp_announce
四、測試驗證
1、主節點檢視規則
<a href="http://blog.51cto.com/attachment/201309/223000212.png" target="_blank"></a>
2、Master伺服器損壞後,虛拟IP位址與LVS規則會配置到backup上
<a href="http://blog.51cto.com/attachment/201309/223040726.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201309/223040551.png" target="_blank"></a>
3、假如Master伺服器修複好已重新上線,則虛拟IP位址與LVS規則會重新配置到Master伺服器上而在Backup伺服器上删除
<a href="http://blog.51cto.com/attachment/201309/223108532.png" target="_blank"></a>
4、在浏覽器測試
通路172.16.4.55即可,當我們重新整理網頁時,會看到在兩個real server之間進行切換,當節點不能服務時,我們通路網頁仍然不受影響,這樣驗證了我們的高可用配置實作了。
本文轉自 宋鵬超 51CTO部落格,原文連結:http://blog.51cto.com/qidian510/1303233,如需轉載請自行聯系原作者