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

HA(高可用)就像套娃,像胖子,剝掉一層還有一層

開發 架構
目前HTTP協議,乃至WebSocket協議,乃至采用了MQTT協議的WebSocket協議,都不可避免的使用了Nginx。所謂病從口入,禍從口出。作為入口,Nginx承擔的責任非常的重要。假如某個時刻不能用了,那可真是災難。

[[340893]]

目前HTTP協議,乃至WebSocket協議,乃至采用了MQTT協議的WebSocket協議,都不可避免的使用了Nginx。所謂病從口入,禍從口出。作為入口,Nginx承擔的責任非常的重要。假如某個時刻不能用了,那可真是災難。

如何保證Nginx的高可用呢?這是個問題。不論你用什么樣的方案,到最后總是要歸為單一,很讓人苦惱。

 

所謂的高可用,無非兩種方式。一種方式就是在組件自身上做文章,另外一種方式,就是加入一個中間層。我們通常希望在高可用的時候,同時還能夠負載均衡,典型的貓和狗都想要,貪婪的很。

每當解決不了問題的時候,我們都會加入一個中間層,然后把希望寄托在這個新生的組件上。

如果這個中間層解決不了問題,我們就可以加入另外一個中間層。就這樣一層套一層,到最后系統高可用架構就會變得非常復雜。

DNS保證高可用第一種方式當然是要在DNS上做文章了。通過在DNS上,綁定多個Nginx的IP地址,即可完成高可用。不僅能夠完成高可用,還能順便完成負載均衡。

 

但這玩意有一個致命的問題,那就是故障的感知時間。

我們的瀏覽器在訪問到真正的Nginx之前,需要把域名轉化為真正的IP地址,DNS就是干解析這個動作的,每次需要耗費20-20ms不等。

為了加快解析速度,一般都會有多級的緩存。比如瀏覽器就有DNS的緩存;你使用的PC機上也有這樣的緩存;IPS服務提供商,也會有緩存;再加上有的企業為了加速訪問所自建的DNS服務器,中間的緩存層就更多了。

只有所有的緩存都不命中的情況下,DNS才會查詢真正的IP地址。所以,如果有一臺Nginx當機了,這個故障的感知能力就會特別的差。總有一部分用戶的請求,會落在這臺已經死亡的機器上。

硬件保證高可用我們前面說了。解決不了的問題,就可以加中間層,即使這個中間層是硬件,比如F5。

 

這種架構一般的企業玩不起,只有那些采購有回扣有油水的公司,才會喜歡這個。互聯網中用的很少,就不過多介紹了。

當然,F5同樣有單點的問題。雖然硬件肯定要比軟件穩定上一點,但是總歸是一個隱患。就像Oracle無論再厲害,它還是有出問題的時候,到時候備機是必須的。

有的廠商在賣硬件的時候,推薦你一次買3個!為啥呢?這也有理由。

你的一臺硬件正在服務,有兩臺備份機器。當你服務的這臺機器出現問題時,就可以選取備份機中的其中一臺作為主機,另一臺依然是備機,集群還是高可用的。

這理由真讓人陶醉。按照這個邏輯,碰到傻子,我可以賣出100臺!

主備模式硬的不行,就要來軟的。采用主備的模式,使用軟件來完成切換過程。

 

如圖,使用keepalived組件,通過VRRP協議,即可完成最簡單的高可用配置。

我們把DNS的地址綁定在VIP上,當正在服務的Nginx發生問題,VIP會發生漂移,轉移到另外一臺Nginx上。

可以看到,備份的Nginx,正常情況下是無法進行服務的,它也叫做影子節點,只有主Nginx發生問題的時候才有用。如果你的節點非常多,這種模式下,會有非常大的浪費。

除了浪費,還有一個非常大的問題。那就是,單臺Nginx無論性能多么牛X,總是有上限的。當網卡的流量達到頂峰,接下來何去何從呢?

這種模式肯定是不滿足需求的。

簡單組合模式這個時候,我們就可以配合DNS解析,以及主備模式做文章了。如下圖,DNS解析到兩個VIP上,VIP本身也做了高可用。這樣就能夠縮短故障時間,同時也能夠保證每個組件的高可用。

 

這種架構模式思路是非常清晰的,但依然存在影子節點的浪費。

LVS+KeepAlived+NginxLVS 是 Linux Virtual Server 的簡稱,也就是 Linux 虛擬服務器。現在 LVS 已經是 Linux 標準內核的一部分,從 Linux2.4 內核以后,已經完全內置了 LVS 的各個功能模塊,無需給內核打任何補丁,可以直接使用 LVS 提供的各種功能。

 

LVS工作在OSI模型的第4層:傳輸層,比如TCP/UDP,所以像7層網絡的HTTP協議,它是識別不出來的。也就是說,我們不能拿HTTP協議的一些內容來控制路由,它的路由切入層次更低一些。

如下圖,LVS 架設的服務器集群系統有三個部分組成:

最前端的負載均衡層,用 Load Balancer 表示

中間的服務器集群層,用 Server Array 表示

最底端的數據共享存儲層,用 Shared Storage 表示

 

DR(直接路由)模式可將響應數據包直接返回給用戶瀏覽器,避免負載均衡服務器網卡帶寬成為瓶頸,是目前采用最為廣泛的方式(數據不詳,fullnat模式使用也比較廣泛)。

所以,配合DNS的負載均衡,加上LVS的負載均衡,可以實現雙層的負載均衡和高可用。

如圖,DNS可以將請求綁定在VIP上。由于LVS DR模式的效率非常高,網卡要達到瓶頸也需要非常大的請求量(只有入口流量才走LVS),所以一般通過LVS做nginx的負載均衡就足夠了。如果LVS還有瓶頸,那么就可以在DNS上再做文章。

 

還有哪些挑戰?其實,我們上面談到的這些方案,大多數是在同機房的。如果在多個機房,如何讓用戶選擇最快的節點、如何保證負載均衡,又是一個大的問題。另外,你可以看到數據包經過層層的轉發和協調,還有多種負載均衡算法參與其中,如何保持會話,也是一個挑戰。一般的,四層會話會通過IP地址去實現,七層會話會通過cookie或者頭信息等去實現。

開發人員一般情況下接觸不到這么入口級的東西,但一旦遇到了,可能會受忙腳亂。本文是xjjdog根據一些即有的經驗進行整理,希望你在公司需要一些高可用方案的時候,能夠助你一臂之力。

什么叫方案?你只需要 當時 把你的領導哄好,讓他感覺很認同的樣子就行了。至于要不要做,具體怎么做,那都是后面的事。君不見,扯了這么半天,很多企業其實一個nginx,就可以走天下。

作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高并發世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,進一步交流。

責任編輯:武曉燕 來源: 小姐姐味道
相關推薦

2019-01-18 16:39:08

系統層中間件層應用層

2021-10-29 21:26:39

前端引擎層類型

2025-02-05 09:46:13

OracleDBA投資

2023-07-31 08:00:19

2022-01-11 20:43:16

TCPIP模型

2009-06-10 09:58:14

程序員職場層次

2021-10-26 16:20:34

比特幣區塊鏈加密貨幣

2022-03-15 10:27:40

企業CIOIT人士

2010-11-10 10:39:19

2024-06-20 13:22:13

C++11C++模板

2024-04-11 10:01:29

2019-08-26 10:10:57

數據中心運維宕機

2010-08-02 11:04:25

Flex程序員

2015-03-30 09:48:33

程序員更上一層樓

2010-01-06 09:36:59

2023-12-06 16:50:01

Godot 4.2開源

2022-02-28 18:05:00

程序員編程語言操作系統

2019-08-26 14:53:32

數據中心運維管理宕機

2022-04-20 07:52:01

HTTPTCPWireShark

2013-06-06 06:52:28

Ubuntu 13.0
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.av7788.com| 在线观看一区 | 免费在线观看黄视频 | 午夜精品久久久久99蜜 | 特黄毛片 | 国产精品久久久亚洲 | 日日干综合 | 色综合天天天天做夜夜夜夜做 | 一区二区三区亚洲精品国 | 日韩精品一区二区三区在线播放 | 91精品在线播放 | 久久新视频| 国产一区二区三区在线 | av黄色免费 | 国产在线一区二区 | 中文字幕在线一区 | 91精品久久| 我爱操| 日韩在线免费播放 | 国产一区二区在线91 | 欧美日韩久久久 | 久久久久免费精品国产小说色大师 | 欧美在线视频观看 | 水蜜桃亚洲一二三四在线 | 国产999精品久久久久久 | 亚洲人人舔人人 | 亚洲中午字幕 | 成人在线免费电影 | 亚洲精品日韩在线 | 欧美激情免费在线 | 中文字幕的av| 日本a∨视频 | 国产福利网站 | 亚洲国产成人精品在线 | 一本大道久久a久久精二百 欧洲一区二区三区 | 成人啊啊啊 | av在线播放网址 | 日一区二区 | 国产高清91 | 欧美亚洲另类丝袜综合网动图 | 欧美在线观看免费观看视频 |