介紹 LVS LVS是Linux Virtual Server的簡寫,意即 ……"/> 介紹 LVS LVS是Linux Virtual Server的簡寫,意即 ……"/>
歡迎您光臨本站 註冊首頁

在Linux下使用LVS keepalived搭建高可用集群

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

Linux下使用LVS keepalived搭建高可用集群

mso-fareast-font-family:宋體;mso-fareast-theme-font:major-fareast;mso-hansi-font-family: Cambria;mso-hansi-theme-font:major-latin;font-weight:normal">介紹

LVS

LVSLinux Virtual Server的簡寫,意即

Linux虛擬伺服器,是一個虛擬的伺服器集群系統.本項目在19985月由章文嵩博士成立,是中國國內最早出現的自由軟體項目之一.目前有三種IP負載均衡技術(VS/NATVS/TUNVS/DR);


十種調度演算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq).

LVS中文支持站點:http://zh.linuxvirtualserver.org/

Keepalived

Keepalived在這裡主要用作RealServer的健康狀態檢查以及LoadBalance主機和

BackUP主機之間failover的實現.

Keepalived官方站點:http://www.keepalived.org/

宋體;mso-ascii-font-family:Cambria;mso-ascii-theme-font:major-latin;mso-fareast-font-family: 宋體;mso-fareast-theme-font:major-fareast;mso-hansi-font-family:Cambria; mso-hansi-theme-font:major-latin;font-weight:normal">實驗所用軟體環境及拓撲圖

實驗軟體環境:

Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋體;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">系統

Centos 5.6 x64

Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋體;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">軟體LVS,Keepalived,Apache

Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋體;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">拓撲圖如下:

id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">

mso-fareast-font-family:宋體;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: Calibri;mso-hansi-theme-font:minor-latin">配置信息

VIP(虛擬IP) 192.168.1.35

DIP1(主調度器)192.168.1.31

DIP2(備份調度)192.1681.32

RIP1(WEB) 192.168.1.33

RIP2(WEB)

192.168.1.34

192.168.1.1

三.開始安裝LVS Keepalived

1.下載相關軟體包

mkdir /soft //建立一個存放軟體的目錄

cd /soft

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz

2.安裝

LVSKeepalived

lsmod | grep ip_vs //查看內核中是否已經載入ip_vs模塊

uname -r //查看當前內核版本號

2.6.18-238.el5 //當前內核版本號

ln -s /usr/src/kernels/2.6.18-238.el5-x86_64/ /usr/src/linux/ //將內核模塊做軟連接至/usr/src/目錄下 並改名為/usr/src/linux/這樣做的好處是,在編譯keepalived的時候可以直接找到內核文件,而不用指定內核路徑,如果不做此項操作,則在編譯時需指定內核路徑

tar xvf

ipvsadm-1.24.tar.gz

cd ipvsadm-1.24

make && make install

find / -name ipvsadm //查看ipvsadm的位置

tar xvf keepalived-1.1.15.tar.gz

cd keepalived-1.1.15

./configure

make && make install

find / -name keepalived //查看keepalived位置

cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
service keepalived start|stop
//做成系統啟動服務方便管理

.

3. 配置LVS實現負載均衡

aLVS-DR

,配置LVS腳本實現負載均衡 ,此腳本只為測試LVS是否成功,後面主備切換使用keepalived,此腳本不用.



vi /usr/local/sbin/lvs-dr.sh

#!/bin/bash
# description: start LVS of DirectorServer
#Written by :Supernic

#www.supernic.cn
GW=192.168.2.253

# website director vip.
WEB_VIP=192.168.1.35
WEB_RIP1=192.168.1.33
WEB_RIP2=192.168.1.34
. /etc/rc.d/init.d/functions

logger $0 called with $1

case "$1" in

start)
# Clear all iptables rules.
/sbin/iptables -F
# Reset iptables counters.
/sbin/iptables -Z
# Clear all ipvsadm rules/services.
/sbin/ipvsadm -C

#set lvs vip for dr
/sbin/ipvsadm --set 30 5 60
/sbin/ifconfig eth0:0 $WEB_VIP broadcast $WEB_VIP netmask 255.255.255.255 up
/sbin/route add -host $WEB_VIP dev eth0:0
/sbin/ipvsadm -A -t $WEB_VIP:80 -s wrr -p 3
/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP1:80 -g -w 1
/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP2:80 -g -w 1
touch /var/lock/subsys/ipvsadm >/dev/null 2>&1

# set Arp
/sbin/arping -I eth0 -c 5 -s $WEB_VIP $GW >/dev/null 2>&1
;;
stop)
/sbin/ipvsadm -C
/sbin/ipvsadm -Z
ifconfig eth0:0 down
route del $WEB_VIP >/dev/null 2>&1
rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
/sbin/arping -I eth0 -c 5 -s $WEB_VIP $GW
echo "ipvsadm stoped"
;;

status)

if [ ! -e /var/lock/subsys/ipvsadm ];then
echo "ipvsadm is stoped"
exit 1
else
ipvsadm -ln
echo "..........ipvsadm is OK."
fi
;;

*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac

exit 0

b)配置RealServer腳本

#!/bin/bash
# Written by Supernic
# description: Config realserver lo and apply noarp
WEB_VIP=192.168.1.35

. /etc/rc.d/init.d/functions

case "$1" in
start)
ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
/sbin/route add -host $WEB_VIP dev lo:0
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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"

;;
stop)
ifconfig lo:0 down
route del $WEB_VIP >/dev/null 2>&1
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
echo "RealServer Stoped"
;;
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0 | grep $WEB_VIP`
isrothere=`netstat -rn | grep "lo:0" | grep $web_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 Running."
fi
;;
*)
# Invalid entry.
echo "$0: Usage: $0 {start|status|stop}"
exit 1
;;
esac
exit 0

或者採用secondary ip address方式配置
vi /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

sysctl -p

ip addr add 192.168.1.35/32 dev lo

ip add list

\\查看是否綁定

c啟動lvs-dr腳本和RealServer腳本,在

DR上可以查看當前狀態,(lvs-dr腳本只在測試LVS時使用,後面的調度只用到keepalived就行了,不用此腳本)

watch ipsadm –ln

Cambria;mso-ascii-theme-font:major-latin;mso-fareast-font-family:宋體;mso-fareast-theme-font: major-fareast;mso-hansi-font-family:Cambria;mso-hansi-theme-font:major-latin">利用Keepalived實現負載均衡和高可用性

1.在主調度器上配置Keepalived

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">1.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">2.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">3.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">4.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">5.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">6.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">7.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">8.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">9.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">10.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">11.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">12.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">13.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">14.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">15.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">16. mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋體;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">備份伺服器上將MASTER改為BACKUP

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">17.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">18.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">19. mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋體;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">備份服務上將100改為99

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">20.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">21.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">22.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">23.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">24.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">25.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">26.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">27. mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋體;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">如果有多個VIP,繼續換行填寫.)

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">28.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">29.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">30.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">31.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">32. mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family: 宋體;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin">每隔10秒查詢realserver狀態)

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">33. 宋體;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family: 宋體;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin">演算法)

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">34.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">35. mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋體;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">同一IP的連接60秒內被分配到同一台realserver)

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">36. Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋體; mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin">用TCP協議檢查realserver狀態)

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">37.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">38.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">39. font-family:宋體;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋體;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: Calibri;mso-hansi-theme-font:minor-latin">權重)

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">40.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">41. Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋體; mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin">秒無響應超時)

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">42.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">43.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">44.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">45.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">46.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">47.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">48.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">49.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">50.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">51.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">52.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">53.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">54.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">55.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">56.

minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin">57.

.

2.backup配置同上,只需將statepriority修改即可.

3.停掉lvs-dr腳本,啟動keepalived服務

/usr/local/sbin/lvs-dr.sh stop 停止lvs-dr腳本
/etc/init.d/keepalived start 啟動keepalived 服務,keepalived就能利用keepalived.conf

配置文件,實現負載均衡和高可用.
整個LVS負均衡HA方案,由keepalived.conf一個文件即可搞定!

chkcofig keepalived on //keepalvied開機自啟動

ipvsadm –ln //查看

LVS服務是否正常

[root@localhost ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.1.35:80 wrr persistent 60

-> 192.168.1.33:80 Route 3 0 0

-> 192.168.1.34:80 Route 3 0 0

[root@localhost ~]#

4.tail -f /var/log/message //監聽日誌,查看狀態,測試LVS負載均衡及高可用性是否有效.

宋體;mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast; mso-bidi-font-family:宋體;mso-bidi-theme-font:minor-fareast">5. 宋體;mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast">停Master伺服器的keepalived服務,查看BAKCUP伺服器是否能正常接管服務.

本文出自 「超夢的技術博客」 博客,請務必保留此出處http://superdream.blog.51cto.com/2011872/789194


[火星人 ] 在Linux下使用LVS keepalived搭建高可用集群已經有735次圍觀

http://coctec.com/docs/linux/show-post-47294.html