您好,登錄后才能下訂單哦!
集群概念:
由兩個或兩個以上的服務實體協(xié)調、配合完成一系列工作的模式,對外表現(xiàn)為一個整體。
特點
分配用戶請求
故障轉移
共享存儲
結構:
agent 負載調度器
業(yè)務層 服務器池
存儲 共享存儲
1.垂直擴展
為同樣的計算資源池加入更多資源,比如增加更多內(nèi)存、磁盤或是虛擬cpu,來應對增加的應用負載
2.水平擴展
需要向計算平臺加入更多的機器或設備,來處理增長的需求
向上拓展:對硬件的升級、更換、提升
缺點:
性能:提升是有限度的
弊端:
DNS沒有對后端設備健康狀態(tài)進行檢測的能力,也就是說當WEB2設備出現(xiàn)故障之后,DNS還是根據(jù)自己緩存的記錄把任務分配到WEB2上。
dns的缺陷:無法實現(xiàn)健康狀態(tài)檢查
緩存dns無法實現(xiàn)分配用戶請求
DNS的解析緩存造成任務分配不均,導致單個服務器壓力過大。
算法:
RR(Round-Robin):輪詢
WRR(weightd-Round-Robin):權重(加權輪詢)
使用agent代理機制,可以對后端設備的健康狀態(tài)進行檢測,有效提高的工作效率。
最基礎的一個集群拓撲:
負載均衡集群(LBC Load Balance Cluster)
作用:減輕單臺服務器壓力
Load Balancing負載均衡,不同節(jié)點之間相互獨立,不共享任何資源;通過一定算法將客戶端的訪問請求平分到群集的各個節(jié)點上,充分利用每個節(jié)點的資源。負載均衡擴展了網(wǎng)絡設備和服務器帶寬,增加吞吐量,加強網(wǎng)絡數(shù)據(jù)處理能力。
實現(xiàn):
軟件:LVS RAC
硬件:F5
1.分擔系統(tǒng)的負載
2.監(jiān)控節(jié)點的運行情況
在一個網(wǎng)絡下,可以搭建多個負載均衡集群來實現(xiàn)壓力的分散:
區(qū)別:
硬件后期的維護,比較好,但是價格偏高
軟件靈活性比較大,價格相對便宜
高可用集群(HA):保證服務器的不間斷運行
為應用程序提供持久訪問
出現(xiàn)故障自由切換
實現(xiàn)訪問web1和web2無論哪一個,得到的結果都是一樣的,不會有偏差
為了使用web1和web2內(nèi)容一致:
使用的機制是:心跳檢測
方法實現(xiàn):
RS232串口線(心跳線)
每隔幾秒鐘發(fā)個數(shù)據(jù)包,看對方是否(存活)有回應,無回應,則判斷目標出現(xiàn)問題
現(xiàn)有網(wǎng)卡
通過兩個服務器之間的eth2端口進行檢測(每隔一段時間發(fā)送數(shù)據(jù)包進行確認)
eth0是給用戶訪問使用的
服務器可用性要求標準:
99% | 2個9 | 1年 | 87.6小時(停機) |
99.9% | 3個9 | 1年 | 8.8小時(停機) |
99.99% | 4個9 | 1年 | 53分鐘(停機) |
99.999% | 5個9 | 1年 | 3-5分鐘(停機) |
如果心跳線出現(xiàn)故障:
兩臺主機都認為對方出現(xiàn)故障(死亡),都會搶著接替對方工作,處理響應客戶的請求,搶奪共享的資源、數(shù)據(jù)。(這種現(xiàn)象稱之為“腦裂”)
帶來的后果:數(shù)據(jù)不完整、甚至是災難級
在腦裂的情況下:
兩臺主機都認為對方已死亡,都會對共享存儲服務器,讀取、寫入數(shù)據(jù),這樣同時對一個文件,進行寫入,會造成數(shù)據(jù)丟失,完整性遭到破壞。
對服務造成影響:導致訪問不可達
正常情況下web1在工作,web2不工作,在腦裂情況下,雙方主機都認為對方已死亡,這時,web2服務器會搶奪web1的IP地址,給自己配置,在同一個網(wǎng)絡下,由于web1和web2使用相同的IP,會造成網(wǎng)絡故障,用戶不能正常訪問服務器。
解決方案:
預防為主:增加冗余心跳線
強制隔離:
兩臺服務器都連接電源交換機,當web2檢測出web1出問題時,想要接替工作,又為了避免腦裂情況出現(xiàn),這時,web2會發(fā)送一條指令給電源交換機,這時電源交換機會將連接web1的電源線斷掉,這樣就不會出現(xiàn)web1和web2沖突的現(xiàn)象
Stonish:爆頭
Shoot in other node in the head
用工具實現(xiàn):ipfail
為兩個服務器設置參考IP(一般是網(wǎng)關IP)
當兩臺服務器認為對方出問題時,這時會ping 設置的參考IP,如果參考IP都ping不通,這時服務器會判定問題不是出在對方服務器,是自己內(nèi)部出了問題,這時,會檢測自己內(nèi)部,并作出相應的動作
高可用集群軟件:
高性能運算集群:
A包含10個子任務:a1 a2 a3 .......a10
每個子任務完成需要1小時
負載均衡集群:(單位時間內(nèi)處理的子任務)
1臺計算機完成任務需要10小時(處理10個子任務)
10臺計算機完成任務需要10小時(總共處理100個子任務)
高性能運算集群:(縮短單個任務的執(zhí)行時間,來提升效率)
1臺計算機完成任務需要10小時(處理10個子任務)
10臺計算機完成任務需要1小時(總共處理10個子任務)
高性能集群概念:
高性能計算集群就是將一個大的運算任務拆分,每一個節(jié)點計算其中一部分運算內(nèi)容,最后再將每臺計算機的處理結果匯總,得到我們想要的答案,這種運算方式就是高性能運算集群。
3PB的數(shù)據(jù)需要處理,這時AGENT會告訴客戶端,如何分發(fā)到每個存儲服務器為100G,之后,客戶端會找AGENT2,詢問AGENT2如何處理這些分發(fā)的數(shù)據(jù),這時AGNET2會分別去到每個節(jié)點上運行
程序以運算處理數(shù)據(jù),當數(shù)據(jù)被處理完之后,會將數(shù)據(jù)匯總,反饋給客戶端,這個過程就是高性能運算集群。
負載調度器:
硬件:F5 citrix array
軟件:
四層負載調度器 四層交換機
效率高
LVS Linux virtual server
七層負載調度器 七層交換機
mysql proxy
nginx
haproxy
高級特性
四層交換機:IP+端口
七層交換機:URL或主機名或頁面內(nèi)容包含的高級特性
區(qū)別:
1.觸發(fā)條件不同
四層:工作在傳輸層,轉發(fā)數(shù)據(jù)依靠的是三層的ip和四層的port
七層:工作在應用層。轉發(fā)數(shù)據(jù)依靠URL或主機名
2.實現(xiàn)原理不同
四層負載調度器:TCP連接建立一次,客戶端和RS主機之間
四層交換機工作原理:(轉發(fā)作用)
七層負載調度器:TCP連接建立兩次,客戶端和負載調度器;負載調度器和RS主機
七層交換機工作原理:(起到代理服務器的角色)
七層交換機可以根據(jù)客戶發(fā)起的訪問請求,做出判斷,給客戶相應的內(nèi)容反饋!
3.應用場景不同
四層負載調度器:TCP應用為主 OA ERP
七層負載調度器:以HTTP協(xié)議為主
4.安全性不同
四層負載調度器:轉發(fā)***
七層負載調度器:攔截***
IPVS:鉤子函數(shù),內(nèi)核機制,在請求沒有到達目的地址之前,捕獲并取得優(yōu)先控制權的函數(shù)。
IPVSADM:工作在用戶空間,負責為ipvs內(nèi)核框架編寫規(guī)則,定義誰是集群服務,誰是后端真實 的服務器
LVS概述:
首先簡單介紹一下LVS (Linux Virtual Server)到底是什么東西,其實它是一種集群(Cluster)技術,采用IP負載均衡技術和基于內(nèi)容請求分發(fā)技術。調度器具有很好的吞吐率,將請求均衡地轉移到不同的服務器上執(zhí)行,且調度器自動屏蔽掉服務器的故障,從而將一組服務器構成一個高性能的、高可用的虛擬服務器。整個服務器集群的結構對客戶是透明的,而且無需修改客戶端和服務器端的程序。
舉例:
解釋:當外網(wǎng)客戶端,將請求提交到負載調讀器的外網(wǎng)卡上,這時網(wǎng)卡會對請求進行處理,將請求提交到內(nèi)核所提供的的INPUT函數(shù)模塊上 ,這個函數(shù)正常情況下,會將客戶申請訪問本地80端口的應用請求轉發(fā)給本地應用所安裝HTTP服務器上面,但是我們真正的目的是,想讓負載調度器將用戶的請求轉發(fā)到后端的web網(wǎng)站節(jié)點上面去,這時我們就需要IPVS,IPVS在這里扮演的是鉤子函數(shù)角色(正常情況下,所接受的請求會被轉發(fā)到本地的相應服務上面,但是IPVS所扮演的鉤子函數(shù)角色會在請求被轉發(fā)到本地服務上面之前,將數(shù)據(jù)請求包文強制拿過來,自己先查看,如果發(fā)現(xiàn)用戶是訪問集群節(jié)點的話,會通過eth2端口,因為IPVS會保存一定的策略,自己能夠判斷,然后會相應的把請求轉交給web1,第二次給web2,依次輪詢。。。)
這時,我們會有疑問,IPVS內(nèi)核模塊為什么會知道把請求分別轉發(fā)給web1、web2,這是因為是有IPVSadm工具來實現(xiàn)的
CIP:client IP 客戶端IP
DIP:director IP 負載調度器內(nèi)網(wǎng)口IP
VIP:virtual IP 虛擬IP 集群IP
RIP:realserver IP 服務器節(jié)點IP 真實服務器IP
NAT:地址轉換
注意:
1.最多支持10臺左右RS
2.集群節(jié)點(director和RS)必須在同一個網(wǎng)絡中
3.RS的網(wǎng)關必須位于客戶端和RS之間
4.RS可以用任意的操作系統(tǒng)
5.RS網(wǎng)關必須設置為director
DR:路由模式
優(yōu)點:
大大減輕了負載調度器的壓力
可以支持更多的服務器節(jié)點RS
注意:
1.RS必須和director在一個網(wǎng)絡
2.RS可以設置公網(wǎng)IP或私網(wǎng)IP(當負載調度器壞了的話,可以直接讓客戶訪問通過公網(wǎng)IP訪問集群)
3.負載調度器只負責入站請求
4.集群節(jié)點的網(wǎng)關不能使用director
TUN:隧道模式
優(yōu)點:
不受地理位置限制
注意:
1.所有節(jié)點都要有公網(wǎng)IP,RS并且必須配置在RIP上
2.RS一定不能使用負載調度器作為默認網(wǎng)關
4.必須支持隧道功能
負載調度器算法:
靜態(tài)算法:只考慮算法本身,不考慮服務器狀態(tài)
rr (輪循):從1開始到n結束(N=RS個數(shù))、無狀態(tài)的的調度算法,不考慮服務器性能
wrr (加權輪循):按權重比例進行調度,權重越大,負責的請求越多(權重=優(yōu)先級)
sh (源地址hash):源地址散列或源地址hash,實現(xiàn)會話綁定,保留之前建立的會話信息。將來自于同一個ip地址的請求發(fā)送給一個真實服務器。
dh (目標地址hash):將同一個目標地址的請求,發(fā)送給同一個服務器節(jié)點。提高緩存命中率
動態(tài)算法:既要考慮算法本身,也要考慮服務器狀態(tài)(原理:通過hash表記錄連接狀態(tài)----active/inactive)
LC (最少連接):將新的連接請求分配給當前連接數(shù)最少的服務器。。。公式:活動連接*256+非活動連接
WLC(加權最少連接):最少連接的特殊模式。。。公式:(活動連接*256+非活動連接)/權重
SED(最短期望延遲):加權最少連接的特殊模式。。。。公式:(活動連接 +1)*256/權重
NQ (永不排隊):sed的特殊模式,當某臺真實服務器連接為0時,直接分配,不計算
LBLC(基于局部性的最少連接):dh的特殊模式,既要提高緩存命中率,又要考慮連接數(shù)量。先根據(jù)請求的目標 IP 地址尋找最近的該目標 IP 地址所有使用的服務器,如果這臺服務器依然可用,并且有能力處理該請求,調度器會盡量選擇相同的服務器,否則會繼續(xù)選擇其它可行的服務器
LBLCR(帶復制的基于局部性的最少連接):LBLCR=LBLC+緩存共享機制
實驗:基于NAT模式負載集群搭建
拓撲展示:
背景:需要五臺虛擬機,圖中IP為展示使用,以下操作,不一樣
在共享存儲服務器上面配置NFS
在RS1和RS2上面分別安裝Apache服務
RS1的網(wǎng)頁頁面通過掛載NFS服務器上面的首頁
mount -t nfs 192.168.115.179:/share /var/www/html/
掛載之后、啟動Apache服務之后,失敗
chcon -R -h -t httpd_sys_content_t /var/www/html/
之后就好了
RS1的網(wǎng)關指向負載調度器的內(nèi)網(wǎng)口IP
route add default gw 192.168.115.175
RS2的網(wǎng)頁由自己創(chuàng)建,兩個服務首頁不同,方便區(qū)分
RS2的網(wǎng)關指向負載調度器的內(nèi)網(wǎng)口IP
負載調度器:(雙網(wǎng)卡)
開啟路由轉發(fā)功能
并執(zhí)行sysctl -p刷新
安裝IPVSadm軟件
檢查ipvsadm是否安裝成功
配置
外網(wǎng)客戶端驗證:(每刷新一次,頁面會一次出現(xiàn))
基于DR模式的負載集群:
原理拓撲展示:
實驗拓撲展示:
圖上IP地址僅供參考:
ARP工作原理:
arp_ignore:接收到其他主機的ARP請求后的響應級別
后面參數(shù)設置的如果是0:
只要本機配置有響應的IP地址就響應
后面參數(shù)設置的如果是1:
僅響應請求的目的地址配置在請求到達的網(wǎng)絡接口上
arp_announce:設置ARP通告的級別
0:通告網(wǎng)絡本機所有接口的任何地址信息
2:僅向目標網(wǎng)絡通告網(wǎng)絡與其相匹配的網(wǎng)絡信息
配置:
負載調度器:
配置ifcfg0:1映射子端口,地址為集群IP(210)
優(yōu)化環(huán)境配置:(/etc/sysctl.conf)
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
sysctl -p
查詢IPVS是否安裝:
grep -i "ip_vs" /boot/config-2.6.32-431.el6.x86_64
安裝ipvsadm
rpm -ivh ipvsadm-1.26-2.el6.x86_64.rpm
設置增加負載調度器,默認使用輪詢
ipvsadm -A -t 192.168.115.210:80 -s rr
設置使用DR模式
ipvsadm -a -t 192.168.115.210:80 -r 192.168.115.178:80 -g
ipvsadm -a -t 192.168.115.210:80 -r 192.168.115.173:80 -g
ipvsadm -L -n
service ipvsadm save
共享存儲服務器:
RS1配置:
配置本地回環(huán)接口IP
優(yōu)化環(huán)境變量(/etc/sysctl.conf)
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
安裝Apache服務,并將NFS服務器上面的主頁內(nèi)容掛在過來
mount -t nfs 192.168.115.179:/share /var/www/html/
設置一條路由,凡是請求跟集群地址(115.210)相關的信息的時候,都會交給本地回環(huán)接口處理
route add -host 192.168.115.210 dev lo:0
RS2配置:
配置本地回環(huán)映射端口:
優(yōu)化環(huán)境:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
安裝Apache服務,手動創(chuàng)建一個主頁,區(qū)分內(nèi)容,以便達到實驗效果
設置一條路由,凡是請求跟集群地址(115.210)相關的信息的時候,都會交給本地回環(huán)接口處理
route add -host 192.168.115.210 dev lo:0
客戶端驗證:直接訪問集群的IP,進行訪問,刷新會依次輪詢顯示頁面
ipvsadm命令參數(shù)選項詳細含義如下所示:
-A (--add-service) 在內(nèi)核的虛擬服務器列表中添加一條新的虛擬IP記錄。也就是增加一臺新的虛擬服務器。虛擬IP也就是虛擬服務器的IP地址。
-E (--edit-service) 編輯內(nèi)核虛擬服務器列表中的一條虛擬服務器記錄
-D (--delete-service) 刪除內(nèi)核虛擬服務器列表中的一條虛擬服務器記錄
-C (--clear) 清除內(nèi)核虛擬服務器列表中的所有規(guī)則
-R (--restore) 恢復虛擬服務器規(guī)則
-S (--save) 保存虛擬服務器規(guī)則,輸出為-R 選項可讀的格式
-a (--add-server) 在內(nèi)核虛擬服務器列表的一條記錄里添加一條新的Real Server記錄。也就是在一個虛擬服務器中增加一臺新的Real Server
-e (--edit-server) 編輯一條虛擬服務器記錄中的某條Real Server記錄
-d (--delete-server) 刪除一條虛擬服務器記錄中的某條Real Server記錄
-L|-l –list 顯示內(nèi)核中虛擬服務器列表
-Z (--zero) 虛擬服務器列表計數(shù)器清零(清空當前的連接數(shù)量等)
--set tcp tcpfin udp 設置連接超時值
-t 說明虛擬服務器提供的是tcp服務,此選項后面跟如下格式:
[virtual-service-address:port] or [real-server-ip:port]
-u 說明虛擬服務器提供的是udp服務,此選項后面跟如下格式:
[virtual-service-address:port] or [real-server-ip:port]
-f fwmark 說明是經(jīng)過iptables標記過的服務類型
-s 此選項后面跟LVS使用的調度算法
有這樣幾個選項: rr|wrr|lc|wlc|lblc|lblcr|dh|sh
默認的調度算法是: wlc
-p [timeout] 在某個Real Server上持續(xù)的服務時間。也就是說來自同一個用戶的多次請求,將被同一個Real Server處理。此參數(shù)一般用于有動態(tài)請求的操作中,timeout 的默認值為360 分鐘。例如:-p 600,表示持續(xù)服務時間為600分鐘。
-r 指定Real Server的IP地址,此選項后面跟如下格式:
[real-server-ip:port]
-g (--gatewaying) 指定LVS 的工作模式為直接路由模式(此模式是LVS 默認工作模式)
-i (-ipip) 指定LVS 的工作模式為隧道模式
-m (--masquerading) 指定LVS 的工作模式為NAT模式
-w (--weight) weight 指定Real Server的權值
-c (--connection) 顯示LVS目前的連接信息 如:ipvsadm -L -c
-L --timeout 顯示“tcp tcpfin udp”的timeout值,如:ipvsadm -L --timeout
-L --daemon 顯示同步守護進程狀態(tài),例如:ipvsadm -L –daemon
-L --stats 顯示統(tǒng)計信息,例如:ipvsadm -L –stats
-L --rate 顯示速率信息,例如:ipvsadm -L --rate
-L --sort 對虛擬服務器和真實服務器排序輸出,例如:ipvsadm -L --sort
注: 保存添加的虛擬ip記錄和ipvsadm的規(guī)則可以使用service ipvsadm save,還可以用-S或--save。清除所有記錄和規(guī)則除了使用-C,還以使用--clear。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。