1. 程式人生 > >新一代負載均衡器服務NLB概述

新一代負載均衡器服務NLB概述

在去年9月份,AWS釋出了託管的網路負載均衡器服務Network Load Balancer,NLB是繼Classic Load Balancer,Application Load Balancer之後,AWS釋出的第三款負載均衡器服務,本文將著重介紹NLB的工作原理,特點以及在使用配置上的注意事項,幫助讀者更好地在自己的業務場景中運用NLB服務。

NLB能夠在極低的延遲下,支援每秒數千萬的請求,在API上相容現有的ALB應用負載均衡器,下面是NLB的一些主要功能和特點:

  • 靜態IP地址

每個NLB在每個可用區中提供單個靜態IP地址,使用者端發往該IP地址的流量會被負載分發到同可用區內的多個後端例項上,使用者可以為NLB在每個可用區中分配固定的彈性IP,如此設計使得NLB能夠被納入企業現有的防火牆安全策略中,並且能夠避免DNS快取帶來的問題。

  • 同可用區內分發流量

客戶端的流量到達NLB在某個可用區提供的IP後,NLB會向相同可用區內的後端例項分發流量,通過避免跨可用區的流量分發能夠獲得更好的延遲效能。

  • 源地址保留

NLB在轉發流量的同時,並不會修改資料包的源IP地址,後端例項無需支援諸如X-Forward-For,proxy協議,就能夠直接從資料包的包頭獲取客戶端的IP,從而很方便地分析客戶端的地理位置等資訊。

  • 長連線支援

NLB內建的容錯機制能夠保證長連線應用的穩定執行,從而更好的貼合諸如IoT,遊戲,訊息應用等業務場景。

  • 故障切換

利用Route 53的健康檢查,NLB支援在一個區域內及跨區域和本地站點實現故障切換。

下面我們來看一下如何在AWS控制檯建立NLB,可以看到,客戶在建立負載均衡器頁面中,目前可以有三種負載均衡器可選,我們選擇NLB。

NLB和其他AWS提供的負載均衡器一樣,支援建立面向internet及internal兩種場景,除此之外,使用者需要配置NLB監聽的埠及所處的子網,如果建立面向internet的NLB,需要注意將NLB放到公有子網中。

考慮NLB本身的冗餘,建議至少選擇2個可用區,同時使用者可以根據需要為NLB在每個可用區繫結彈性IP。

後續的配置與ALB的配置十分類似,使用者需要配置目標組,目標組監聽的協議、埠以及健康檢查等相關配置,目前無論ALB還是NLB都支援將EC2例項及某個IP作為目標,前者實現VPC內部的負載均衡,後者通過IP可以為本地站點的例項提供負載均衡。

這裡選擇例項型別的目標型別,之後需要選擇註冊的例項。

需要注意的是,為了能夠接受外部客戶端的訪問以及健康檢查流量,建議後端例項的安全組做如下設定,如果使用者覺得健康檢查源地址設定VPC CIDR過於寬泛的話,建議可以設定為NLB的私有IP,NLB的私有IP可以在ENI介面通過NLB名字搜尋到相關NLB的ENI來獲取。

除了安全組設定上的考慮,對於面向internet的NLB來說,後端例項收到的流量的源IP地址是處於公網的客戶端IP,對於接收internet流量的這部分後端例項,建議放到公有子網中,即預設路由指向IGW,如果使用者不希望後端例項能夠被外界直接訪問,可以在將後端例項放入公有子網的同時,選擇不分配公網IP,從而保證外界只能通過NLB來訪問到後端例項。

選擇完後端例項後,就可以完成NLB的建立。

NLB對外提供的是一個域名,客戶端通過訪問該域名將流量發給NLB,使用者可以通過設定DNS CNAME記錄來方便客戶端通過自定義的域名來訪問使用者的後端系統。

以上介紹了面向internet的NLB的配置方法,對於面向internal的NLB,使用者可以做類似的配置,這裡不做過多的介紹,只是如果NLB後端對接的是容器業務,並且網路模式是bridge模式,需要做額外的考慮。

這裡先給出結論再解釋相關的原理,對於兩個需要通過NLB互訪的內部容器應用,建議將這兩個應用的容器排程到不同的EC2節點上,對於AWS ECS,使用者可以通過為兩個應用建立不同的ECS Cluster或者在一個ECS Cluster內通過親和性排程演算法實現。

為什麼需要做上述的設定呢?下面解釋下如果將這兩個應用排程到相同的ECS Cluster上會出現什麼問題。

在上面這個場景中,App1和App2使用容器部署在EC2中,App1需要通過NLB來訪問App2,如果網路模式使用bridge,App1的流量在發出所在EC2例項的時候,源IP地址會從App1的容器IP轉換成EC2的IP,如果NLB通過負載分發演算法將流量發往處於相同EC2上的App2容器,NLB會將目的IP轉換成相同的EC2的IP地址,流量到達EC2後,EC2會將目的IP轉換成App2的容器IP,問題在於App2回包的時候,當流量到達EC2 OS層,OS通過查詢路由表發現目的地址是自己,會在OS層面直接處理流量,而不會將流量返回給NLB,導致App1訪問App2失敗。

這個問題是由於NLB的工作原理導致的,NLB在接收到流量後,保持源IP地址不變,通過負載均衡演算法選擇後端例項,並將目的IP轉換成後端例項的IP地址進行流量分發,我們需要在設計上避免上述問題,將App1和App2的容器排程到不同的EC2例項上,從而在根本上避免App1訪問App2的流量的發起和終止在同一臺EC2例項上。

以上我們的介紹了NLB的主要特點,配置方法及常見的配置注意事項,讀者如果感興趣的話,可以通過下面的連結來進一步學習NLB的相關內容:

作者介紹

餘駿,AWS解決方案架構師,負責基於AWS的雲端計算方案架構的諮詢和設計,同時致力於AWS雲服務在國內的應用和推廣。在加入AWS之前,在思科中國擔任系統工程師,負責方案諮詢和架構設計,在企業私有云和基礎網路方面有豐富經驗。

相關推薦

一代負載衡器服務NLB概述

在去年9月份,AWS釋出了託管的網路負載均衡器服務Network Load Balancer,NLB是繼Classic Load Balancer,Application Load Balancer之後,AWS釋出的第三款負載均衡器服務,本文將著重介紹NLB的工作原理,特點以及在使用配置上的

6.閘道器/服務負載衡器/服務過濾器(Zuul)

1.Zuul介紹 zuul是一個閘道器和負載均衡器,在通過ribbon或者feign實現了客戶端負載均衡之後,zuul在服務端實現負載均衡。zuul支援用任何JVM語言來編寫規則和過濾條件。zuul充當了一個代理伺服器承擔內部網路的閘道器的角色。如圖: 2.cmd下啟

LVS(Linux Viretual Server) 負載衡器 + 後端服務

tput IV 方式 hash AD 通信 raid1 持久連接 ash 定義:   LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統。 結構:  一般來說,LVS集群采用三層結構,其主要組成部分為:   A、

負載衡器部署方式和工作原理

硬件負載均衡 f5設備概述負載均衡(Load Balance)由於目前現有網絡的各個核心部分隨著業務量的提高,訪問量和數據流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的服務器設備根本無法承擔。在此情況下,如果扔掉現有設備去做大量的硬件升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提

數據庫水平切分的實現原理解析——分庫,分表,主從,集群,負載衡器(轉)

支付 讀取 dba 我們 課題研究 穩定性 存在 use 根據 第1章 引言 隨著互聯網應用的廣泛普及,海量數據的存儲和訪問成為了系統設計的瓶頸問題。對於一個大型的互聯網應用,每天幾十億的PV無疑對數據庫造成了相當高的負載。對於系統的穩定性和擴展性造成了極大的問題。通過數

負載衡器——LVS

lvs lv-nat lv-dr LVS作為構建集群的一種負載均衡器,由章文嵩先生編寫,是當今世界上公認的最強的負載均衡器;負載均衡器主要適用於主機之間的資源分配太過緊張,系統性能過低,使用負載均衡器可以有效的讓多臺主機一起分擔訪問資源的壓力,由LVS調度器分配由客戶端請求的資源到後端的真實服

LVS負載衡器NAT和DR工作模式詳解

lvs 在試驗之前為了更好理解設置的參數,所以先講解一下命令。 一、lvs配置文件和命令: 程序包:ipvsadm(LVS管理工具) 配置文件:/etc/sysconfig/ipvsadm-config 【rpm -ql ipvsadm 查詢包的具體列表】 -A 在服務器列表中新添加一條新的虛擬服務

Google Maglev 牛逼的網絡負載衡器(轉)

均衡 下載 發送 span 路由器 體系 最重要的 選擇 tcp https://segmentfault.com/a/1190000009565788 Maglev 是什麽 Maglev 是谷歌搞的一個工作在三層(IP層)的網絡負載均衡器, 它是一個運行在普通的

三大主流軟件負載衡器對比(LVS、Nginx、HAproxy)

LVS、Nginx HAproxy LVS: 1. 抗負載能力強,性能高,能達到F5的60%,對內存和CPU資源消耗比較低 2. 工作在網絡4層,通過VRRP協議(僅作代理之用),具體的流量是由linux內核來處理,因此沒有流量的產生。 3. 穩定,可靠性高,自身有完美的熱備方案(K

Haproxy-10萬並發級別負載衡器

haproxyHaproxy第1章 前言首先,我們知道nginx負載均衡集群,LVS負載均衡集群,和haproxy負載集群,這三種集群比較來說,LVS性能最好,但是搭建相對復雜,nginx的upstream模塊支持集群負載,但是對web節點的健康檢查功能不多,性能也沒有haproxy好,這也是haproxy為

lvs keepalived 負載衡器

lvs keepalived lvs keepalived 實現負載均衡 環境 主機名 IP地址 os 軟件 lvs01 172.16.50.104 CentOS 7.4.1708 ipvsadm keepalived master lvs02 172.16.50.111 Cent

請求經過負載衡器後連接數據庫認證報錯

連接數據庫 問題 訪問 共享session 兩臺 臨時 保持 均衡 報錯 問題背景:client-----------LB----------RS(單臺)訪問正常 client-----------LB----------RS(多臺)訪問異常 具體現象:多臺RS訪問會出

負載衡器HAProxy,高可用集群keepalived,keepalived+lvs

BE ID log var def fall 集群 sad 查看 負載均衡器:nginx/haproxy/lvs/F5代理:正向代理:幫助客戶端緩存服務器上的數據反向代理:幫助服務器緩存數據 HAProxy:1、安裝[root@vh04 bin]# yum install

負載衡器

term b16 head 報文 返回 0.10 視頻 2.3 轉發 1.常見的負載均衡器 4層負載均衡軟件 4層負載均衡器基於ip+端口來進行負載均衡。 應用名 說明 F5 硬件負載均衡器,功能很好,但是成本很高 lvs 重量級的四層負載軟件 n

keepalived高可用負載衡器

實現 sbin port iptables for epel源 物理 tcp協議 root 一、集群相關概念簡述 HA是High Available縮寫,是雙機集群系統簡稱,指高可用性集群,是保證業務連續性的有效解決方案,一般有兩個或兩個以上的節點,且分為活動節點及備用節點

主流負載衡器比較

lvs IP負載均衡服務是工作在網路層(修改IP)和傳輸層(修改埠,第四層),比起工作在應用層(第七層)效能要高出非常多。常見的負載方式是LVS和IPVS(IP Virtual Server) LVS (Linux Virtual Server),它是一種叢集技術。 1、組成部分

SDN控制器之OVN實驗四:配置OVN負載衡器

網路拓撲 基於我的上一篇文章,接下來我將介紹OVN的負載平衡特性。 但在開始之前,我們來看看上一個實驗中的配置。 實驗物理網路拓撲:   OVN 邏輯網路拓撲:   OVN 負載均衡器 OVN負載均衡器旨在為OVN邏輯網路空間內的工作負載提

使用nginx作為HTTP負載衡器

跨多個應用程式例項的負載平衡是一種常用技術,用於優化資源利用率,最大化吞吐量,減少延遲並確保容錯配置。 可以使用nginx作為非常有效的HTTP負載平衡器,將流量分配到多個應用程式伺服器,並使用nginx提高Web應用程式的效能,可伸縮性和可靠性。 負載均衡方法 nginx支援以下負載平

Docker Swarm叢集中部署Traefik負載衡器

   一、建立單節點的Docker Swarm叢集 docker swarm init   二、在Swarm叢集中建立一個網路 docker network create --driver=overlay traefik --attachable  

在Rancher 1.6上部署Traefik負載衡器

一、給Traefik主機打標籤 01-給即將部署Traefik的主機節點打上標籤.jpg 02-主機打完traefik_lb標籤後的狀態.jpg 二、在Rancher應用商店中部署Traefik 應用 03-在Rancher應用商店中找到Traefik應用.jpg 04-Traefik負載均