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 #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裡設置已經非常方便、簡單。
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等查找。