本節索引:
一、Cluster集群概念
二、LVS介紹
三、LVS模式與算法
四、ipvsadm命令
一、Cluster集群概念
集群(cluster)技術是一種較新的技術,通過集群技術,可以在付出較低成本的情況
下獲得在性能、可靠性、靈活性方面的相對較高的收益,其任務調度則是集群系統中
的核心技術。
系統擴展方式:
Scale UP:向上擴展,增強
Scale Out:向外擴展,增加設備,調度分配問題,Cluster
Cluster:集群,為解決某個特定問題將多臺計算機組合起來形成的單個系統
Linux Cluster類型:
LB:Load Balancing,負載均衡
HA:High Availiablity,高可用,SPOF(single Point Of failure)
MTBF:Mean Time Between Failure 平均無故障時間
MTTR:Mean Time To Restoration( repair)平均恢復前時間
A=MTBF/(MTBF+MTTR) (0,1):99%, 99.5%, 99.9%, 99.99%, 99.999%
HPC:High-performance computing,高性能 www.top500.org
分布式系統:
分布式存儲:云盤
分布式計算:hadoop,Spark
分布式文件系統:fastfs
集群與分布式:
簡單來說集群是解決高可用的,而分布式是解決高性能、高并發的
集群:同一個業務,部署在多個服務器上
分布式:一個業務分拆多個子業務,部署在不同的服務器上
Cluster分類
LB Cluster的實現
硬件
F5 Big-IP
Citrix Netscaler
A10 A10
軟件
lvs:Linux Virtual Server
nginx:支持七層調度
haproxy:支持七層調度
ats:apache traffic server,yahoo捐助
perlbal:Perl 編寫
pound
基于工作的協議層次劃分:
傳輸層(通用):DPORT
LVS:
nginx:stream
haproxy:mode tcp
應用層(專用):針對特定協議,自定義的請求模型分類
proxy server:
http:nginx, httpd, haproxy(mode http), …
fastcgi:nginx, httpd, …
mysql:mysql-proxy, …
會話保持:負載均衡
(1)session sticky:同一用戶調度固定服務器
Source IP:LVS sh算法(對某一特定服務而言)
Cookie
(2)session replication:每臺服務器擁有全部session
session multicast cluster
(3)session server:專門的session服務器
Memcached,Redis
HA集群實現方案
keepalived:vrrp協議
ais:應用接口規范
heartbeat
cman+rgmanager(RHCS)
coresync_pacemaker
二、LVS介紹
LVS:Linux Virtual Server,負載調度器,集成內核 章文嵩 阿里
官網:http://www.linuxvirtualserver.org/
VS:Virtual Server,負責調度
RS:Real Server,負責真正提供服務
L4:四層路由器或交換機
工作原理:VS根據請求報文的目標IP和目標協議及端口將其調度轉發至某RS,根據調度
算法來挑選RS
iptables/netfilter:
iptables:用戶空間的管理工具
netfilter:內核空間上的框架
流入:PREROUTING –> INPUT
流出:OUTPUT –> POSTROUTING
轉發:PREROUTING –> FORWARD –> POSTROUTING
DNAT:目標地址轉換; PREROUTING
LVS集群的通用結構:
LVS工作原理
LVS集群類型中的術語:
VS:Virtual Server,Director Server(DS),Dispatcher(調度器),Load Balancer
RS:Real Server(lvs), upstream server(nginx),backend server(haproxy)
CIP:Client IP
VIP: Virtual serve IP VS外網的IP
DIP: Director IP VS內網的IP
RIP: Real server IP
訪問流程:CIP <–> VIP == DIP <–> RIP
lvs:ipvsadm/ipvs
ipvsadm:用戶空間的命令行工具,規則管理器
用于管理集群服務及RealServer
ipvs:工作于內核空間netfilter的INPUT鉤子上的框架
lvs集群的類型:
lvs-nat:修改請求報文的目標IP,多目標IP的DNAT(重點)
lvs-dr:操縱封裝新的MAC地址(重點)
lvs-tun:在原請求IP報文之外新加一個IP首部
lvs-fullnat:修改請求報文的源和目標IP
三、LVS模式與調度算法
lvs-nat模式
本質是多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑
出的RS的RIP和PORT實現轉發
LVS-NAT的體系結構如下圖所示:
(1)RIP和DIP應在同一個IP網絡,且應使用私網地址;RS的網關要指向DIP
(2)請求報文和響應報文都必須經由Director轉發,Director易于成為系統瓶頸
(3)支持端口映射,可修改請求報文的目標PORT
(4)VS必須是Linux系統,RS可以是任意OS系統
LVS-NAT數據流程時序圖:
LVS-DR模式
LVS-DR:Direct Routing,直接路由,LVS默認模式,應用最廣泛,通過為請求報文重新
封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標MAC是某挑選出
的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變
LVS-DR的體系結構如下圖所示:
(1) Director和各RS都配置有VIP
(2) 確保前端路由器將目標IP為VIP的請求報文發往Director
在前端網關做靜態綁定VIP和Director的MAC地址
在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle –mangle-ip-s $RIP
在RS上修改內核參數以限制arp通告及應答級別
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
(3)RS的RIP可以使用私網地址,也可以是公網地址;RIP與DIP在同一IP網絡;
RIP的網關不能指向DIP,以確保響應報文不會經由Director
(4)RS和Director要在同一個物理網絡
(5)請求報文要經由Director,但響應報文不經由Director,而由RS直接發往
Client
(6)不支持端口映射(端口不能修?。?/p>
(7)RS可使用大多數OS系統
LVS-DR數據流程時序圖:
lvs-tun模式
轉發方式:不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而在原IP報文
之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標
RS;RS直接響應給客戶端(源IP是VIP,目標IP是CIP)
LVS-TUN的體系結構如圖所示:
(1) DIP, VIP, RIP都應該是公網地址
(2) RS的網關一般不能指向DIP
(3) 請求報文要經由Director,但響應不能經由Director
(4) 不支持端口映射
(5) RS的OS須支持隧道功能
LVS-TUN數據流程時序圖:
LVS-FULLNAT模式
lvs-fullnat:通過同時修改請求報文的源IP地址和目標IP地址進行轉發
CIP –> DIP
VIP –> RIP
(1) VIP是公網地址,RIP和DIP是私網地址,且通常不在同一IP網絡;因此,
RIP的網關一般不會指向DIP
(2) RS收到的請求報文源地址是DIP,因此,只需響應給DIP;但Director還
要將其發往Client
(3) 請求和響應報文都經由Director
(4) 支持端口映射
注意:此類型kernel默認不支持
三種 主要IP 負載均衡技術比較:
lvs-nat與lvs-fullnat:請求和響應報文都經由Director
lvs-nat:RIP的網關要指向DIP
lvs-fullnat:RIP和DIP未必在同一IP網絡,但要能通信
lvs-dr與lvs-tun:請求報文要經由Director,但響應報文由RS直接發往Client
lvs-dr:通過封裝新的MAC首部實現,通過MAC網絡轉發
lvs-tun:通過在原IP報文外封裝新IP頭實現轉發,支持遠距離通信
lvs-nat 的優點是服務器可以運行任何支持 TCP/IP 的操作系統,它只需要
一個 IP 地址配置在調度器上,服務器組可以用私有的 IP 地址。缺點是它的伸縮
能力有限,當服務器結點數目升到 20 時,調度器本身有可能成為系統的新瓶頸,
因為在 lvs-nat 中請求和響應報文都需要通過負載調度器。
lvs-dr優點是負載調度器可以處理大量的請求,因為調度器只處理客戶到服
務器端的連接,響應數據可以直接從獨立的網絡路由返回給客戶,這可以極大地
提高 LVS 集群系統的伸縮性。缺點是要求負載調度器與實際服務器都有一塊網
卡連在同一物理網段上,服務器網絡設備(或者設備別名)不作 ARP 響應,或
者能將報文重定向(Redirect)到本地的 Socket 端口上。
lvs-tun 的優點是負載調度器可以處理大量的請求,它甚至可以調度百臺以
上的服務器(同等規模的服務器),而它不會成為系統的瓶頸,因為負載調度器
只將請求調度到不同的后端服務器,后端服務器將應答的數據直接返回給用戶。
LVS的調度算法
輪訓算法 加權輪訓算法 最小連接算法 加權最下連接算法 …..
LVS Scheduling Method LVS的調度方法:
1.Fixed Scheduling Method? 靜態調度方法
(1).RR??? ? ? ?輪詢
(2).WRR??? 加權輪詢
(3).SH???? ? ? 源地址hash;實現session sticky,源IP地址hash;將來自于同一
個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定
(4).DH? ? ? ? 目標地址hash;目標地址哈希,將發往同一個目標地址的請求始終轉
發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均
衡,如:寬帶運營商
2.Dynamic Scheduling Method 動態調度方法
(1).LC??? ? ? ?最少連接;適用于長連接應用
? ? ? ? ? Overhead=activeconns*256+inactiveconns
(2).WLC? ? 加權最少連接(默認調度方法)
? Overhead=(activeconns*256+inactiveconns)/weight?
(3).SED?? ? ?最少期望延遲
Overhead=(activeconns+1)*256/weight
(4).NQ?? ? ? 第一輪均勻分配,后續SED
(5).LBLC?? 基于本地的最少連接;動態的DH算法,使用場景:根據負載狀態實現正向代理
(6).LBLCR? 帶復制的基于本地的最少連接;帶復制功能的LBLC解決LBLC負載不均衡
問題,從負載重的復制到負載輕的RS
四、ipvsadm命令
核心功能:
集群服務管理:增、刪、改
集群服務的RS管理:增、刪、改
查看
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [–pe
persistence_engine] [-b sched-flags]
ipvsadm -D -t|u|f service-address 刪除
ipvsadm –C 清空
ipvsadm –R 重載
ipvsadm -S [-n] 保存
ipvsadm -a|e -t|u|f service-address -r server-address [options]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
管理集群服務:增、改、刪
增、改:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
刪除:
ipvsadm -D -t|u|f service-address
service-address:
-t|u|f:
-t: TCP協議的端口,VIP:TCP_PORT
-u: UDP協議的端口,VIP:UDP_PORT
-f:firewall MARK,標記,一個數字
[-s scheduler]:指定集群的調度算法,默認為wlc
管理集群上的RS:增、改、刪
增、改:ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w?weight]
刪:ipvsadm -d -t|u|f service-address -r server-address
server-address:
rip[:port] 如省略port,不作端口映射
選項:
lvs類型:
-g: gateway, dr類型,默認
-i: ipip, tun類型
-m: masquerade, nat類型
-w weight:權重
清空定義的所有內容:ipvsadm –C
清空計數器:ipvsadm -Z [-t|u|f service-address]
查看:ipvsadm -L|l [options]
–numeric, -n:以數字形式輸出地址和端口號
–exact:擴展信息,精確值
–connection,-c:當前IPVS連接輸出
–stats:統計信息
–rate :輸出速率信息
ipvs規則: /proc/net/ip_vs
ipvs連接:/proc/net/ip_vs_conn
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/102230