簡介
Cluster是什么?
Cluster其實就是組織多個主機構建高實現性能、高可靠、多并發、大容量的同一功能的系統。
常見的集群類型:
(1) Load Balancing: 負載均衡集群
(2) High Avaiability: 高可用集群
(3) High Performance: 高性能集群(現在已很少使用)
(4) 分布式存儲與運算
常見集群的擴展方式:
(1)Scale Up:向上擴展、垂直擴展、縱向擴展;用性能好的主機替代性能差的主機,性價比差;
(2)Scale Out: 向外擴展、水平擴展;
lvs:Linux Virtual Server
工作原理:四層路由或四層交換;依賴于netfilter實現根據目標IP或PORT實現請求轉發至后端的多個主機中的某一個主機(根據挑選算法挑選主機)
Director數據包轉發過程:PREATING——>①———>②———>③———–>④——–>POSTROUTING
當客戶端請求到Director,Director內核依靠netfilter將主機從PREROUTING經由路由之后到達INPUT,當到達INPUT之后,ipvs發現是去往集群主機的請求,并將請求強制發往至路由,通過POSTROUTING發往后端主機。
一、lvs的類型:
1)ipvs-nat:MASQUERADE 地址偽裝
類似于DNAT,是一種多目標主機的DNAT,通過修改請求報文的目標IP至基于調度方法選出來某RS的RIP進行轉發
特點:(1)RS必須使用私有地址;網關必須指向DIP;
(2)請求和響應的報文都經由Director轉發;高負載場景中,Director易成為性能瓶頸
(3)支持端口映射
(4)RS可以是任意類型的OS(操作系統)
(5)RS的RIP和Director的DIP要在同一網段
2)ipvs-dr: Direct Routing 直接路由
不修改請求報文的IP首部,而是通過直接封裝幀首部完成轉發;目標MAC是基于調度方法選出某RS的網絡接口的MAC地址
特點:(1)保證前段路由器將目標地址為VIP的報文通過ARP解析后統統發往Director
解決方案:arp解析
在網關路由器上綁定Director的MAC地址
利用arptables在每個RS制定規則
修改RS的內核參數
(2)RS的RIP可以是私有地址;也可以是公網地址,此時通過互聯網上的主機對此可發起管理請求;
(3)RS與Director必須在同一物理網絡中;
(4)請求報文必須經由Director轉發,而響應報文必須不可能經由Director;
(5)不支持端口映射;
(6)RS可以是大多數的OS;
(7)RS的網關決不能指向Director;
3)ipvs-tun: tunneling 隧道
不修改請求報文的IP首部,而是通過IP隧道機制在IP外部再封裝一個IP首部(SIP:DIP, DEST:RIP);經由互聯網交給選定的RS
特點:(1)RIP,DIP,VIP必須都是公網IP;
(2)RS的網關不能也不可能指向DIP;
(3)請求報文必須經由Director調度,而響應報文必須不能經由Director;
(4)不支持端口映射;
(5)RS的OS(操作系統)必須能夠支持隧道功能;
4)lvs-fullnat: 原地址與目標地址都進行替換(以后補充)
二、lvs的調度方法:
1)靜態方法:僅根據算法本身進行調度
(1)RR: round robin, 輪詢、輪叫、輪流;
(2)WRR:weighted RR, 加權輪詢;Overhead=connection/weighted,最小的會被挑中;
(3)SH: source hashing;表示來源于同一個IP的請求始終發往第一個調度時請求的RS,從而實現了SESSION綁定;
(4)DH: destination hashing;表示根據目標主機進行調度,將發往同一個目標地址的請求都轉發至后端主機;
2)動態方法:根據算法及各RS的自身負載狀況進行調度
(1)LC: least connection;最少連接;Overhead=actcon*256+inactcon,結果小的將會被挑中;
(2)WLC: weighted LC;加權最少連接;Overhead=(actcon*256+inactcon)/weighted,結果小的將會被挑中;
(3)SED: Shortest Expection Delay 最段期望延遲;Overhead=(actcon+1)*256/weighted,結果小的將會被挑中;
(4)NQ: Nerver Queue 永不排隊;一開始每臺RS都解釋請求,往后都使用SED
三、ipvs管理工具介紹
ipvsadm:工作在用戶空間,定義轉發規則的程序;
ipvs:工作在內核空間,根據規則完成調度請求的程序;
ipvsadm用法:
管理服務器集群:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f service-address
-A: 添加
-E:修改
-D:刪除
-t:TCP協議的端口
-u: UDP協議的端口
-f:FWM,防火墻標記,標記用數字來表示,將多個端口綁定在一起定義成一個集群服務使用
server-address: IP:[PORT]
-s: 制定調度方法,默認為wlc
管理指定集群服務的RS:
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d -t|u|f service-address -r server-address
-a:添加RS
-e:修改RS
-d:刪除RS
-t|u|f service-address:引用此前定義過的集群服務
-r server-address :制定RS的地址
[-g|i|m]:指定lvs類型
-w weight: 指定權重;
保存RS及CS:
-S save:
ipvsadm -S > /etc/sysconfig/ipvsadmin.v1
ipvsadm-save > /etc/sysconfig/ipvsadmin.v1
service ipvsadm save
-R: restore
ipvsadm -R < /etc/sysconfig/ipvsadmin.v1
ipvsadm-restore < /etc/sysconfig/ipvsadmin.v1
service ipvsadm start
清空規則:
ipvsadm -C
顯示規則:
ipvsadm -L |l [options]
options:
-c: 列出當前所有的connection
–stats:列出CS及RS的連接統計數據
–rate:列出CS及RS的連接、報文及字節速率
-n –numeric: 數字格式顯示
–exact: 精確值
原創文章,作者:馬行空,如若轉載,請注明出處:http://www.www58058.com/5485