【Nginx】Nginx負載均衡

負載均衡:通過反向代理來實現

Nginx的七層代理和四層代理:

七層是最常用的反向代理方式,只能配置在nginx配置文件的http模塊當中?;配置的方法名稱為:upstream模塊,不能寫在server中也不能寫在location中,在http模塊當中是獨立的一個配置

七層代理:代理的是http的請求和響應

客戶端————發起http請求————七層代理(代理服務器)————代理服務器轉發http請求到內部的一組服務器(web集群)

????????過程中客戶端并不知道請求的是代理服務器還是內部服務器,而且通過代理服務器隱藏了內部服務器的ip

????????實際上,客戶端訪問的是代理服務器;請求通過代理服務器轉發給web服務器,web服務器響應;

四層代理:

是基于tcp/ip協議層的代理轉發方式;可以實現基于IP地址和端口進行負載均衡轉發

四層代理無法獲取http請求當中的URL信息,只能對tcp/udp數據包進行轉發;也就是對流量轉發

配置方法:stream;stream不能配置在http模塊中,配置在全局當中,是屬于一個獨立的模塊,不屬于其他任何模塊

1.四層代理和七層代理的區別(面試***)

? ? ? ? 四層代理是基于IP地址和端口號進行的,只負責轉發請求,速度較快

? ? ? ? 四層代理不能進行流量控制,也沒辦法對內容進行過濾

????????七層代理是通過http請求,四層走的是tcp/udp的數據包,轉發的是流量

????????七層代理的特點:基于http協議進行;可以對請求進行深入地解析和處理(流量控制、內容的過濾)

????????四層:適用于需要高效處理大量連接請求的場景:?TCP 和 UDP 協議的負載均衡;

????????七層:適用于對請求進行精確處理和控制的場景:Web 應用程序的負載均衡

2.四層和七層哪個速度更快(面試)

????????四層代理相比七層更快;

????????四層只是流量轉發,不能對請求進行解析和控制;快

????????四層代理是通過內核轉發的流量;快

????????七層代理,需要對請求進行處理和解析;慢

????????七層的 訪問控制、流量處理 是通過用戶態進行的;慢

????????七層代理可以提供更高級的服務和用戶體驗

正向代理:

????????正向代理是面向客戶端的;當客戶端的IP地址被web服務器禁止訪問后,(客戶端)可以通過代理服務器去訪問web服務器;

????????web服務器只會知道是代理服務器的ip訪問的它,而不知道是客戶端

proxy_pass    #配置代理服務器訪問的地址;只能寫在location模塊中
應用:正向代理更多的用在公司內網,公司內員工的主機都通過一個代理服務器訪問互聯網,而互聯網上被訪問的服務器,只知道代理服務器的ip,不知道公司內員工的ip,主要作用:加速,翻墻

反向代理:***

? ? ? ??客戶端直接訪問代理服務器

????????兩者都是通過客戶端訪問代理服務器,代理服務器轉發請求或者流量到后端服務器,后端的web服務器會有多臺,用戶并不知道最終訪問的是哪一臺服務器

????????負載均衡具有:高可用、可擴展、提高可維護性

工作中你是怎么做反向代理的(面試*)

反向代理就是負載均衡,根據場景的并發量來確定負載均衡的算法

并發量小:可以使用默認輪詢,配合最小連接數使用即可

高并發:ip_hash或者url_hash來實現,訪問一次之后,就不會再切換后端web服務器,下一次訪問的就是緩存,速度快、后臺web服務器的請求壓力也會變小

upstream? ? ? ? 基于http實現負載均衡;反向代理;

特點:
http請求的負載均衡方式
沒有緩存
默認為輪詢算法
1.輪詢算法(rr)

會將請求輪流分配給后端服務器,輪詢算法適用于 web服務器 處理能力相近的情況;默認算法,可以不加

vim /usr/local/nginx/conf/nginx.conf#gzip on;upstream ky30 {server 192.168.220.20;server 192.168.220.30;#指定通過代理服務器10,會把http的請求轉發到20或者30上}location / {root    html;index   index.html index.htm;proxy_pass http://ky30;}

2.加權輪詢算法

????????建立在輪詢算法的基礎之上,通過給不同的web服務器分配權重,讓處理能力更強的服務器可以分配到更多的請求;

????????雖然配置了權重值,但是輪詢的結果未必準確

vim /usr/local/nginx/conf/nginx.conf#keepalive_timeout 0;keepalive_timeout 65;#gzip on;upstream ky30 {server 192.168.220.20 weight=2;server 192.168.220.30 weight=3;#通過代理服務器10,轉發http請求時,網權重高的服務器上轉發的次數會更多,權重少的轉發就少}
3.ip_hash算法

????????會根據IP地址計算出一個hash值,使用ip_hash算法,同一個客戶端的請求會被分配到同一個后端服務器,可以保證會話的穩定性;

????????如果后端服務器的數量發生變化,hash值會重新計算,請求的服務器也會發生變化

4.最少連接數算法least_conn

????????可以輪詢,會將請求發送到當前連接數最少的web服務器

????????主要適用于后端服務器處理 任務耗時不同 的情況,避免了所有請求集中在處理能力更強的后端服務器上,可以和加權輪詢配合使用

5.url_hash算法

根據uri地址計算hash值;使用url_hash,相同請求的uri會分配到同一個后端web服務器

vim /usr/local/nginx/conf/nginx.conf#gzip on;upstream ky30 {hash $request_uri consistent;server 192.168.220.20 weught=2;server 192.168.220.30 weight=3;}
負載均衡的核心就是各類算法

????????小場景:并發量很小,默認算法就可以滿足適應條件

????????中等:后端web服務器的處理能力有差異:加權輪詢,和最小連接數配合使用

????????大型并發:使用ip_hash或者url_hash;第一次請求之后會有本地緩存,可以提高后續訪問速度,因為hash算法的原因,請求的后臺web服務器不會發生變化;減輕了后臺服務器的請求壓力

????????ip_hash;后端服務器數量發生變化,請求的服務器也會發生變化

????????url_hash;請求的地址發生變化,請求的服務器也可能會發生變化

stream

默認不帶輪詢;可以使用的輪詢方式

算法:除不支持url_hash外,其他與upstream相同

實驗

1.七層:

http? ? ? ? IP地址

http? ? ? ? 域名

2.四層:

stream

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35014.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35014.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35014.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ZABBIX 6.4的完全安裝步驟

此安裝文檔是我一步一步的驗證過的,按步驟來可以順暢的安成ZABBIX6.4的部署。 Zabbix 主要有以下幾個組件組成: Zabbix Server6.4:Zabbix 服務端,是 Zabbix 的核心組件。它負責接收監控數據并觸發告警,還負責將監控數…

Leetcode

持續更新中。。。。。。。。。。。。。。 day 20230811 /*** 給你一個正方形矩陣 mat&#xff0c;請你返回矩陣對角線元素的和。* <p>* 請你返回在矩陣主對角線上的元素和副對角線上且不在主對角線上元素的和* <p>* 不包括 相交的元素只計算一次* <p>* 輸入&…

(2023Arxiv)Meta-Transformer: A Unified Framework for Multimodal Learning

論文鏈接&#xff1a;https://arxiv.org/abs/2307.10802 代碼鏈接&#xff1a;https://github.com/invictus717/MetaTransformer 項目主頁&#xff1a;https://kxgong.github.io/meta_transformer/ 【注】&#xff1a;根據實驗結果來看&#xff0c;每次輸入一種數據源進行處…

Java項目初始化ES、MYSQL表結構及表數據

一、初始化MYSQL數據 public boolean initMysql() throws Exception {log.info("initMysql.start");//獲取所連接的數據庫名稱String database systemMapper.getDatabase();if (StringUtils.isBlank(database)) {throw new BusinessException("連接數據庫失敗,…

微信小程序時鐘

微信小程序自定義時鐘&#xff0c;模擬翻牌時鐘。1、頁面布局 <view class"date-time-box"><view class"date-box">{{nowDate}}</view><view class"time-box"><view><image class"pic01 {{move[0]?move…

代碼隨想錄算法訓練營第45天|動態規劃part07

8.11 周五 70. 爬樓梯 &#xff08;進階&#xff09; 322. 零錢兌換 279.完全平方數 詳細布置 70. 爬樓梯 &#xff08;進階&#xff09; 題目&#xff1a;一次可爬1或2個臺階&#xff0c;問n個臺階有多少種方式 題解&#xff1a; 1、轉換為完全背包問題&#xff0c;nums[1…

Ajax-AJAX請求的不同發送方式

&#x1f954;&#xff1a;你一定能成為想要成為的人 發送AJAX請求不同方式 發送AJAX請求不同方式1、jQuery發送AJAX請求2、axios發送AJAX請求&#xff08;重點&#xff09;3、fetch發送AJAX請求 發送AJAX請求不同方式 1、jQuery發送AJAX請求 首先需要jquery的js文件&#xf…

Vc - Qt - QToolButton

QToolButton 是 Qt 框架中的一個類&#xff0c;是 QPushButton 的子類。它可以顯示一個可單擊的按鈕&#xff0c;并且可以與彈出菜單、圖標和文本等進行關聯。 QToolButton的一些常見特性和用法包括&#xff1a; 設置文本&#xff1a;使用 setText() 函數設置按鈕上的文本。設置…

webpack 熱更新的實現原理

webpack 的熱更新?稱熱替換&#xff08;Hot Module Replacement&#xff09;&#xff0c;縮寫為HMR。這個機制可以做到不?刷新瀏覽器?將新變更的模塊替換掉舊的模塊。 原理&#xff1a; ?先要知道 server 端和 client 端都做了處理?作&#xff1a; 在 webpack 的 watch…

uniapp點擊輸入框時鍵盤不上推頁面

adjust-position設置為false&#xff0c;然后監聽鍵盤的高度賦值給輸入框bottom 這里還一個非常重要的地方&#xff0c;在根元素設置touchmove.stop.prevent&#xff0c;這樣在ios上頁面就不會滾動&#xff0c;不影響其他組件內部滾動 onReady() {// 監聽鍵盤高度變化&#x…

Redis集群 (三十九)

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 目錄 前言 一、Redis主從復制 1.1 概念 1.2 作用 1.3 缺點 1.4 流程 1.5 搭建 1.6 驗證 二、Reids哨兵模式 2.1 概念 2.2 作用 2.3 缺點 2.4 結構 2.5 搭建 2.6 驗證 三、Red…

confluent-kafka 和kafka-python操作kafka,并封裝成一個類

為了向Kafka集群生產和消費消息&#xff0c;我們可以使用confluent-kafka庫&#xff0c;它是Confluent為Python提供的官方Kafka客戶端。以下是一個簡化的示例&#xff0c;展示如何將Kafka的生產者和消費者操作封裝到一個類中&#xff1a; 首先&#xff0c;確保你已經安裝了所需…

解決nvm安裝后,node生效但npm無效

問題描述 nvm安裝后&#xff0c;node生效但npm無效 清除緩存 C:\Users\cc\AppData\Roaming cc是我的用戶名改成你自己的就行刪除 npm和npm-cache

form表單構造http請求的寫法

from是html的一個標簽&#xff0c;from是html后早http請求的一種方式&#xff0c;它和input標簽密切配合。 from有兩個基本屬性action和method&#xff0c;action就是http請求url中的路徑部分。method就是構造的http請求的方法。 form和input標簽配合構造鍵值對&#xff0c;鍵值…

批量將excel文件合并

要批量合并多個Excel文件&#xff0c;可以按照以下步驟進行操作&#xff1a; 1. 導入所需的Python庫&#xff1a;首先&#xff0c;您需要導入pandas庫來處理Excel文件。 import pandas as pd 2. 定義文件路徑和輸出文件名稱&#xff1a; input_folder "your_input_fo…

如何在Vue中實現模板渲染優化?什么是Vue的雙向數據綁定原理?

1、如何在Vue中實現模板渲染優化&#xff1f; 在Vue中實現模板渲染優化&#xff0c;有以下幾個方法&#xff1a; 使用計算屬性&#xff08;computed properties&#xff09;代替方法&#xff08;methods&#xff09;&#xff1a;計算屬性會在首次渲染時進行計算&#xff0c;并…

數據結構筆記--二叉樹經典高頻題

1--二叉樹的最近公共祖先 主要思路&#xff1a; 最近祖先只有兩種情況&#xff1a;① 自底向上&#xff0c;當兩個目的結點分別在當前結點的左右子樹時&#xff0c;當前結點為兩個目的結點的最近祖先&#xff1b;② 最近祖先與其中一個目的結點相同&#xff0c;則另一個目的結點…

Python-OpenCV中的圖像處理-形態學轉換

Python-OpenCV中的圖像處理-形態學轉換 形態學轉換腐蝕膨脹開運算閉運算形態學梯度禮帽黑帽形態學操作之間的關系 形態學代碼例程 形態學轉換 形態學操作:腐蝕&#xff0c;膨脹&#xff0c;開運算&#xff0c;閉運算&#xff0c;形態學梯度&#xff0c;禮帽&#xff0c;黑帽等…

企業微信 企業內部開發 學習筆記

官方文檔 文檔 術語介紹 引入pom <dependency><groupId>com.github.binarywang</groupId><artifactId>wx-java-cp-spring-boot-starter</artifactId><version>4.5.3.B</version></dependency>核心代碼 推送消息 final WxCp…