天天看點

keepalived實作LVS-DR模型的高可用

實驗介紹:

系統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

&lt;h1&gt;web1.test.com&lt;/h1&gt;

#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 &gt; /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 &gt; /proc/sys/net/ipv4/conf/lo/arp_announce

echo 1 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 &gt; /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 &gt; /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 0 &gt; /proc/sys/net/ipv4/conf/lo/arp_announce

echo 0 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore

echo 0 &gt; /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,如需轉載請自行聯系原作者

繼續閱讀