初學必看的lvs負載均衡教程
在之前,我們有介紹過關于LVS的負載均衡配置問題,很多初學的朋友總覺得看的不是很明白。那么現在我們再來從新總結一下,首先我們來認識一下配置中需要知道的術語,然后再學習配置過程。那么,關于LVS的系統基礎內容我們就不多贅述了,主要針對負載均衡方面的內容做一個重點的介紹。
簡單術語:
Director:前端負載均衡器,運行lvs,目前只能為Linux,針對FreeBSD剛剛出來,性能不知道如何。可以針對web、ftp、cache、mms甚至mysql等服務做loadbalance。
RealServer:后段需要負載均衡的服務器,可以為各類系統,Linux、Solaris、Aix、BSD、Windows都可,甚至Director本身也可以作為RealServer使用。
lvs Linux Virtual Server,Linux下的負載均衡器,不多作介紹了,跟DNS輪詢以及一些商業產品的比較等不做論述,具體看看LVS網站,支持LVS-NAT、 LVS-DR、LVS-TUNL三種不同的方式,nat用的不是很多,這里簡單介紹一下DR、TUNL方式。
DR方式適合所有的RealServer同一網段下,即接在同一個交換機上。TUNL方式就RealServer可以任意了,完全可以跨地域、空間,只要系統支持Tunnel就成(Win2k3好像已經不支持了)。
方便以后擴充的話直接Tunl方式即可;
Director系統為RHEL3+ClusterSuite;
RealServer系統為Rhel3+noarp補丁。
Director設置:
需要在Director設置的就是/etc/sysconfig/ha/lvs.cf,以及安裝ClusterSuite后啟動pulse服務(Redhat的lvs服務,當然也可以手動),下面是一個簡單的lvs設置(沒有設置director HA),man lvs.cf看看詳細設置,RHEL3里已經有了詳細的手冊。
203.x.x.a為Director公網ip地址
203.x.x.b為需要Loadbance的域名的Ip地址
203.x.x.c 為第一個RealServer
203.x.x.d為第二個RealServer#p#
#cat /etc/sysconfig/ha/lvs.cf
serial_no=45
primary=203.x.x.a
service=lvs
rsh_command=ssh
backup_active=0
backup=0.0.0.0
heartbeat=1
heartbeat_port=539
keepalive=10
deadtime=20
network=direct(Tunl方式改為tunnel)
nat_nmask=255.255.255.255
reservation_conflict_action=preempt
debug_level=NONE
virtual www.test.com {
active=1
address=203.x.x.b eth0:0
vip_nmask=255.255.255.255
port=80
send="GET/HTTP/1.0\r\n\r\n"
expect="HTTP"
load_monitor=uptime
scheduler=wlc
protocol=tcp
timeout=10
reentry=15
quiesce_server=0
server r1 {
address=203.x.x.c
active=1
weight=1
}
server r2 {
address=203.x.x.d
active=1
weight=1
}
}
上面的設置是對某個域名的web訪問進行負載均衡,Director使用ssh定時收集RealServer上的負載,然后決定Loadbalance的分配,分配方式為WLC方式,然后啟動pulse服務,看看/var/log/message里有沒有什么配置錯誤,RHEL3里設置已經非常方便、簡單。#p#
RealServer配置:
RS系統為Rhel3,針對DR、Tunl需要不同的設置,但關鍵的是arp問題,這里使用的noarp module,當然Rhel3里也提供了arptables來配合lvs(效果可能不是很好),這里介紹一下noarp。
noarp編譯不做介紹了,configure install后,insmod noarp把noarp加入內核,然后需要執行:
noarpctl add 203.x.x.b 203.x.x.a
這是把所有對203.x.x.b的arp請求轉向203.x.x.a(Director),然后建立虛擬ip以完成路由,DR的話需要建立網卡,放在eth0或者lo都行:
ifconfig eth0:1 203.x.x.b netmask 255.255.255.255 up
Tunl方式的話需要啟動tunl虛擬網卡:
ifconfig tunl0 203.x.x.b netmask 255.255.255.255 up
同樣在RealServer2上同樣的設置,在兩個RealServer上啟動apache,Director上檢測一下連接:
ipvsadm -Ln
看看當前的負載分配,lvs的穩定性不用置疑,Rhas2.1、Rhel3里的LVS在我這里4年使用里極其穩定,訪問量從當時的幾百人在線到現在的接近10K,只需要根據負載增加后段的RealServer即可,但Rhas2.1的LVS對Tunl支持的不好,建議使用Rhel3進行tunl方式的 Loadbalance。
幾句題外話:
lvs這兩年里已經很穩定了,應用也已經很多了,maillist已經很活躍了,一些問題完全可以在maillist里找到答案。
上面只是lvs一個簡單的應用,其它的復雜應用完全可以到lvs主頁、maillist等查找。