LVS集群類型比較:選擇最適合你的應用架構
一、什么是LVS?
LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器,是一個由章文嵩博士發起的軟件項目,現在LVS已經是Linux標準內核的一部分,在Linux2.4內核以前,使用LVS時必須重新編譯內核以支持LVS功能模塊,但是從Linux2.4內核心之后,已經完全內置了LVS的各個功能模塊,無需給內核打任何補丁,可以直接使用LVS提供的各種功能。
使用LVS技術要達到的目標是:通過LVS提供的負載均衡技術和Linux操作系統實現一個高性能,高可用的服務器群集,它具有良好的可靠性、可擴展性和可操作性。從而以低廉的成本實現最優的服務性能。
二、LVS集群幾種類型
1.LVS-NAT
原理:本質上是多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和port實現轉發。
- RIP和DIP盡量在同一個網絡,且使用私有網絡,RS的網關盡量要指向DIP;
- 請求報文和響應報文都必須經由Diretory轉發,Diretory易于成為系統瓶頸;
- 支持端口映射,可修改請求報文的目標port;
- VS必須是linux系統,RS可以是任意OS系統;
2.LVS-DR(常用)
原理:Dirrect Routing,直接路由,LVS的默認模式,應用最廣泛,通過為請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在接口的MAC,目標MAC是挑選出來的RS的RIP所在接口的MAC地址,源IP/PORT以及目標IP/PORT均保持不變。
- Director和各RS均要配置VIP;
- 確保前端路由器將目標IP為VIP的請求報文發往Director
在RS上使用arptables工具:
arptables -A IN -d $VIP -j Drop
arptables -A OUT -s $VIP -j **** --*****-ip-s $RIP
RS上修改內核參數以限制arp通告及應答級別:
/proc/sys/net/ipv4/vonf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
- RS的RIP可以使用私有網絡地址,也可以使用公網地址;RIP和DIP在同一個IP網絡;
- RIP的網關不能指向DIP,以確保響應報文不會經過Director
- RS和Director要在同一個物理網絡
- 請求報文要經過Director,但是響應報文不會經過Director,由RS直接發往Client
- 不支持端口映射,即端口固定
- RS可使用大多數OS操作系統
3.lvs-tun(跨異地)
原理:不修改請求報文的IP首部(CIP->VIP),而在原IP報文之外封裝一個IP首部(DIP->VIP),將報文發往目標RS,RS直接響應客戶端(VIP->CIP)。
- DIP、VIP、RIP都應該是公網地址
- RS的網關不能指向DIP
- 請求報文要經過Director,但是響應報文不經過直接回到Client
- 不支持端口映射
- RS的OS必須支持隧道功能
4.lvs-fullnat
原理:通過同時修改請求報文的源ip和目的ip進行轉發
CIP->VIP
DIP->RIP
- VIP是公網地址
- RS收到的請求報文源地址是DIP,因此只響應給DIP,lvs服務器將其轉發給client
- 請求和響應報文都經過LVS服務器
- 支持端口映射
- 內核默認不支持