nginx配置集群服務器中的tcp負載均衡器

文章目錄

  • 前言
  • 1. Ubuntu下nginx安裝
  • 2. nginx的tcp負載配置


前言

假設一臺機器支持兩萬的并發量,現在我們需要保證八萬的并發量。首先想到的是升級服務器的配置,比如提高 CPU 執行頻率,加大內存等提高機器的物理性能來解決此問題。但是單臺機器的性能畢竟是有限的。

這個時候我們就可以增加服務器的數量,將用戶請求分發到不同的服務器上分擔壓力,這就是負載均衡。那我們就需要有一個第三方組件充當負載均衡器,由它負責將不同的請求分發到不同的服務器上。這里介紹 Nginx 的負載均衡功能。
在這里插入圖片描述
Nginx作為 tcp 負載均衡模塊的原因:

  1. client的請求按照負載算法分發到具體的業務服務器ChatServer
  2. 能夠ChantServer保持心跳機制,檢測ChatServer故障
  3. 能夠發現新添加的ChatServer設備,方便擴展服務器數量

1. Ubuntu下nginx安裝

在服務器快速集群環境搭建中,都迫切需要一個能拿來即用的負載均衡器,nginx在1.9版本之前,只支持http協議web服務器的負載均衡,從1.9版本開始以后,nginx開始支持tcp的長連接負載均衡,但是nginx默認并沒有編譯tcp負載均衡模塊,編寫它時,需要加入–with-stream參數來激活這個模塊。
nginx編譯加入–with-stream參數激活tcp負載均衡塊

1、安裝包下載
地址:https://nginx.org/download/

2、上傳至Ubuntu中并解壓縮
tar -zxvf nginx-1.16.1.tar.gz

nginx編譯安裝需要先安裝pcre、openssl、zlib等庫。也可以直接編譯執行下面的configure命令,
根據錯誤提示信息,安裝相應缺少的庫即可。

下面的make命令會向系統路徑拷貝文件,需要在root用戶下執行

sudo ./configure -with-stream
sudo make && make install

編譯完成后,默認安裝在了/usr/local/aginx目錄。

cd /usr/local/nginx

在這里插入圖片描述

可執行文件在sbin目錄里面,配置文件在conf日錄里面。

sudo vim ./conf/nginx.conf
sudo ./sbin/nginx -s reload#重讀conf
sudo ./sbin/nginx#啟動

2. nginx的tcp負載配置

在bash中使用

sudo netstat -tanp

查看當前tcp連接情況
在這里插入圖片描述
安裝的nginx默認會啟動監聽,要注意一下他們的端口位置
在events與http之間添加tcp的配置,如下:


#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}# nginx tcp loadbalance config
stream {upstream MyServer {server 127.0.0.1:6000 weight=1 max_fails=3 fail_timeout=30s;server 127.0.0.1:6002 weight=1 max_fails=3 fail_timeout=30s;}server {proxy_connect_timeout 1s;#proxy_timeout 3s;listen 8080;proxy_pass MyServer;tcp_nodelay on;}
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       90;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

其中,tcp部分為

# nginx tcp loadbalance config
stream { #這里的端口指向的是服務器端口upstream MyServer { #要添加多少個服務器,就在下面開放多少個端口server 127.0.0.1:6000 weight=1 max_fails=3 fail_timeout=30s;server 127.0.0.1:6002 weight=1 max_fails=3 fail_timeout=30s;}server {proxy_connect_timeout 1s; #設置代理連接超時時間#proxy_timeout 3s;listen 8080;	#監聽端口,客戶端連接此端口即可,nginx自動處理分配消息給服務器proxy_pass MyServer;	#代理的名字tcp_nodelay on;	}
}

客戶端只需連接nginx配置的監聽端口,即可與服務器進行通信
在這里插入圖片描述

在這里插入圖片描述

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

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

相關文章

【音視頻】RTMP流媒體服務器搭建、推流拉流

服務器:SRS(Simple RTMP Server,?持RTMP、HTTP-FLV,HLS) 推流端:ffmpeg OBS 拉流端:ffplay VLC srs播放器 1 安裝和測試srs流媒體服務器 1.1 安裝srs流媒體服務器 srs官?:https://github.com/ossrs/…

數據治理與數據管理:定義之辯和責任外包的邊界

數據治理與數據管理:定義之辯和責任外包的邊界 最近,在數據領域的技術交流中,一位朋友探討了兩個很有意思的問題。這兩個問題非常典型,也反映了大家在實際工作和學習中常會遇到的困惑:一是關于“數據管理”和“數據治…

Linux 命令如何同時支持文件參數與管道輸入?

文章目錄 Linux 命令如何同時支持文件參數與管道輸入?命令輸入方式與管道機制概述常見輸入控制方式常見使用示例程序實現思路:統一處理輸入的方式判定輸入來源的基本模式為何命令應支持參數與標準輸入? GNU Coreutils wc 源碼解析&#xff1a…

flutter開發音樂APP(簡單的音樂播放demo)

效果如下: 音樂播放界面 鎖屏音樂播放展示 主要使用的插件如下 just_audio : 是一個功能豐富的音頻播放器,適用于Android、iOS、macOS、Web、Linux和Windows平臺。它提供了多種功能,包括從URL、文件、資產或字節流讀取音頻,支持D…

css中盒模型有哪些

標準盒模型(w3c盒模型) 在標準盒模型中,元素的width和height只包括內容區域,不包括內邊距、邊框、外邊距。也就是元素的實際寬高是內容區域加上內邊距、邊框、外邊距。 例如:一個元素的寬度設置為100px,內…

第3篇:請求參數處理與數據校驗

在 Web 開發中,請求參數處理與數據校驗是保障系統穩定性的第一道防線。本文將深入探討 Egg.js 框架中參數處理的完整解決方案,涵蓋常規參數獲取、高效校驗方案、文件流處理等核心功能,并分享企業級項目中的最佳實踐。 一、多場景參數獲取策略…

2025年-redis(p1-p10)

1.redis介紹 (1)基礎:常見的數據結構及命令、jedis的應用和優化、springDataRedis的應用和優化 (2)企業實戰的應用場景:共享session、緩存解決問題、秒殺中的redis應用、社交app中的redis應用、redis特殊結…

【AI模型學習】GPT——從v1到v3

文章目錄 GPT-1GPT vs BERTGPT-2GPT-3Ai代碼 GPT-1 GPT-1(Generative Pretrained Transformer 1)是 OpenAI 在2018年發布的第一個大規模預訓練生成模型。它開創了基于 Transformer 的 預訓練-微調 (pretraining-finetuning) 框架,在自然語言…

數字智慧方案6178丨智慧醫院醫療信息化建設之以評促建(61頁PPT)(文末有下載方式)

資料解讀:智慧醫院醫療信息化建設之以評促建 詳細資料請看本解讀文章的最后內容。 在當今數字化時代,醫療行業正經歷著深刻變革,智慧醫院的建設成為提升醫療服務質量、優化醫療資源配置的關鍵所在。這份智慧醫院醫療信息化建設之以評促建的資…

淺談C# record關鍵字

環境:.net8控制臺 init關鍵字 通常我們會有一個常見的需求就是需要實現一個實例化后不可變的類型. 我通常會如下實現,將類的屬性的set設為私有,這樣只能使用構造函數來實例一個不可變對象. 但是如果內部再聲明一個public的方法還是有可能會將我這個對象改變. internal class…

實時數倉dim層設計的一些疑惑點

0.dim層組件的選擇 dim層存儲要求:需要滿足永久存儲(需要長期保存歷史數據)和支持根據主鍵查詢單條數據明細,所以排除Kafka(時效短); 候選框架:MySQL、Redis、Hive、Doris、HBase …

模型之FIM(Fill-In-the-Middle)補全

文章目錄 模型之FIM(Fill-In-the-Middle)補全什么是FIM(Fill-In-the-Middle)FIM 的工作原理FIM 示例:代碼補全場景常見模型fim 測試deepseek fim阿里completions 接口要判斷模型是否支持特定的特殊標記**1. 模型可以自動推斷生成區域****2. `suffix` 是可選的****3. 模型的…

使用CubeMX新建DMA工程——存儲器到外設模式

目錄 1、新建板級支持包 1、usart.c: 2、修改的地方:在usart.c中添加了這些 3、usart.h: 4、在usart.h中添加了這些: 5、dma.c: 6、dma.h: 2、修改main.c文件 1、在main.c文件中添加頭文件 2、添加外部變量聲明 3、添加簡單延時函數 4、添加…

el-transfer穿梭框數據量過大的解決方案

一:背景 我們這個穿梭框獲取的是項目的全量數據,在左邊大概有5000條,自己測試了一下5000條數據的效果,發現異常的卡頓,本來打算像el-select一樣去解決的(只顯示一部分,在搜索的時候去全量搜索&a…

2025年- H17-Lc125-73.矩陣置零(矩陣)---java版

1.題目描述 2.思路 (1)計算矩陣的行數 (2)計算矩陣的列數 (3)設計一個行列的bool數組 (4)遍歷矩陣(二維數組),如果遇到元素0,則把…

Qt二維碼demo

使用QZXing庫生成的二維碼demo 運行結果 實現代碼 c文件 #include "mainwindow.h" #include "ui_mainwindow.h" #include "src/myqrcodeheader.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui-&…

怪物獵人:世界-冰原10000+mod整合包5月最新更新!

700A大全套精美服裝 800M大全套精美服裝 3月31日更新 新增 新武器 新特效MOD 當前共計5800MOD整合包 好看的發型mod 實用的功能mod 炫酷的武器mod 新服裝新特效新武器實用模組美化,等。 1月14日更新 新增皮膚MOD 500 當前共計2000MOD 1月16日更新 新增超…

華納云:centos如何實現JSP頁面的動態加載

JSP(JavaServer Pages)作為Java生態中常用的服務器端網頁技術,具有動態內容生成、可擴展性強、與Java無縫結合等優勢。 而CentOS作為一款穩定、高效、安全的Linux服務器操作系統,非常適合部署JSP應用。 想要讓JSP頁面實現動態更新加載,避免…

gradle-tasks.register(‘classesJar‘, Jar)解析

在使用gradle作為構建工具的android或者java web項目中,我們經常能遇到以下格式 tasks.register(classesJar, Jar) {from "$buildDir/intermediates/javac/release/classes" // 假設使用 release 構建變體 }artifact sourcesJar使用偽代碼解釋 class Cu…

數據處理1

一、常用數據處理模塊Numpy Numpy常用于高性能計算,在機器學習常常作為傳遞數據的容器。提供了兩種基本對象:ndarray、ufunc。 ndarray具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組。 ufunc提供了對數組快速運算的標準數學函數。 ndar…