成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

老曹眼中的負(fù)載均衡

開發(fā) 開發(fā)工具
負(fù)載(load)一詞起源于典型系統(tǒng),指連接在電路中消耗電能的裝置,負(fù)載(用電器)的功能是把電能轉(zhuǎn)變?yōu)槠渌问侥堋R瓿鰜恚粋€是實體,一個轉(zhuǎn)化。

什么是負(fù)載均衡

負(fù)載(load)一詞起源于典型系統(tǒng),指連接在電路中消耗電能的裝置,負(fù)載(用電器)的功能是把電能轉(zhuǎn)變?yōu)槠渌问侥堋R瓿鰜恚粋€是實體,一個轉(zhuǎn)化。

于是,對于實體,有了通信幀或者報文中數(shù)據(jù)字段的內(nèi)容被稱為信息負(fù)載(payload),網(wǎng)絡(luò)負(fù)載指的就是網(wǎng)絡(luò)中繼承載的流量以及網(wǎng)絡(luò)設(shè)備承載的用戶量。

轉(zhuǎn)化被進一步闡釋為資源的使用情況,操作系統(tǒng)的平均負(fù)載是CPU的Load 即workload,它所包含的信息不是CPU的使用率狀況,而是在一段時間內(nèi)CPU正在處理以及等待CPU處理的進程數(shù)之和的統(tǒng)計信息。

了解了負(fù)載,那么負(fù)載均衡就容易理解了。wiki百科給出的定義是這樣的:

負(fù)載均衡(Load balancing)是一種計算機網(wǎng)絡(luò)技術(shù),用來在多個計算機(計算機集群)、網(wǎng)絡(luò)連接、CPU、磁盤驅(qū)動器或其他資源中分配負(fù)載,以達到最佳化資源使用、最大化吞吐率、最小化響應(yīng)時間、同時避免過載的目的。使用帶有負(fù)載平衡的多個服務(wù)器組件,取代單一的組件,可以通過冗余提高可靠性。負(fù)載平衡服務(wù)通常是由專用軟件和硬件來完成。

并且,wiki百科自身的系統(tǒng)就使用了負(fù)載均衡, 后段系統(tǒng)使用了elasticsearch。

每一種技術(shù)都有它應(yīng)用的場景和領(lǐng)域,負(fù)載均衡主要解決的是系統(tǒng)性能問題。但是,了解了根源,就可以知道不能夠一提到性能問題就非負(fù)載均衡莫屬,如果負(fù)載減少了,可能少一點均衡也可以解決問題,這樣的技術(shù)例如緩存。

基于DNS的負(fù)載均衡

基于DNS的負(fù)載均衡是負(fù)載均衡的最簡方法,可以說是窮人的負(fù)載均衡。

DNS會將域名映射為IP地址,反之亦然。所有核心DNS服務(wù)器都是集群,用的最多的DNS服務(wù)器大概就是BIND了。查詢DNS服務(wù)器時,推薦使用dig;查詢DNS解析時,推薦使用nslookup。 使用DNS緩存可以提高DNS解析的性能。Dig 在mac上的使用示例如下:

對于DNS實現(xiàn)的負(fù)載均衡非常簡單,采用輪轉(zhuǎn)的方式,只要為所要服務(wù)的域名增加多個A記錄即可。

例如:

abel.com. IN A 192.168.23.101 abel.com. IN A 192.168.23.102 abel.com. IN A 192.168.23.103 abel.com. IN A 192.168.23.104

基于DNS的負(fù)載均衡簡單,易于調(diào)試且容易擴展。缺陷在于它有慢性失憶癥,無法將會話信息從一個請求保留到下一個請求。而且,只是對目標(biāo)服務(wù)地址進行了均衡,無法考慮請求處理的負(fù)載強度進行均衡,同時容錯性較差。支持DNS 負(fù)載均衡的服務(wù)商有AWS Route 53 以及dnspod。

HTTP 負(fù)載均衡

負(fù)載均衡解決的是性能問題,要先了解單個服務(wù)器的狀況。一般地,nginx 的應(yīng)答率比Apache 高,所以,有時更換Web 服務(wù)器就可以提高性能。

提高Apache Http的方法有禁用空載模塊,禁用DNS查詢,采用壓縮模塊,不使用SymLinksIfOwnerMatch選項,并且在Directory選項中啟用FollowSymLinks,等等。

Nginx本身就是高性能的,但可以通過worker_processes 和worker_cpu_affinity調(diào)整來匹配服務(wù)器的硬件平臺,還可以對壓縮進行區(qū)分對待,使用其緩存的能力。例如

Http{ gzip on; gzip_static on; gzip_comp_level 2; gzip_types application/javascript;}

HTTP的負(fù)載均衡相當(dāng)于7層負(fù)載均衡,不論Apache 還是 Nginx 都可以充當(dāng)HTTP的負(fù)載均衡器。

以基于權(quán)重的負(fù)載均衡為例,可以配置Nginx把請求更多地分發(fā)到高配置的后端服務(wù)器上,把相對較少的請求分發(fā)到低配服務(wù)器。配置的示例如下:

  1. http{  
  2. upstream sampleapp {  
  3. server 192.168.1.23 weight=2;  
  4. server 192.168.1.24;  
  5.  
  6. ....  
  7. server{  
  8. listen 80;  
  9. ...  
  10. location / {  
  11. proxy_pass http://myapp;  
  12.  

Nginx 作為負(fù)載均衡工作在7層,可以對做正則規(guī)則處理(如針對域名、目錄進行分流等) ,配置簡單,能ping通就能進行負(fù)載功能,可以通過端口檢測后端服務(wù)器狀態(tài),不支持url檢測。Nginx 負(fù)載均衡抗高并發(fā),采用epoll網(wǎng)絡(luò)模型處理客戶請求,但應(yīng)用范圍受限。

數(shù)據(jù)庫負(fù)載均衡

數(shù)據(jù)庫負(fù)載均衡的一般用法是從讀寫分離開始的,因為一般的應(yīng)用都是讀多寫少的緣故吧。將數(shù)據(jù)庫做成主從,主數(shù)據(jù)用于寫操作,從數(shù)據(jù)庫用于讀操作,事務(wù)一般在主庫完成。

數(shù)據(jù)庫集群是數(shù)據(jù)庫負(fù)載均衡的典型方式,集群管理服務(wù)器作為負(fù)載均衡器,例如 MySQL cluster。

更簡單的方式是通過Haproxy 來完成負(fù)載均衡的調(diào)度。


 

HAProxy能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導(dǎo)等工作,支持url檢測后端的服務(wù)器,對于問題的排查會有很好的幫助。

HAProxy擁有更多的負(fù)載均衡策略比如:動態(tài)加權(quán)輪循(Dynamic Round Robin),加權(quán)源地址哈希(Weighted Source Hash),加權(quán)URL哈希和加權(quán)參數(shù)哈希(Weighted Parameter Hash)等,單純從效率上來講HAProxy更會比Nginx有更出色的負(fù)載均衡速度。

網(wǎng)絡(luò)連接的負(fù)載均衡

LVS(也叫IPVS,IP虛擬服務(wù)器)是在四層交換上設(shè)置Web服務(wù)的虛擬IP地址,對客戶端是可見的。當(dāng)客戶訪問此Web應(yīng)用時,客戶端的Http請求會先被第四層交換機接收到,它將基于第四層交換技術(shù)實時檢測后臺Web服務(wù)器的負(fù)載,根據(jù)設(shè)定的算法進行快速交換。常見的算法有輪詢、加權(quán)、最少連接、隨機和響應(yīng)時間等。

LVS抗負(fù)載能力強,使用IP負(fù)載均衡技術(shù),只做分發(fā),所以LVS本身并沒有多少流量產(chǎn)生。 LVS的穩(wěn)定性和可靠性都很好應(yīng)用范圍比較廣,可以對所有應(yīng)用做負(fù)載均衡,缺陷是不支持正則處理,不能做動靜分離。

通過LVS+Keepalived構(gòu)建的LVS集群,LVS負(fù)載均衡用戶請求到后端服務(wù)器,Keepalived的作用是檢測web服務(wù)器的狀態(tài),如果有一臺web服務(wù)器死機,或工作出現(xiàn)故障,Keepalived將檢測到,并將有故障的web服務(wù)器從系統(tǒng)中剔除,當(dāng)web服務(wù)器工作正常后Keepalived自動將web服務(wù)器加入到服務(wù)器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復(fù)故障的web服務(wù)器。

下圖是Keepalived的原理圖:

 

SSL負(fù)載均衡

信任是互聯(lián)網(wǎng)的基石,出于安全性的考量,服務(wù)中往往需要SSL的連接。SSL 有兩種認(rèn)證方式:雙向認(rèn)證 SSL 協(xié)議要求服務(wù)器和用戶雙方都有證書;單向認(rèn)證 SSL 協(xié)議不需要客戶擁有CA證書。一般Web應(yīng)用,配置SSL單向認(rèn)證即可。但部分金融行業(yè)用戶的應(yīng)用對接,可能會要求對客戶端(相對而言)做身份驗證。這時就需要做SSL雙向認(rèn)證。

SSL 屬于應(yīng)用層的協(xié)議,所以只能在 7 層上來做,而 HAProxy 也是支持 SSL 協(xié)議的,所以一種方式是只需簡單的讓 HAProxy 開啟 SSL 支持完成對內(nèi)解密對外加密的處理, 但引入 SSL 處理是有額外的性能開銷的(如上面談到的認(rèn)證), 所以 一般采用SSL proxy farm, 典型的架構(gòu)如下:


 

 

壓力和負(fù)載測試

測試負(fù)載的狀況,一般要涉及負(fù)載或壓力測試。

負(fù)載測試是模擬實際軟件系統(tǒng)所承受的負(fù)載條件的系統(tǒng)負(fù)荷,通過不斷增加負(fù)載載(如逐漸增加模擬用戶的數(shù)量)或其它加載方式來觀察不同負(fù)載下系統(tǒng)的響應(yīng)時間和數(shù)據(jù)吞吐量、系統(tǒng)占用的資源等,以檢驗系統(tǒng)的行為和特性,并發(fā)現(xiàn)系統(tǒng)可能存在的性能瓶頸、內(nèi)存泄漏、不能實時同步等問題。

負(fù)載測試更多地體現(xiàn)了一種方法或一種技術(shù)。壓力測試是在強負(fù)載(大數(shù)據(jù)量、大量并發(fā)用戶等)下的測試,查看應(yīng)用系統(tǒng)在峰值使用情況下操作行為,從而有效地發(fā)現(xiàn)系統(tǒng)的某項功能隱患、系統(tǒng)是否具有良好的容錯能力和可恢復(fù)能力。壓力測試分為高負(fù)載下的長時間(如24小時以上)的穩(wěn)定性壓力測試和極限負(fù)載情況下導(dǎo)致系統(tǒng)崩潰的破壞性壓力測試。

壓力測試可以被看作是負(fù)載測試的一種,即高負(fù)載下的負(fù)載測試,或者說壓力測試采用負(fù)載測試技術(shù)。

簡單地,httperf 或者Apache AB 就可以測量HTTP 服務(wù)器的負(fù)載性能。

云服務(wù)的負(fù)載均衡

云時代的到來,使負(fù)載均衡成了平臺級的服務(wù),幾乎所有的云服務(wù)提供商都提供了負(fù)載均衡服務(wù)。下面是阿里云的負(fù)載均衡基礎(chǔ)框架圖:

特別的,qingcloud 的vpc 也是挺有特點的,私有網(wǎng)絡(luò) 用于主機之間互聯(lián),類似于使用交換機(L2 Switch)自組局域網(wǎng)。彈性IP還好,管理路由器就顯得很貼心了。

AWS 的負(fù)載均衡還是業(yè)界典范,官方給出的示意圖如下:

高可用性

高可用性是負(fù)載均衡帶來的另一價值, 即負(fù)載均衡經(jīng)常被用于實現(xiàn)故障轉(zhuǎn)移。當(dāng)一個或多個組件出現(xiàn)故障時,能持續(xù)提供服務(wù)的這些組件都在持續(xù)監(jiān)控中,當(dāng)一個組件沒有響應(yīng),負(fù)載均衡器就會發(fā)現(xiàn)它,并不再向其發(fā)送數(shù)據(jù)。同樣當(dāng)一個組件重新上線,負(fù)載均衡器會重新開始向其發(fā)送數(shù)據(jù)。

SLA 作為高可用性的指標(biāo),一般有3個時間標(biāo)準(zhǔn):99.9%,99.99%,99.999%. 表示不間斷運行的離線時間不超過:

  • 3個9: 8.76 小時
  • 4個9:52.26 小時
  • 5個9:5.26 分鐘

三點兩地的災(zāi)備方案并不是誰都做的起的,有了云服務(wù)就顯得不那么苦難了。下面是阿里云給出的容災(zāi)示意圖,多可用區(qū)部署,機房宕機后,仍能正常工作。

系統(tǒng)的監(jiān)控在系統(tǒng)高可用性上作用很大,個人推薦zabbix。

總體來看, 負(fù)載均衡是系統(tǒng)架構(gòu)和DevOps 中的重要技術(shù),對系統(tǒng)性能影響巨大。當(dāng)然,如果有更高需求的話,就需要考慮硬件的負(fù)載均衡方案了,比如說F5。

【本文來自51CTO專欄作者老曹的原創(chuàng)文章,作者微信公眾號:喔家ArchiSelf,id:wrieless-com】

 

責(zé)任編輯:武曉燕 來源: 喔家ArchiSelf
相關(guān)推薦

2016-12-01 14:16:18

GitSCM配置

2016-12-01 15:03:36

緩存技術(shù)客戶端

2016-12-19 09:43:59

軟件開發(fā)架構(gòu)

2016-12-02 08:55:18

Linux系統(tǒng)

2017-05-18 14:11:22

CRM圖解交付

2016-12-02 08:54:18

Lambda代碼云計算

2017-02-05 16:51:35

網(wǎng)絡(luò)編程網(wǎng)絡(luò)系統(tǒng)

2016-12-01 13:53:41

2016-12-02 09:09:18

MySQL調(diào)優(yōu)數(shù)據(jù)庫

2016-12-06 20:01:56

數(shù)據(jù)架構(gòu)數(shù)據(jù)機器學(xué)習(xí)

2024-01-15 15:11:03

物聯(lián)網(wǎng)5G數(shù)字孿生

2016-12-08 15:52:09

互聯(lián)網(wǎng)數(shù)據(jù)計算

2018-10-17 22:01:06

2017-09-18 08:21:42

碼農(nóng)AI人工智能

2017-03-27 08:45:47

全棧技術(shù)管理

2017-04-17 08:44:43

構(gòu)造函數(shù)線程安全

2017-07-03 08:08:25

負(fù)載均衡分類

2021-04-21 14:56:28

負(fù)載均衡高并發(fā)優(yōu)化技術(shù)架構(gòu)

2011-12-02 22:51:46

Nginx負(fù)載均衡

2018-11-07 10:12:37

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 性福视频在线观看 | 色婷婷综合久久久中字幕精品久久 | 精品一区二区三区免费毛片 | 黄色片在线网站 | 欧美精品一区二区三区在线四季 | 精品一区电影 | 欧美中文在线 | 亚洲成人一区 | 一区视频在线播放 | 国产在线视频在线观看 | 中国美女一级黄色片 | 九九视频在线观看视频6 | 影音先锋欧美资源 | av一区在线 | 久久精品成人 | 国产免费黄网 | 久久日韩粉嫩一区二区三区 | 古装三级在线播放 | 亚洲免费视频在线观看 | 嫩草黄色影院 | 亚洲视频一区在线观看 | 一级美国黄色片 | 亚洲欧美中文日韩在线v日本 | 亚洲电影成人 | 日日摸日日爽 | 亚洲一区中文字幕在线观看 | 97操操 | 日本精品免费在线观看 | 高清av在线 | 中文字幕日韩一区 | 欧美国产视频 | 国产三级一区二区 | 天天操夜夜操免费视频 | 视频一区二区在线观看 | 久久国产视频网站 | 久久久久久国产精品 | 日韩一区二区久久 | 麻豆久久久9性大片 | 成人免费观看男女羞羞视频 | 草草精品| 欧美综合一区 |