作者:NetSeek http://www.linuxtone.org
(IT運(yùn)維專家網(wǎng)|集群架構(gòu)|性能調(diào)優(yōu))
歡迎轉(zhuǎn)載,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明.
更新時(shí)間:2009-01-12 實(shí)驗(yàn)平臺(tái) : CentOS release5.2 (Final) 實(shí)驗(yàn)?zāi)繕?biāo) : 快速撐握和理解Piranha方案,并利用15分鐘構(gòu)建WEB高可用負(fù)載均衡解決方案.
結(jié)構(gòu): LVS-ACTIVE:192.168.1.210
LVS-BACKUP: 192.168.1.211
LVS-VIP: 192.168.1.212
Realsever: 192.168.1.204,192.168.1.205
一.Piranha方案基本簡(jiǎn)紹.
1.Piranha方案優(yōu)點(diǎn):
1.1.1配置簡(jiǎn)潔高效:
配置簡(jiǎn)便一個(gè)lvs.conf配置文件即可搞定(類keepalived方案.)
1.1.2WEB配置界面.
WEB配置對(duì)于那些不懂LVS配置的人員來(lái)說(shuō)非常吸引力,你幾乎只要花15分鐘就可以配置好一個(gè)完美的負(fù)載均衡及高可用性方案.
1.1.3完整的功能:
主備LVS (Load Balancer)的Heartbeat和HA (pulse,send_arp)
LoadBalancer和Real Server間進(jìn)程服務(wù)的Heartbeat (nanny)
IPVS功能 (lvsd)
IPVS的管理 (ipvsadm)
2.Piranha方案原理結(jié)構(gòu)描述:
Piranha方案是基于LVS基礎(chǔ)上設(shè)計(jì)的一套負(fù)載均衡高可用解決方案.
LVS運(yùn)行在一對(duì)有相似配置的計(jì)算機(jī)上:
一個(gè)作為活動(dòng)LVS Router(Active LVS Router),
一個(gè)作為備份LVS Router(Backup LVS Router)。
活動(dòng)LVS Router服務(wù)有兩個(gè)角色:
* 均衡負(fù)載到真實(shí)服務(wù)器上。
* 檢查真實(shí)服務(wù)器提供的服務(wù)是否正常。
備份LVS Router用來(lái)監(jiān)控活動(dòng)的LVS Router,以備活動(dòng)的LVS Router失敗時(shí)由備份LVS Router接管。
1.jpg (29.23 KB, 下載次數(shù): 127)
下載附件
2009-01-12 09:31 上傳
Pulse:
Pulse進(jìn)程運(yùn)行在活動(dòng)LVS Router和備份LVS Router上。
在備份LVS Router上,pulse發(fā)送一個(gè)心跳(heartbeat)到活動(dòng)LVS Router的公網(wǎng)接口上以檢查活動(dòng)LVS Router是否正常。
在活動(dòng)LVS Router上,pulse啟動(dòng)lvs進(jìn)程并響應(yīng)來(lái)自于備份LVS Router的心跳。
lvsd:
lvs進(jìn)程調(diào)用ipvsadm工具去配置和維護(hù)IPVS路由表,并為每一個(gè)在真實(shí)服務(wù)器上的虛擬服務(wù)啟動(dòng)一個(gè)nanny進(jìn)程。
nanny:
每一個(gè)nanny進(jìn)程去檢查真實(shí)服務(wù)器上的虛擬服務(wù)狀態(tài),并將故障情況通知lvs進(jìn)程。假如一個(gè)故障被發(fā)現(xiàn),lvs進(jìn)程通知ipvsadm在IPVS路由表中將此節(jié)點(diǎn)刪除。
send_arp:
如果備份LVS Router未收到來(lái)自于活動(dòng)LVS Router的響應(yīng),
它將調(diào)用send_arp將虛擬IP地址再分配到備份LVS Router的公網(wǎng)接口上。
并在公網(wǎng)接口和局域網(wǎng)接口上分別發(fā)送一個(gè)命令去關(guān)掉活動(dòng)LVS Router上的lvs進(jìn)程。同時(shí)啟動(dòng)自己的lvs進(jìn)程來(lái)調(diào)度客戶端請(qǐng)求。
3.Piranha方案基本套件安裝:
- #yum install ipvsadm modcluster piranha system-config-cluster php php-cli php-common
復(fù)制代碼
4.配置文件介紹:
/etc/sysconfig/ha/lvs.cf //由http://ip:3636 web界面配置的配置文件寫入此文件.
/etc/init.d/piranha-gui start //啟動(dòng)piranha服務(wù)的WEB配置界面.
/etc/init.d/pulse //啟動(dòng)piranha服務(wù)讀取的就是/etc/sysconfig/ha/lvs.cf.
二. Piranha配置
配置主LVS服務(wù)器.
# vi /etc/sysctl.conf找到下面行 //啟用數(shù)據(jù)轉(zhuǎn)發(fā).
net.ipv4.ip_forward = 0將0 改成1,net.ipv4.ip_forward = 1
執(zhí)行如下命令來(lái)應(yīng)用:sysctl –p
通過(guò)WEB界面配置Piranha服務(wù).
# /etc/init.d/piranha-gui start //啟動(dòng)Piranha服務(wù).
#/usr/sbin/piranha-passwd //設(shè)置密碼,請(qǐng)?jiān)O(shè)置你的piranha服務(wù)WEB配置登陸密碼.
http://192.168.1.210:3636/ 輸入用戶名: piranha 及剛才設(shè)置的密碼登陸.
登陸后,選擇Global Settings 這是對(duì)LVS的配置
Primary server public IP 輸入公網(wǎng)IP:192.168.1.210,應(yīng)用后按ACCEPT按鈕保存設(shè)置。
通過(guò)WEB配置主LVS的信息
1. 配置主份LVS
2.png (19.29 KB, 下載次數(shù): 130)
下載附件
2009-01-12 09:31 上傳
2.配置備份LVS
3.png (19 KB, 下載次數(shù): 128)
下載附件
2009-01-12 09:31 上傳
3. 配置添加LVS( VIP信息)
4.png (28.58 KB, 下載次數(shù): 126)
下載附件
2009-01-12 09:31 上傳
4.配置Realserver
5.png (22.52 KB, 下載次數(shù): 136)
下載附件
2009-01-12 09:31 上傳
點(diǎn)擊”編輯”添加具體的Realsever信息.
6.png (11.49 KB, 下載次數(shù): 132)
下載附件
2009-01-12 09:31 上傳
5.啟動(dòng)LVS服務(wù)pulse
- # /etc/init.d/pulse start
- Starting pulse: [ OK ]
復(fù)制代碼
如果不報(bào)錯(cuò),表示啟動(dòng)成功!到此LVS的服務(wù)器已經(jīng)配置完成了啟動(dòng)兩個(gè)程序
1、piranha-gui 是用來(lái)配置LVS的
2、pulse 是用來(lái)啟動(dòng)LVS的
6.備份LVS安裝與配置
備份LVS安裝同主LVS安裝方法同樣.直接將lvs.conf拷貝到相應(yīng)的目錄下:
#scp lvs.cf root@192.168.1.211:/etc/sysconfig/ha/
# /etc/init.d/pulse start 啟動(dòng)服務(wù)即可.
7.配置Realserver
DR模式配置文件
……........
- 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"
復(fù)制代碼
…………………….
Tunnel模式配置文件.
……………………………………
- ifconfig tunl0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
- /sbin/route add -host $WEB_VIP dev tunl0
- echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
- echo "2" >/proc/sys/net/ipv4/conf/tunl0/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
復(fù)制代碼
………………………………………….
正確配置,并啟動(dòng)服務(wù).
8. 測(cè)試與日志分析.
# ipvsadm –ln //查看LVS連接狀態(tài).- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddressort Scheduler Flags
- -> RemoteAddressort Forward Weight ActiveConn InActConn
- TCP 192.168.1.212:80 wrr persistent 30
- -> 192.168.1.204:80 Route 1 0 0
- -> 192.168.1.205:80 Route 1 0 0
復(fù)制代碼 # tail -f /var/log/messages
7.png (9.99 KB, 下載次數(shù): 134)
下載附件
2009-01-12 09:31 上傳
【注】服務(wù)切換測(cè)試:
停掉主LVS服務(wù)上的pulse查看master是否能正常接管.測(cè)試過(guò)程中多注
意分析日志.在Linuxtone網(wǎng)站編寫heartbeat+lvs方案的時(shí)候還需要自己送一個(gè)arping命令告訴網(wǎng)關(guān)我的MAC發(fā)生變化了.
但是Piranha方案能自動(dòng)送一個(gè)arp命令.
三. LVS配置文件詳解及相關(guān)技巧介紹
1. lvs.conf 配置及詳解: http://bbs.linuxtone.org/thread-1603-1-1.html
2. 修改Piranha登陸用戶名及監(jiān)聽端口?
啟動(dòng)/etc/init.d/piranha-gui,實(shí)際上是執(zhí)行如下配置文件.
/usr/sbin/piranha_gui -f /etc/sysconfig/ha/conf/httpd.conf
#cd /etc/sysconfig/ha 下目錄介紹.
lvs.cf //Piranha方案實(shí)現(xiàn)LVS核心配置文件.
conf/{httpd.conf, piranha.passwd} //apache及認(rèn)證相關(guān)文件.
web/ //此目錄下存放WEB配置界面的PHP相關(guān)程序,
如果想對(duì)WEB界面美化,請(qǐng)修改文件.
mdules/ //apache一些相關(guān)模塊.
# vi /etc/sysconfig/ha/conf/httpd.conf (將原端口3636改為81,你也可以自定義此端口)
8.png (6.37 KB, 下載次數(shù): 125)
下載附件
2009-01-12 09:31 上傳
默認(rèn)WEB界面是能過(guò)piranha賬號(hào)登陸,如何創(chuàng)建自己定義的賬號(hào)登陸呢?- # htpasswd -c /etc/sysconfig/ha/conf/lvs.pass netseek
復(fù)制代碼 // 上述命令是添加用戶netseek,并將賬號(hào)信息寫入lvs.pass這個(gè)文件.
# vi /etc/sysconfig/ha/conf/httpd.conf
9.png (7.46 KB, 下載次數(shù): 130)
下載附件
2009-01-12 09:31 上傳
# /etc/init.d/piranha-gui restart 重啟服務(wù)即可生效.
上述技巧只是簡(jiǎn)單的拋磚引玉,你可以修改WEB服務(wù)的PHP相關(guān)程序,添加一些流量
或者WEB連接狀態(tài)監(jiān)控的代碼.還可以自己給apache添加一些你自己寫的模塊,
總之你可以再現(xiàn)有的piranha上做很多的改造去實(shí) 現(xiàn)你想要的更完美的系統(tǒng).
更多技巧請(qǐng)實(shí)時(shí)關(guān)注: http://bbs.linuxtone.org/ 負(fù)載均衡版塊.
3. 如果啟動(dòng)/etc/init.d/piranha-gui start
若遇到以下錯(cuò)誤提示:- Starting piranha-gui: (13)Permission denied: make_sock: could not bind to address [::]:3636
復(fù)制代碼 關(guān)閉掉selinux跟firewall
一.相關(guān)參考文檔
1.LVS高可用性方案匯總 [Linuxtone為您提供了各種高可用負(fù)載均衡解決方案
2. LVS連接狀態(tài)監(jiān)控
3.Piranha官方參考文檔推薦閱讀
本文基于開源分享精神之上方便大家理解和了解紅帽Piranha方案,希望能快速幫你解決工作中的一些問(wèn)題,如有不足之處請(qǐng)見(jiàn)諒!同時(shí)歡迎各位對(duì)WEB架構(gòu),集群規(guī)劃等相關(guān)的感興趣的朋友請(qǐng)來(lái)加入Linuxtone這個(gè)社區(qū)。我們熱情期待你的加入!
http://www.linuxtone.org IT運(yùn)維專家網(wǎng)!自由+平等+互助+友愛(ài) = 分享快樂(lè)!
下載PDF文檔(方便閱讀):
利用紅帽Piranha方案實(shí)現(xiàn)WEB負(fù)載均衡.pdf
(376.66 KB, 下載次數(shù): 2381)
2009-01-12 09:40 上傳
點(diǎn)擊文件名下載附件
lvs.conf配置文件詳解下載:
lvs.rar
(1.56 KB, 下載次數(shù): 895)
2009-01-12 09:40 上傳
點(diǎn)擊文件名下載附件
[ 本帖最后由 gyl4802959 于 2009-1-12 14:05 編輯 ] |