天天看點

用Piranha來實作WEB的負載均衡

簡述:利用(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&amp;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" &amp;gt;/proc/sys/net/ipv4/conf/lo/arp_ignore 

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

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

echo "2" &amp;gt;/proc/sys/net/ipv4/conf/all/arp_announce 

;; 

stop) 

/sbin/ifconfig lo:110 down 

echo "close LVS Directorserver" 

#echo "0" &amp;gt;/proc/sys/net/ipv4/conf/lo/arp_ignore 

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

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

#echo "0" &amp;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 

-&amp;gt; RemoteAddress:Port           Forward Weight ActiveConn InActConn 

TCP  192.168.0.115:80 rr 

-&amp;gt; 192.168.0.114:80             Route   1      0          0 

-&amp;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

繼續閱讀