簡述:利用(LVS+Piranha)基于完整開源軟體的架構可以提供一個簡單的負載均衡及高可用的服務架構。LVS 叢集采用 IP 負載均衡技術和基于内容請求分發技術。排程器具有很好的吞吐率(在DR模式下),将請求均衡地轉移到不同的伺服器上執行,且排程器自動屏蔽掉伺服器的故 障,進而将一組伺服器構成一個高性能的、高可用的虛拟伺服器。
<a target="_blank" href="http://blog.51cto.com/attachment/201110/074125462.jpg"></a>
環境:CentOS 5.5 x64
lb01: 192.168.0.111
lb02: 192.168.0.112
VIP: 192.168.0.115
yum -y install piranha ipvsadm
piranha-passwd
/etc/init.d/piranha-gui start
通過浏覽器通路http://192.168.0.111:3636,單擊”Login”,使用使用者名piranha及剛剛設定的密碼進行登入
注:在此界面下可以圖形化配置,也可不啟用此WEB界面,直接編輯配置檔案來配置
vi /etc/sysconfig/ha/lvs.cf
serial_no = 41
#primary_private = 10.0.0.1
service = lvs
backup_active = 1
backup = 192.168.0.112
#backup_private = 10.0.0.2
heartbeat = 1
heartbeat_port = 539
keepalive = 6
deadtime = 18
network = direct
debug_level = NONE
monitor_links = 1
syncdaemon = 1
virtual web_vip {
active = 1
address = 192.168.0.115 eth0:1
vip_nmask = 255.255.255.255
sorry_server = 127.0.0.1
port = 80
pmask = 255.255.255.255
use_regex = 0
load_monitor = none
scheduler = rr
protocol = tcp
timeout = 6
reentry = 15
quiesce_server = 0
server web01 {
address = 192.168.0.113
weight = 1
}
server web02 {
address = 192.168.0.114
#開啟路由轉發功能
sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#' /etc/sysctl.conf
sysctl -p
#啟動piranha
/etc/init.d/pulse start
登入WEB01、WEB02
WEB環境部署略
RealServer VIP啟動腳本:
#!/bin/bash
VIP=192.168.0.115
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of REALServer"
for ((i=0; i&lt;`echo ${#VIP[*]}`; i++))
do
interface="lo:`echo ${VIP[$i]}|awk -F . '{print $4}'`"
/sbin/ifconfig $interface ${VIP[$i]} broadcast ${VIP[$i]} netmask 255.255.255.255 up
done
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
;;
stop)
/sbin/ifconfig lo:110 down
echo "close LVS Directorserver"
#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
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
chmod 700 /root/scripts/lvs_sh
#啟動VIP
/root/scripts/lvs.sh start
在lb01上檢視:
[root@lb01 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-&gt; RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.115:80 rr
-&gt; 192.168.0.114:80 Route 1 0 0
-&gt; 192.168.0.113:80 Route 1 2 0
到此Piranha負載均衡部署完畢,做測試即可!
PS:以上隻是一個簡單的部署,目的是為了與大家分享此負載均衡方法與思路!!!
———————————————–
serial_no = 41 #序号
primary = 192.168.0.112 #主LVS的公網IP
#primary_private = 10.0.0.1 #内部ip位址,用于心跳檢測
backup_active = 1 #是否有備份
backup = 192.168.1.211 #備份LVS的公網IP
#backup_private = 10.0.0.2
heartbeat = 1 #是否開啟心跳
heartbeat_port = 649 #心跳的UDP端口
keepalive = 6 #心跳間隔(秒)
deadtime = 18 #如果主 LVS 節點在deadtime(秒)後沒有答複,那麼備份 LVS 路由器節點就會發起失效轉移。
network = direct #LVS類型(direct,tunnel,nat),此處用direct類型
debug_level = NONE #debug資訊級别
monitor_links = 1 #是否開啟realserver的監視功能,和後面的scheduler(排程算法)以及load_monitor相關
syncdaemon = 1
virtual web_vip { #虛拟服務的名稱,可自定義. 可定義多個virtual lvs服務
active = 1 #是否激活
address = 192.168.0.115 eth0:1 #虛拟服務所綁定的ip(vip)以及裝置名
sorry_server = 127.0.0.1 #當rs全部失效時通路本機
vip_nmask = 255.255.255.255 #vip相對應的掩碼
port = 80 #虛拟服務的端口
persistent = 30 #使用持久穩固的服務時間
pmask = 255.255.255.255 #如果使用持久會話,設定子網路遮罩
use_regex = 0 #expect中是否使用正規表達式
load_monitor = none #LVS 路由器能夠使用 rup 或 ruptime 來監視各個真正伺服器的載量。
scheduler = rr #LVS排程算法
protocol = tcp #虛拟服務使用的協定類型
timeout = 6 #realserver失效後從lvs路由條目中移除realserver所必須經過的時間(秒)
reentry = 15 #移除以後的realserver重新加入lvs路由條目所必須經過的時間(秒)
quiesce_server = 0
server web01 { #realsever服務名稱,可自定義,在這裡我使用主機名
address = 192.168.0.113 #realserver的ip位址
active = 1 #是否激活
port = 80 #rs端口
weight = 1 #權重
}
server web02 {
address = 192.168.0.114
active = 1
port = 80
weight = 1
轉載請注明: 轉載自http://www.elain.org
本文轉自 elain2012 51CTO部落格,原文連結:http://blog.51cto.com/elain/701819