分布式 - 服務器Nginx:一小時入門系列之負載均衡

文章目錄

    • 1. 負載均衡
    • 2. 負載均衡策略
      • 1. 輪詢策略
      • 2. 最小連接策略
      • 3. IP 哈希策略
      • 4. 哈希策略
      • 5. 加權輪詢策略

1. 負載均衡

跨多個應用程序實例的負載平衡是一種常用技術,用于優化資源利用率、最大化吞吐量、減少延遲和確保容錯配置。?使用 nginx 作為非常有效的HTTP負載平衡器,將流量分配到多個應用程序服務器,可以提升Web應用程序的性能,提高擴展性和可靠性。

在這里插入圖片描述

使用 upstream定義一組服務 。

# 啟動ruoyi-admin服務
[root@nginx-dev conf.d]# cd /home/apps
[root@nginx-dev apps]# java -jar ruoyi-admin.jar# 啟動tomcat服務
[root@nginx-dev ~]# /home/apache-tomcat-8.5.81/bin/startup.sh# 在 /etc/nginx/conf.d文件夾下添加nginx配置文件:8003.conf
[root@nginx-dev ~]# cd /etc/nginx/conf.d
[root@nginx-dev conf.d]# vi 8003.conf   
[root@nginx-dev conf.d]# nginx -s reload

8003.conf 配置文件內容:

upstream ruoyi-apps {#不寫,采用輪循機制server localhost:8080;server localhost:8088;
}server {listen 8003;server_name ruoyi.loadbalance;location / {proxy_pass http://ruoyi-apps;}# 請求ie頁面location = /html/ie.html {root  /some/path/static;}# 請求字體文件location ^~ /fonts/ {root  /some/path/static;}# css|js|png|jpg|gif|ico 頁面location ~ \.(css|js|png|jpg|gif|ico) {root /some/path/static;}  
}

2. 負載均衡策略

1. 輪詢策略

upstream ruoyi-apps {#不寫,采用輪循機制server localhost:8080;server localhost:8088;
}

輪詢策略(Round Robin):默認的負載均衡策略,將請求依次分配給每個后端服務器,循環往復。

例如,當請求 nginx 的 8003 端口時,會將請求輪詢轉發給 tomcat 和 ruoyi-admin 兩個后端服務器,即第1次請求會訪問8080端口,第2次請求會訪問8088端口,循環往復。

當訪問 nginx 的 8003 端口時 ,請求會進入 8088 端口的 ruoyi-admin 服務,當填寫完密碼以后點擊登錄,這次請求會進入 8080 端口的 tomcat 服務,因此總是登錄不成功。

在這里插入圖片描述

2. 最小連接策略

最少連接策略(Least Connections):將請求分配給當前連接數最少的后端服務器,以達到負載均衡的目的。

upstream backend {least_conn;server backend1.example.com;server backend2.example.com;
}

請注意,使用輪循機制或最少連接的負載平衡,每個客戶端的請求都可能分發到不同的服務器。不能保證同一客戶端將始終定向到同一服務器。?

3. IP 哈希策略

IP 哈希策略(IP Hash):根據客戶端 IP 地址的哈希值來選擇后端服務器,同一個客戶端的請求總是被分配到同一個后端服務器上。

upstream backend {ip_hash;server backend1.example.com;server backend2.example.com;
}

此方法可確保來自同一客戶端的請求將始終定向到同一服務器,除非此服務器不可用。

4. 哈希策略

通用hash,允許用戶自定義hash的key,key可以是字符串、變量或組合。例如,key可以是配對的源 IP 地址和端口,也可以是 URI,如以下示例所示:?

upstream backend {hash $request_uri consistent;server backend1.example.com;server backend2.example.com;
}

請注意:基于 IP 的哈希算法存在一個問題,那就是當有一個上游服務器宕機或者擴容的時候,會引發大量的路由變更,進而引發連鎖反應,導致大量緩存失效等問題。

假設我們基于 key 來做 hash,現在有 4 臺上游服務器,如果 hash 算法對 key 取模,請求根據用戶定義的哈希鍵值均勻分布在所有上游服務器之間。當有一臺服務器宕機的時候,就需要重新對 key 進行 hash,最后會發現所有的對應關系全都失效了,從而會引發緩存大范圍失效。

在這里插入圖片描述

consistent參數啟用 ??ketama?? 一致哈希算法,如果在上游組中添加或刪除服務器,只會重新映射部分鍵,從而最大限度地減少緩存失效。?

在這里插入圖片描述

5. 加權輪詢策略

加權輪詢策略(Weighted Round Robin):根據后端服務器的權重來分配請求,權重越高的服務器被分配到的請求越多。

upstream my-server {server performance.server weight=3;server app1.server;server app2.server;
}

如上所示,每 5 個新請求將按如下方式分布在應用程序實例中:3 個請求將定向到 performance.server,一個請求將轉到 app1.server,另一個請求將轉到 app2.server。?

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

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

相關文章

【MySQL】如何使用Shared-memory協議(Windows)連接MySQL數據庫

文章目錄 【MySQL】如何使用Shared-memory協議(Windows)連接MySQL數據庫連接MySQL的協議使用Shared-memory協議(Windows)連接MySQL步驟1:確認MySQL服務器已啟用Shared-memory連接啟動Shared-memory連接方法 步驟2:客戶端使用shared-memory連接MySQL服務器…

神經網絡基礎-神經網絡補充概念-55-為什么是ML策略

“ML策略”(Machine Learning Strategies)是指在解決機器學習問題時,采取的一系列方法、技巧和策略。選擇適當的ML策略對于獲得高質量的模型和結果非常重要。以下是為什么要考慮ML策略的一些原因: 問題適應性:不同的機…

2023 最新版網絡安全保姆級指南,從 0 基礎進階網絡攻防工程師

一、網絡安全學習的誤區 1.不要試圖以編程為基礎去學習網絡安全 不要以編程為基礎再開始學習網絡安全,一般來說,學習編程不但學習周期長,且過渡到網絡安全用到編程的用到的編程的關鍵點不多。一般人如果想要把編程學好再開始學習網絡安全往…

Vue實例生命周期中的所有鉤子函數

在 Vue 3 中,實例生命周期的鉤子函數被整合為了兩個主要的階段:Composition API 階段和 Options API 階段。下面是 Vue 3 中的所有生命周期鉤子函數: Composition API 階段: setup //在組件實例創建之前執行,用于設…

centos 之安裝 openssl 1.1.1報錯

源碼make時報錯,可能是系統的perl的版本太低問題。 [rootlocalhost ~]# cpan -a | grep Test::More Test::More 0.92 1.302171 EXODIST/Test-Simple-1.302171.tar.gz [rootlocalhost ~]# cpan -a | grep Text::Template [rootlocalhost ~]# …

Dockerfile小記(持續)

文章目錄 信息新建用戶服務重啟數據庫相關SSH無交互安裝auth.logssh開機自啟 Apache服務配置 信息 Alpine系統 新建用戶 useradd命令參考 RUN apk update \ && apk add shadow \&& useradd -m togie \&& echo togie:12345 | chpasswd \&& &…

nginx負載均衡配置案例

一、nginx代理配置 ## 定義一個集群,名稱叫做load_balancer_testupstream load_balancer_test {#ip_hash是負載均衡策略#ip_hash;#集群下有兩個服務server 192.168.1.233:8087;server 192.168.1.243:8087;}server {#監聽8600端口listen 8600;server_name loc…

Lnton羚通關于PyTorch的保存和加載模型基礎知識

SAVE AND LOAD THE MODEL (保存和加載模型) PyTorch 模型存儲學習到的參數在內部狀態字典中,稱為 state_dict, 他們的持久化通過 torch.save 方法。 model models.shufflenet_v2_x0_5(pretrainedTrue) torch.save(model, "../../data/ShuffleNetV2_X0.5.pth…

vue2.6升級vue2.7(panjiachen升級指南)vue-cli5多頁面應用升級的坑

vue2.7升級指南 vue2.7升級指南 之前的架子使用的是 panjiachen,使用的是 vue2.6.14,現在升級為 vue2.7.x 升級vue/cli vue upgrade 這里推薦使用 vue upgrade 命令自動升級 # 確保安裝全局 vue/cli $ npm install -g vue/cli $ vue upgradeWARN Th…

水庫大壩安全監測MCU,提升大壩管理效率的利器!

水庫大壩作為防洪度汛的重要設施,承擔著防洪抗旱,節流發電的重要作用。大壩的安全直接關系到水庫的安全和人民群眾的生命財產安全。但因為水庫大壩的隱患不易被察覺,發現時往往為時已晚。因此,必須加強對大壩的安全管理。其安全監…

RFID技術助力汽車零配件裝配產線,提升效率與準確性

隨著科技的不斷發展,越來越多的自動化設備被應用到汽車零配件裝配產線中。其中,射頻識別(Radio Frequency Identification,簡稱RFID)技術憑借其獨特的優勢,已經成為了這一領域的重要技術之一。本文將介紹RF…

【SLAM】ORBSLAM34macOS: ORBSLAM3 Project 4(for) macOS Platform

文章目錄 配置ORBSLAM34macOS 版本運行步驟:版本修復問題記錄:編譯 fix運行 fix 配置 硬件:MacBook Pro Intel CPU 系統:macOS Ventura 13.4.1 ORBSLAM34macOS 版本 https://github.com/phdsky/ORB_SLAM3/tree/macOS 運行步驟&…

初識結構體

文章目錄 目錄1. 結構體類型的聲明1.1 結構的基礎知識1.2 結構的聲明1.3 結構成員的類型1.4 結構體變量的定義和初始化 2. 結構體成員的訪問3. 結構體傳參 目錄 結構體類型的聲明結構體初始化結構體成員訪問結構體傳參 1. 結構體類型的聲明 1.1 結構的基礎知識 結構是一些值的…

三維可視化平臺有哪些?Sovit3D可視化平臺怎么樣?

隨著社會經濟的發展和數字技術的進步,互聯網行業發展迅速。為了適應新時代社會發展的需要,大數據在這個社會經濟發展過程中隨著技術的進步而顯得尤為重要。同時,大數據技術的快速發展進程也推動了可視化技術的飛速發展,國內外各類…

四層和七層負載均衡的區別

一、四層負載均衡 四層就是ISO參考模型中的第四層。四層負載均衡器也稱為四層交換機,它主要時通過分析IP層和TCP/UDP層的流量實現的基于“IP端口”的負載均衡。常見的基于四層的負載均衡器有LVS、F5等。 以常見的TCP應用為例,負載均衡器在接收到第一個來…

hive-無法啟動hiveserver2

啟動hiveserver2沒有反應&#xff0c;客戶端也無法連接( beeline -u jdbc:hive2://node01:10000 -n root) 報錯如下 查看hive的Log日志&#xff0c;發現如下報錯 如何解決 在hive的hive_site.xml中添加如下代碼 <property><name>hive.server2.active.passive…

電機故障診斷(python程序,模型為MSCNN結合LSTM結合注意力機制模型,有注釋)

代碼運行環境要求&#xff1a;TensorFlow版本>2.4.0&#xff0c;python版本>3.6.0 1.電機常見的故障類型有以下幾種&#xff1a; 軸承故障&#xff1a;軸承是電機運轉時最容易受損的部件之一。常見故障包括磨損、疲勞、過熱和潤滑不良&#xff0c;這些問題可能導致噪音增…

Hlang--用Python寫個編程語言-判斷與循環

文章目錄 前言語法描述判斷循環詞法解析語法解析定義節點生成節點判斷節點循環節點解釋器處理判斷節點循環處理前言 okey,很好,在上一篇文章當中,我們實現了這個基本的邏輯運算,所以的話,在這里,我們將可以實現到我們的這個判斷和循環了。由于這里的話,我們的操作其實和…

TiDB Bot:用 Generative AI 構建企業專屬的用戶助手機器人

本文介紹了 PingCAP 是如何用 Generative AI 構建一個使用企業專屬知識庫的用戶助手機器人。除了使用業界常用的基于知識庫的回答方法外&#xff0c;還嘗試使用模型在 few shot 方法下判斷毒性。 最終&#xff0c;該機器人在用戶使用后&#xff0c;點踩的比例低于 5%&#xff0…

汽車租賃管理系統/汽車租賃網站的設計與實現

摘 要 租賃汽車走進社區&#xff0c;走進生活&#xff0c;成為當今生活中不可缺少的一部分。隨著汽車租賃業的發展&#xff0c;加強管理和規范管理司促進汽車租賃業健康發展的重要推動力。汽車租賃業為道路運輸車輛一種新的融資服務形式、廣大人民群眾一種新的出行消費方式和…