1. 摘要
現代的企業級或互聯網系統往往需要進行流量規劃,達成透明多級分流,流量從客戶端發出到服務端處理這個程序里,流經的與功能無關的技術部件有(達成“透明分流”這個目標所采用的工具與手段):客戶端快取、域名服務器、傳輸鏈路、內容分發網路、負載均衡器、服務端快取,透明分流帶來的價值:高可用架構、高并發,
本文主要介紹流量規劃中的網路請求程序程序及:
第一部分:對一次網路請求的程序作簡要介紹,然后介紹自己目前了解到的前端網路組件搭配方式、后端網路組件搭配方式
第二部分:介紹LB負載系統 、vip與rip 的映射關系
第三部分:介紹內網域名決議及公網域名決議
2. 網路請求程序
通用請求程序及請求程序名詞解釋來源于: https://cf.jd.com/pages/viewpage.action?pageId=766717554
2.1 通用請求程序
2.2 請求程序名詞解釋
rip: 真實ip,指虛擬機或容器ip
vip: 虛擬ip,不可跨機房,online申請,負載、自動探活等功能,分公網vip與內網vip
內網: 專指機房內部,嚴格的防火墻策略,內網之間無防火墻,可申請內網vip 提供負載均衡供應用間互訪;內網≠辦公網
辦公網: 辦公區個人電腦網路,通過反向代理訪問內網機房應用
公網: 互聯網用戶網路,通過DNS + 公網vip 訪問內網機房應用
備注(自己理解 ,有可能理解不正確):
公網vip 即公網虛擬ip,虛擬不是說公網上找不到這個ip,虛擬是相對于服務器ip(rip)來說的,vip不直接承擔業務邏輯
公網VIP在公網真實存在、內網vip在公司內網真實存在
2.3 前端網路組件搭配方式
參考鏈接: http://jdthelp.jdos.jd.com/help/bestpractice/multi-web-demo.html
外網訪問需滿足如下圖架構:VIP后面掛 jen-nginx 來代理前端的主應用,jen代理后面掛靜態應用1~N
測驗環境:多個前端專案可能存在下列架構方式: 域名 -> VIP -> JEN代理(根據不同域名訪問不同檔案夾下的檔案)-> 靜態應用
2.4 后端網路組件搭配方式
后端應用從呼叫方式來說分為兩種 (http呼叫 JSF呼叫)
前端應用 ---(協議http或者https)---后端前置應用 --(協議 jsf私有協議)----JSF微服務應用
后端前置應用 -----jsf微服務應用,之間的負載由消費者來決定,所以一般無須關注這兩者之間的負載,
方式1: vip下的負載(LB負載系統) + Nginx
方式1備注:
VIP下可以直接掛載服務器,這里Nginx不是必須的,除非你需要 nginx 提供的功能(除了負載),
如果你僅僅是用nginx來做負載,那么請去除nginx組件,沒有必要加一這個組件,集團的vip的LB已經包含負載功能,不要加重系統的復雜性,
方式2:容器K8S層面的負載
vip提供的LB:
vip提供的LB下是直接掛機器IP,其中多個ip之間沒有分組的概念,并且沒有探活機制,
每次上線需要摘掉負載下的機器,上線完成后,再把機器掛上去
行云部署-高級功能-負載均衡 ( 容器k8s層面的負載 ) 優點:
有機器分組的概念: 按斬訓房或者 機房+機房集群的維度分組后,每個分組申請自己的負載均衡,
具有探活機制: 設定健康探活路徑,針對負載進行探活,每次上線無須摘掉負載下的機器,
3. LB負載系統簡介
其實吧,vip本身就是個ip,沒有多少真正的價值,vip可以理解為是集團LB負載均衡的入口ip,而LB負載均衡才是真正的分流組件,
vip 是系統自動分配復用的(vip資源珍貴,系統分配的vip有可能復用),LB負載均衡有兩種分流規則:
1. 分流規則的實作方式
分流規則兩種實作方式,默認規則、專用規則,
默認規則:面向域名,流量接入到后端集群,此為模板,可選擇應用范圍,
專用規則:面向VIP,可為某VIP獨立指定后端集群, 其中專用規則優先級高,
默認規則、專用規則兩者關系:
| 共同點 | 不同點 |
|---|---|
| 默認規則面向域名的一個埠有且只有一條分流規則 專用規則面向VIP的一個埠有且只有一條分流規則 | 默認規則必須存在; 專用規則優先級高; 專用規則無設定時,繼承默認規則指向的后端 |
3.1 默認規則: 默認分流規則:域名+埠+集群,分流規則唯一性
備注: 系統分配的vip有可能復用
在默認規則中, 假設系統分配的vip都是 111.111.111
域名A (www.a.jdcom)+ 域名的一個埠port(80) 通過配置的 vip (111.111.111) 將請求轉發到 后端集群A,
域名B (www.b.jd.com) + 域名的一個埠port(443) 通過配置的 vip (111.111.111) 將請求轉發到 后端集群B,
3.2 專用規則: 面向vip的一個埠有且只有1條分流規則
備注:(猜測 不確定):專用規則中的vip可能不是復用的,
備注:一個VIP 也可以用多個埠,比如HTTP 是80和443,TCP是2000-2014
4. vip 和 rip的映射關系 (重要 非常重要)
一對一:一個機房,一個vip 對應一個rip
一對多:一個機房,一個vip 對應多個rip
多對多: 多個機房,每個機房的vip對應 其機房下的多個rip
4.1 vip下掛載rip的約定
-
vip(機房入口)是機房維度的,當然如果說vip出問題了,一般情況下就是機房出問題了,這個出現的幾率會比較小,
-
vip是機房維度的,但是vip下掛哪些機器 是由研發人員決定的,因此vip下的機器是有可能跨機房的,但是研發人員應該 根據機房視圖( 機器的機房所在地 )來對應此所在地的機房入口( vip ),應盡可能遵守 這個規定,
4.2 為什么要遵守這個約定呢?
1. 盡可能縮小問題影響的范圍: 如果你VIP下的機器跨機房,如果Vip出問題,導致多個機房的機器都無法接收流量
2. 盡可能匹配斷網演練的目標: 機房斷網演練,估計VIP 也不會讓流量進入到下一層,如果你vip下掛載跨機房的rip,直接讓 機房的斷網演練,變成了 跨機房演練(因為多個機房的機器不會接收到流量)
5. 內網域名決議(機房視圖與機房入口說明)
-
內網域名決議時: vip是根據 機房入口(目前有 廊坊vip 馬駒橋vip 印尼vip) 走的,
-
每個視圖必須決議, 廊坊視圖—>廊坊VIP,馬駒橋視圖—>馬駒橋VIP,其他的視圖—>選擇馬駒橋或者廊坊VIP(必須指向線上可用VIP)
-
為優化機房內訪問,優先選擇本機房VIP,
-
考慮到舊的機房已下架或者正在下架,舊機房優先選擇廊坊、馬駒橋VIP,國外應用優先選擇國外的VIP,
6. 公網域名決議
pop入口 在計算機網路中,pop表示入網點(pop),pop位于網路企業的邊緣外側,是訪問企業網路內部的進入點,外界提供的服務通過pop進入,這些服務包括Internet接入,廣域連接以及電話服務(PSTN),
pop入口 :新應用上線時應該申請入網點(pop)處的vip,
域名決議:
不需要VIP: 直接填寫自己的公網IP
需要VIP:
-
請提前申請POP入口的VIP
-
決議前請線下系結host測驗VIP業務可用性
-
按照運營商對應的POP入口VIP進行決議
7. 總結
簡單的請求程序最實用,實用的請求程序最簡單,
用簡單實用的搭配方式滿足流量分發,不要隨意搭配,增加系統的復雜性,
作者:京東保險 張江濤
來源:京東云開發者
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554110.html
標籤:其他
下一篇:返回列表
