1,lvs是什么
lvs是Linux Virtual Server縮寫,linux虛擬服務器,擔任負載調度器(load balance)的角色,它不提供任何服務,用戶請求到這里的時候,它是將客戶需求轉發至后端真正提供服務的服務,LVS分為兩部分組成,ipvsadm管理集群服務的命令行工具,ipvs,是內核模塊。由于ipvs采用基于ip負載均衡技術,所以具有很好的吞吐量。
lvs簡單拓撲
lvs相關術語
RS:后端服務器
CIP: 客戶端IP
VIP:虛擬IP
RIP:后端服務器IP
DIR:調度器Director IP
2,lvs集群類型。
1,lvs-nat: 網絡地址轉換
接到用戶請求,通過網絡地址地址轉換,(類似iptables的DNAT),根據預設的調度算法,調度器重寫請求報文的目標地址,將請求報文分發到后端的相應的真實服務器;真實服務器的響應報文通過調度器時,響應報文的源地址被重寫,返回客戶端。完成整個請求。 NAT模式是通過修改請求報文的目標ip跟port完成的轉發,修改響應報文的源地址的ip,port完成對客戶端的透明性,所有nat模式有以下特性
(1) 請求報文響應報文都通過Director,Director容易成為性能上的瓶頸
(2)RIP,DIP在同一個私網網段
(3)VS是linux系統,RS可以是任意OS
2,lvs-dr:直接路由技術
DR模式是通過改寫請求報文的MAC地址完成,將請求報文發送到后端的RS,RS將響應報文直接返回給客戶端。DR模式有以下特性:
(1)確保上級路由器將目標IP的請求發送到Director, 即目標的IP對應的MAC地址為Director的mac地址
1.1 在RS上做arptables;
1.2 上級路由做mac靜態綁定
1,3 在RS上修改內核參數限制ARP通告級別
arp_ignore:定義對目標地址為本地IP的ARP詢問不同的應答模式 arp_announce: 對網絡接口上,本地IP地址的發出的,ARP回應,作出相應級別的限制
(2)RS的DIP的不限制地址類型,公私網都可,但是不能設置網關為Director
(3)Director,RS必須在同一物理網段,中間可以有交換機,但是不能有路由器
(4)DR模式不支持端口映射
3,LVS-TUN: IP隧道
類似于lvs-nat,由于nat模式都經過Director,吞吐量相對DR模式較小,所以封裝一個新的IP頭標記(僅目的IP)發給RS,RS收到后,先把數據包的頭解開,還原數據包,處理后,直接返回給客戶端,不需要再經過負載均衡器,LVS-TUN模式的有以下特征:
(1) DIP,VIP,RIP都應該是公網IP
(2) RS網關不能指向DIP
(3)請求報文經過Director,響應報文不能經過Director
(4)不支持端口映射,
(5)RS需支持IP隧道功能
4 lvs-fullnat: 修改請求報文的源,目標IP
修改請求報文的源IP跟目標IP進行轉發
(1)VIP是公網,RIP,DIP是私網地址,通常不在統一網段
(2) 請求報文和響應報文都經過Director
(3)支持端口映射
3,LVS調度算法
調度器可以分為靜態調度跟動態調度
(1) 靜態調度: 根據算法本身調度
RR:輪詢,輪流的分配到RS,適用于后端服務器性能一樣,或者是大致相近 WRR:加權輪詢,根據真實服務器的權重比例分配到后端的RSSH: 源地址哈希,將同一個CIP分配到后端的同一RS,用于會話綁定 DH: 目標地址哈希,將同一目標地址的請求分配到后端同一RS
(2) 動態調度:根據后端RS負載情況及調度算法動態的調度
LC: 最少連接,調度器通過該算法動態的把請求分配到已建立數量最少的服務器WLC: 加權最小連接,調度器采用該算法調度,具有較高權重的服務器承受相對比例的請求數量 SED: 最短期望延遲 LBLC:基于局部性最少連接 LBLCR: 帶復制的LBLC
4,LVS-NAT模式搭建
hostname | ip | gateway | role |
node-1 |
192.168.6.101 192.168.2.105 |
192.168.2.1 | Director |
node-2 | 192.168.6.102 | 192.168.6.101 | real node |
node-3 | 192.168.6.103 | 192.168.6.101 | real node |
準備工作
安裝ipvs,默認是沒有安裝,使用yum安裝 yum install ipvsadm
在node-2,node-3安裝nginx,啟動端口是80,為了明顯區分配到了哪個RS,修改nginx的index.html的內容,我這里是修改為機器的hostname
RS只需要把網關改為192.168.6.101
(1)開啟路由轉換功能
[root@node-1 ~]# echo "1" >/proc/sys/net/ipv4/ip_forward
(2)配置node-2,node-3加入集群
[root@node-1 ~]# ipvsadm -C [root@node-1 ~]# ipvsadm -A -t 192.168.2.105:80 -s rr [root@node-1 ~]# ipvsadm -a -t 192.168.2.105:80 -r 192.168.6.102 -m [root@node-1 ~]# ipvsadm -a -t 192.168.2.105:80 -r 192.168.6.103 -m
(3) 測試訪問
[root@node-1 ~]# for i in `seq 10`; do curl http://192.168.2.105/;done node-3 node-2 node-3 node-2 node-3
原創文章,作者:N24_chuanshuo,如若轉載,請注明出處:http://www.www58058.com/55856
內容格式把握得很好,原理部分可以加入一些自己的理解,加油!