Nginx幾種負載均衡方式介紹

来源:https://www.cnblogs.com/aibianchengya/archive/2022/09/14/16693739.html
-Advertisement-
Play Games

前言 想必在linux上寫過程式的同學都有分析進程占用多少記憶體的經歷,或者被問到這樣的問題——你的程式在運行時占用了多少記憶體(物理記憶體)? 通常我們可以通過top命令查看進程占用了多少記憶體。這裡我們可以看到VIRT、RES和SHR三個重要的指標,他們分別代表什麼意思呢? 這是本文需要跟大家一起探討的 ...


Nginx幾種負載均衡方式介紹

前言

負載均衡就是Nginx將請求分攤到不同的伺服器中,保證服務的可用性,緩解服務壓力,保證服務的響應速度,即使某一個應用服務不可用,也可以保證業務的正常進行,並且方便對伺服器進行擴容縮容。負載均衡軟體有很多,例如LVS、HAProxy等,今天我們僅講解Nginx負載均衡常見的幾種策略。

image-20220914144709436

負載均衡策略

輪詢(Nginx自帶、預設)

該策略是Nginx預設的負載均衡策略,每一個客戶端請求按時間順序輪流分配到不同的伺服器上,如果後端服務不可以用,會自動過濾掉。

upstream my_test_server {
 	server 192.168.0.100:8080;
 	server 192.168.0.101:8080;
}

weight 權重(Nginx自帶)

weight代表權重的意思,用於指定輪詢的幾率,預設權重都是1,可以手動設置調整,權重越高,被分配的次數越多,weight權重和訪問比例是成正比的,用於解決後端伺服器性能不均衡時,調整訪問比例。

upstream my_test_server {
 	server 192.168.0.100:8080 weight=1;
 	server 192.168.0.101:8080 weight=2;
 	server 192.168.0.102:8080 weight=3;
}

ip_hash(Nginx自帶)

ip_hash是將每個請求按照訪問ip的hash結果進行分配,這種方式可以保證同一個用戶會固定訪問一個後端伺服器。優點:可以保證session會話,解決伺服器之間session不能共用的問題。

upstream my_test_server {
	ip_hash;
 	server 192.168.0.100:8080;
 	server 192.168.0.101:8080;
}

least_conn(Nginx自帶)

將請求轉發給連接數較少的後端伺服器。每個後端伺服器配置可能不同,處理的請求也有可能不同,對於處理的請求有快有慢,least_conn是根據後端伺服器的連接情況,動態的選擇連接數量較少的一臺伺服器來處理當前的請求。

upstream my_test_server {
	least_conn;
 	server 192.168.0.100:8080;
 	server 192.168.0.101:8080;
}

fair(第三方)

fair是按照伺服器端的響應時間來分配請求,響應時間短的伺服器優先分配。第三方的負載均衡策略需要安裝第三方的插件。

upstream my_test_server {
	fair;
 	server 192.168.0.100:8080;
 	server 192.168.0.101:8080;
}

url_hash(第三方)

url_hash是根據url的hash結果進行分配請求,每一個url會固定到同一個伺服器上,配合緩存使用,可以減少不必要的下載和資源時間的浪費。每次同一個url請求到達同一個伺服器上,第一次載入後放入緩存,後面再次請求,直接取緩存資源。如果不採用url_hash,可能會導致請求到達不同的伺服器,資源出現重新載入的情況。第三方的負載均衡策略需要安裝第三方的插件。

upstream my_test_server {
	hash $request_uri;
 	server 192.168.0.100:8080;
 	server 192.168.0.101:8080;
}

配置

在conf文件中配置上述負載均衡配置後,需要在server塊中進行配置使用。

upstream my_test_server {
	ip_hash;
 	server 192.168.0.100:8080;
 	server 192.168.0.101:8080;
}
server {
  listen				80;
  server_name	   localhost;
  location / {
       proxy_pass	htttp://my_test_server;
       proxy_set_header		Host $proxy_host;
       proxy_set_header		X-Real-IP $remote_addr;
       proxy_set_header		X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

如有侵權請立即與我們聯繫,我們將及時處理,聯繫郵箱:[email protected]

原文鏈接:https://monkey.blog.xpyvip.top/archives/nginx-fu-zai-jun-heng


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 摘要:本文主要講述如何進行圖像量化處理和採樣處理及局部馬賽克特效。 本文分享自華為雲社區《[Python圖像處理] 二十.圖像量化處理和採樣處理及局部馬賽克特效》,作者: eastmount。 本文主要講述如何進行圖像量化處理和採樣處理及局部馬賽克特效。 一.圖像量化處理 圖像通常是自然界景物的客觀 ...
  • 1.推導式套路 除了最簡單的列表推導式和生成器表達式,其實還有字典推導式、集合推導式等等。 下麵是一個以列表推導式為例的推導式詳細格式,同樣適用於其他推導式。 variable = [out_exp_res for out_exp in input_list if out_exp == 2] out ...
  • 當面試官問你,“什麼是令牌桶限流演算法”! 你知道要怎麼回答,才能獲得面試官的青睞嗎? 大家好,我是Mic,一個工作了14年的Java程式員。 關於這個問題,面試官想考察哪些緯度?我們又該怎麼回答呢? 問題解析 限流策略,是在高併發流量下保護系統穩定性的一種策略。 所以這個問題,主要是互聯網公司會去考 ...
  • 一、argparse簡介 argparse 是 python 自帶的命令行參數解析包,可以用來方便的服務命令行參數,使用之前需要先導入包 import argparse 二、簡單案例 簡單使用,創建一個名為test.py的文件 # 導入 argparse 模塊 import argparse # 創 ...
  • 在實際業務中,當後臺數據發生變化,客戶端能夠實時的收到通知,而不是由用戶主動的進行頁面刷新才能查看,這將是一個非常人性化的設計 ...
  • 【Shashlik.EventBus】.NET 事件匯流排,分散式事務最終一致性 簡介 github https://github.com/dotnet-shashlik/shashlik.eventbus 各位爺高興了給個star唄。 分散式事務、CAP定理、事件匯流排,在當前微服務、分散式、集群大行 ...
  • 閱讀須知:本文為入門介紹、指引文章,所示代碼皆為最簡易(或僅為實現功能)的演示示例版本,不一定切實符合個人(企業)實際開發需求。 一、DbContext生存期 DbContext 的生存期從創建實例時開始,併在釋放實例時結束。 DbContext 實例旨在用於單個工作單元。這意味著 DbContex ...
  • 1. 文件系統:用來存儲、組織、管理文件的一套方式、協議 2. 文件 文件的屬性:i-node唯一表示一個文件的存在與否 文件的內容 3. Linux系統如何實現文件的操作? 硬體層: inode(屬性) >文件的內容 Linux內核: struct inode{}用來描述一個文件的屋裡inode的 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...