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

Keepalived 高可用的三種路由方案

開發
在寫的過程中,發現路由原理其實挺枯燥的,我想把這個主題用通俗易懂、且有趣的方式講解出來,但是一直找不到合適的切入點,一次偶然的對話讓我的靈感迸發。

前言

話說之前大學放暑假的時候,我到一個餐廳打工兩個月,Title 是初級傳菜員。正是這次打工經驗,為我帶來了一波潛藏已久的素材,請聽聽我的故事吧~

本文主要內容如下:

圖片

一、餐廳角色

在餐廳主要有這幾種角色:

  • 服務員:負責記錄客戶已點哪些菜、上菜時間、上菜、劃掉菜。可以將多個服務員都當做客戶端,相對于傳菜員來說。
  • 傳菜員:負責通知廚房走菜、劃菜、傳菜。可以將傳菜員當作 Keepalived 組件
  • 廚師:烹飪、裝盤。可以將廚師當作后臺真實服務器

為什么需要傳菜員這個角色?有了傳菜員這個角色后,發生了什么呢?

  • 服務員需要服務顧客,不需要離開包間去廚房拿菜。(單一職責)
  • 服務員不需要定期到廚房詢問菜是否好了。(解耦)

流程圖如下:

圖片

① 客戶點菜下單。

② 服務員記錄菜名、上菜時間。這里的上菜時間是指客戶要求的上菜時間,因為有些客戶可能想等朋友一起來了再吃。

③ 服務員將一份訂單交給傳菜員,另外一份訂單留在包間。

④ 傳菜員大聲通知多位廚師有哪些菜要做,什么時候開始上菜。

⑤ 廚師準備食材和烹飪。如果缺少食材,廚師還會告訴傳菜員,由傳菜員轉告服務員說這道菜不能做。

⑥ 廚師做好后將菜裝在盤子里,然后遞給傳菜員。

⑦ 傳菜員將訂單上對應的菜劃掉,表示已經做了。

⑧ 傳菜員將菜端給服務員。

⑨ 服務員將菜從訂單上劃掉。

⑩ 服務員將菜端上餐桌。

這個流程簡單來說就是客戶下單->服務員傳單->傳菜員通知->廚師烹飪->傳菜員傳菜->服務員上菜。

上面的流程不正是服務員請求數據,將請求都發給了傳菜員,傳菜員將請求轉發給了廚師,廚師處理完后返回結果。妙啊!!

二、初探 Keepalived 的路由方案

2.1 為什么需要路由方案

上篇我們講到 Keepalived 的負載均衡調度算法,通過這個算法選出某臺真實服務來處理本次客戶端請求。

就好比傳菜員要將要做的菜,告訴其中一個廚師(一般是告訴大廚)。

而如何告訴廚師呢?是用??喇叭??喊,還是??傳呼機??,還是走到他旁邊告訴他?

圖片服務員與廚師對話的方式

對于 Keepalived 來說,選擇了一個真實服務器后,后續還有兩個流程需要梳理下

  • Keepalived 如何將請求轉發給這個服務呢?
  • 服務處理完這個請求后,如何將處理結果返回給客戶端?

上面兩個流程就是 Keepalived 的路由方案要做的事。

Keepalived 有三種路由方案:NAT、TUN、DR。

2.2 配置在哪

具體的配置哪種路由方案在 keepalived.conf 配置文件中,其中有一個 lb_kind 配置,可以配置成 NAT、DR、TUN 三種。目前配置的是 DR 模式。

還有一個配置 lb_algo,這個是配置調度算法的,比如這里配置的 wrr 加權輪詢調度算法。

圖片

2.3 LVS 的結構

上篇我們說到 Keepalived 是利用了 LVS 模塊的功能來實現負載均衡的。那么 LVS 的結構是怎么樣的呢?

分為兩個模塊:前端的負載均衡器(Load Balance,簡稱 LB),后端的多臺真實服務器(Real Server, 簡稱 RS)組成。LB 負責流量轉發,RS 負責處理請求,然后將請求返回。

三、深入理解 Keepalived 的路由方案

3.1 NAT 路由方案

NAT 的全稱是 Network Address Translation,網絡地址轉換。它有兩個功能:

  • 使企業內部的私有 IP 可以訪問外網,
  • 使外部用戶可以訪問位于公司內部的私有 IP 主機。

對于 Keepalived 來說,這種模式就好比餐廳的標準下單上菜模式:多個服務員將訂單數據轉給傳菜員,傳菜員通知廚師進行烹飪,廚師把菜做好后轉給傳菜員,傳菜員負責把菜傳遞給服務員。

如下圖所示,LVS 負載調度器有兩塊網卡,配置了不同的 IP 地址,網卡 eth0 設置為公網 VIP 與外部網絡連通,網卡 eth1 設置為私有 VIP 與內部網絡通過交換設備相互連接,

示例如下:

eth0 網卡 -> 公網 VIP -> 外部網絡
eth1 網卡 -> 私有 VIP -> 交換設備 > 內網網絡

原理圖如下所示:

圖片

① 比如現在 eth0 網卡配置了一個公有 VIP 如 10.1.2.88,客戶端發送的請求都是到這個 Public VIP(目標地址)。

② 主 LVS Router 負責接收請求,將請求的目的地址(Public VIP)替換成 NAT VIP(192.168.56.88)。

③ 這個 NAT VIP 和后端服務器同屬一個局域網,可以相互訪問,請求經過負載均衡調度選擇一個真實服務器。

④ LVS 修改數據包中的目標地址和目標端口為真實服務器的。

⑤ 真實服務器處理完請求后,將應答數據返回給 LVS Router。

⑥ LVS Router 將應答數據的源 IP 地址 NAT VIP 和端口轉換成 Public VIP 和 LVS 的端口,然后轉發給外部網絡的客戶端。

對于客戶端而言,它只和 Public VIP 打交道,并不知道 NAT VIP,更不知道真實服務器的 IP 地址,這個過程也稱為 IP 偽裝。

對于服務員????來說,她只和傳菜員打交道,并不知道廚師??????? 。

1.2 LVS-TUN 路由方案

1.2.1 NAT 方案的瓶頸

如果餐廳的生意非常火爆,一個傳菜員會非常忙,有可能廚師已經把菜做好了,但是傳菜員沒有時間傳給服務員,那么餐廳的瓶頸就是傳菜員了。

如下所示,一個傳菜員對應三個廚師,而且做的菜很多,都需要傳菜員將菜端給包間外的服務員。

圖片

NAT 的路由方案存在瓶頸,由于所有的數據請求及響應的數據包都需要經過 LVS 調度器轉發,如果后端服務數量很多,客戶端訪問流量也很大的話,那么調度器會忙于調度轉發和地址替換等操作。

為了解決 NAT 的性能問題,TUN 路由方案是個比較好的選擇。TUN 方案中,真實服務器處理完結果后,直接返回給客戶端。但是這就要求真實服務器能夠與外部網絡連接。

也就是說廚師做好菜后,廚師直接把菜遞給服務員,不需要經過傳菜員。廚師是對外可見的。

圖片

1.2.2 TUN 詳解

TUN 其實是 tunneling(隧道)的縮寫,而 TUN 路由方案就是基于 IP 隧道的一種技術。

我們熟知的 VPN 技術就是 IP 隧道技術。

IP 隧道其實是一種封裝技術,將一個 IP 報文封裝在另一個 IP 報文中。分為如下兩步:

  • ① 先將原始數據包進行封裝。
  • ② 然后添加新的源地址+端口、新的目標地址+端口。

它可以將原始數據包封裝并添加新的包頭(內容包括新的源地址及端口、目標地址及端口),從而實現將一個目標為調度器VIP地址的數據包封裝,通過隧道轉發給后端的真實服務器(Real Server),通過將客戶端發往調度器的原始數據包封裝,并在其基礎上添加新的數據包頭(修改目標地址為調度器選擇出來的真實服務器的IP地址及對應端口),LVS(TUN)模式要求真實服務器可以直接與外部網絡連接,真實服務器在收到請求數據包后直接給客戶端主機響應數據。

原理圖如下所示:

圖片

TUN 模式的缺點:

隧道模式的RS節點需要合法 IP,這種方式需要所有的服務器支持 IP Tunneling 協議。

1.3 LVS-DR 模式

那么 LVS 的 TUN 路由模式有沒有什么問題呢?

因為 TUN 的方式必須在 LVS 調度器和真實的服務器之間有一個隧道連接,這個創建隧道的過程會對服務器增加負擔。

在餐廳這種場景中,TUN 模式中,廚師是對外可見的,菜好了后直接和服務員對接;而 DR 模式中,廚師不可見,統一被看成是傳菜員。

DR 模式和 TUN 模式的相同之處:

  • 模式中,用戶的請求被調度器負載均衡到真實服務器上,然后真實服務器把響應結果返回給客戶端。
  • 客戶端的請求數據包中目標 IP 為 LVS 的 VIP,源 IP 為客戶端 IP。

DR 模式和 TUN 模式不同之處:

  • DR 模式要求調度器與后端服務器必須在一個局域網內。
  • DR 模式不需要創建 IP 隧道。
  • DR 模式中,VIP 需要在 LVS 調度器與后端所有的服務器間共享。
  • DR 模式中,真實服務器處理完結果后,返回數據包時,設置源 IP 為 VIP 地址,目標 IP 為客戶端 IP。
  • DR 模式中,LVS 調度器和真實服務器在同一物理網段上。同一網段機器數量有限,限制了其應用范圍。

圖片

更細節的內容

負載均衡器和RS都使用同一個IP對外服務但只有 DR(Director Server,可以理解為 LVS 的核心) 對 ARP 請求進行響應,所以 RS (Real Server,真實服務器)對本身這個 IP 的 ARP 請求保持靜默。

也就是說,網關會把對這個服務IP的請求全部定向給 DR。而 DR 收到數據包后根據調度算法,找出對應的 RS,把目的 MAC 地址改為 RS 的 MAC(因為 IP 一致)并將請求分發給這臺 RS 這時 RS 收到這個數據包,處理后直接返回給客戶端。由于負載均衡器要對二層包頭進行改換,所以負載均衡器和RS之間必須在一個廣播域,也可以簡單的理解為在同一臺交換機上。

四、三種模式對比

圖片

推薦 DR 模式。

責任編輯:張燕妮 來源: 悟空聊架構
相關推薦

2018-07-10 08:42:45

Oracle高可用集群

2024-12-24 14:40:08

2011-10-10 09:47:32

HAProxy負載均衡Keepalived

2009-12-09 09:48:38

solaris靜態路由

2017-07-03 18:24:39

MySQL數據冗余

2023-05-15 08:20:56

2019-12-24 14:28:00

KeepalivedNginxTomcat

2019-05-15 10:59:50

開發者技能工具

2022-03-22 10:24:48

Linux開源Elasticsea

2009-11-10 13:19:09

動態路由協議

2009-12-10 15:46:22

動態路由協議

2010-05-25 18:50:22

MySQL安裝

2025-03-31 10:40:52

2020-11-24 10:13:02

Redis集群數據庫

2011-01-18 15:35:59

jQueryJavaScriptweb

2009-11-11 17:40:33

路由器協議

2009-12-11 13:48:47

雙線策略路由

2024-08-07 08:21:05

2024-01-31 12:06:32

PostgreSQL遞歸函數查詢

2024-11-26 07:47:41

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久国产精品 | 亚州精品成人 | 亚洲一区播放 | 亚洲成人一区二区 | 日本又色又爽又黄又高潮 | 男女午夜激情视频 | 91精品久久久久久久久中文字幕 | 亚洲女人天堂成人av在线 | 亚洲精品免费在线观看 | 国产在线精品一区二区三区 | 国产自产c区 | 亚洲看片网站 | 欧美专区在线 | 国产激情自拍视频 | 国产精品女人久久久 | 日韩在线中文 | 激情黄色在线观看 | 91久久久久 | 国产福利在线视频 | 青青久草| 日韩三级免费观看 | 国产精品伦一区二区三级视频 | 超碰人人做 | 日本在线观看视频 | 久久精品视频91 | 日韩一区二区黄色片 | 精品国产乱码久久久久久中文 | 极品销魂美女一区二区 | 国产亚洲精品久久情网 | 欧美激情国产精品 | av一区二区在线观看 | 亚洲欧美日韩系列 | 中文字幕在线观看成人 | 亚洲成人免费av | 北条麻妃一区二区三区在线观看 | 高清一区二区 | 妖精视频一区二区三区 | 97日日碰人人模人人澡分享吧 | 日韩一区二区三区av | 久久亚洲欧美日韩精品专区 | 亚洲精品成人在线 |