什么是負載均衡
在互聯網發展的今天,我們一般會把多臺機器組成一個集群對外提供服務。然而,我們的網站對外提供的訪問入口都是一個的,比如 //www.baidu.com 那么當用戶在瀏覽器輸入 //www.baidu.com 的時候如何將用戶的請求分發到集群中不同的機器上呢,這就是負載均衡在做的事情。
                                 
負載均衡的分類
負載均衡就是一種計算機網絡技術,用來在多個計算機(計算機集群)、網絡連接、CPU、磁碟驅動器或其他資源中分配負載,以達到最佳化資源使用、最大化吞吐率、最小化響應時間、同時避免過載的目的。那么,這種計算機技術的實現方式有多種。大致可以分為以下幾種,其中最常用的是四層和七層負載均衡:
- 四層負載均衡四層負載均衡工作在OSI模型的傳輸層,由于在傳輸層,只有TCP/UDP協議,這兩種協議中除了包含源IP、目標IP以外,還包含源端口號及目的端口號。四層負載均衡服務器在接受到客戶端請求后,以后通過修改數據包的地址信息(IP+端口號)將流量轉發到應用服務器。
- 七層負載均衡七層負載均衡工作在OSI模型的應用層,應用層協議較多,常用http、radius、dns等。七層負載就可以基于這些協議來負載。這些應用層協議中會包含很多有意義的內容。比如同一個Web服務器的負載均衡,除了根據IP加端口進行負載外,還可根據七層的URL、瀏覽器類別、語言來決定是否要進行負載均衡。
常見負載均衡算法
1.1. 輪詢(Round Robin)
請求到達后,將客戶端發送到負載均衡器的請求依次輪流地轉發給服務集群的某個節點。
優點:實現簡單,每個集群節點平均分擔所有的請求。
缺點:當集群中服務器硬件配置不同、性能差別大時,無法區別對待。引出下面的算法。
1.2. 隨機(Random)
隨機選取集群中的某個節點來處理該請求,由概率論的知識可知,隨著請求量的變大,隨機算法會逐漸演變為輪詢算法,即集群各個節點會處理差不多數量的請求。
優點:簡單使用,不需要額外的配置和算法。
缺點:隨機數的特點是在數據量大到一定量時才能保證均衡,所以如果請求量有限的話,可能會達不到均衡負載的要求。
1.3. 加權
加權算法主要是根據集群的節點對應機器的性能的差異,給每個節點設置一個權重值,其中性能好的機器節點設置一個較大的權重值,而性能差的機器節點則設置一個較小的權重值。權重大的節點能夠被更多的選中。它是和隨機、輪訓一起使用的。
優點:可以根據機器的具體情況,分配不同的負載,達到能者多勞。
缺點:需要額外管理加權系數。
1.4. 最小連接數
主要是根據集群的每個節點的當前連接數來決定將請求轉發給哪個節點,即每次都將請求轉發給當前存在最少并發連接的節點。
優點:可以根據集群節點的負載情況來進行請求的動態分發,即機器性能好,處理請求快,積壓請求少的節點分配更多的請求。避免某個節點因為處理超過自身所能承受的請求量而導致宕機或者響應過慢。
1.5. hash
將對請求的IP地址或者URL計算一個哈希值,然后與集群節點的數量進行取模來決定將請求分發給哪個集群節點。它不是真正意義上的負載均衡,在某些意義上也是一個單點服務。
優點:實現簡單
缺點:如果某個節點掛了,會使得一部分流量不可用。
云原生負載均衡介紹
中國電信天翼云云原生負載均衡系統(以下簡稱系統)是基于開源組件LVS、Nginx實現高可用的L4和L7負載均衡服務,高性能支持水平擴展,提供對HTTP、TCP等協議的支持,并為用戶提供易于交互的可視化界面操作,能有效的解決單點故障,可隨業務需要動態線性擴展,并降低了運維的成本,具有方便快捷、操作簡單、安全可靠等特點。
用戶可以根據需要創建四層/七層/四層+七層的負載集群,系統會根據用戶選擇,自動生成負載配置并將負載信息展示于界面上,達到應用的負載均衡效果。
產品功能
(一)提供“L7單實例”、“L4高可用”、“L4+L7標準型” 、“L4+L7進階型”四種產品規格供用戶選擇,每種規格對應不同的負載集群。
(二)提供集群管理功能,可查看所創建集群詳細信息并修改現有集群配置。
(三)提供實例管理功能,每一個實例可創建多個監聽,相應的可配置多個不同的負載策略,達到所需負載效果,同時提供實例拓撲圖方便用戶查看。
(四)提供zookeeper(以下簡稱zk)管理功能,能自動發現通過zk注冊上來的應用,對應用信息進行查看和管理。
產品特點
- 簡單易用——提供可視化管理界面供用戶使用,操作簡單易懂,實時查看各節點狀態,輕松完成負載均衡配置,達到應用負載分發效果
- 高穩定架構——基于四層/七層負載均衡模式構建負載均衡集群,實現應用的負載分發與高可用
- 高可用性——主從機器同時運作避免發生單點故障,集群架構模式部署無單點,各節點分攤流量,同時具備健康檢查等功能,實時檢測服務狀態
- 可擴展性——支持負載均衡器自身的橫向擴展;支持應用集群的動態伸縮
- 應用自動探測——支持應用自動探測的功能,應用發布和升級自動伸縮擴展;支持后端應用健康檢查,自動剔除/恢復后端應用