簡述:利用(LVS+Piranha)基於完整開源軟件的架構可以提供一個簡單的負載均衡及高可用的服務架構。LVS 集羣採用 IP 負載均衡技術和基於內容請求分發技術。調度器具有很好的吞吐率(在DR模式下),將請求均衡地轉移到不同的服務器上執行,且調度器自動屏蔽掉服務器的故 障,從而將一組服務器構成一個高性能的、高可用的虛擬服務器。
環境:CentOS 5.5 x64
lb01: 192.168.0.111
lb02: 192.168.0.112
VIP: 192.168.0.115
web01: 192.168.0.114
web02: 192.168.0.115
安裝piranha:
- yum -y install piranha ipvsadm
#通過piranha-passwd設置Piranha的管理員密碼
- piranha-passwd
#啓動piranha的WEB管理界面(可選)
- /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
- active = 1
- port = 80
- weight = 1
- }
- server web02 {
- address = 192.168.0.114
- active = 1
- port = 80
- weight = 1
- }
- }
#開啓路由轉發功能
- sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#' /etc/sysctl.conf
- sysctl -p
以上步驟在lb01,lb02上操作,lvs.cf 直接用scp 即可,無需改動,主備一致。
#啓動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<`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" >/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
- ;;
- stop)
- /sbin/ifconfig lo:110 down
- echo "close LVS Directorserver"
- #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 "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
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 192.168.0.115:80 rr
- -> 192.168.0.114:80 Route 1 0 0
- -> 192.168.0.113:80 Route 1 2 0
到此Piranha負載均衡部署完畢,做測試即可!
PS:以上只是一個簡單的部署,目的是爲了與大家分享此負載均衡方法與思路!!!
附錄:lvs.cf配置詳解
———————————————–
serial_no = 41 #序號
primary = 192.168.0.112 #主LVS的公網IP
#primary_private = 10.0.0.1 #內部ip地址,用於心跳檢測
service = elain_lvs #服務名稱,可以自己定義
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
本文鏈接地址:用Piranha來實現WEB的負載均衡