欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx使用ngx_http_upstream_module實(shí)現(xiàn)負(fù)載均衡功能示例

 更新時(shí)間:2022年08月04日 16:33:27   作者:丶重明  
本文主要介紹了Nginx使用ngx_http_upstream_module實(shí)現(xiàn)負(fù)載均衡功能示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

負(fù)載均衡介紹

什么是負(fù)載均衡

負(fù)載均衡(Load Balance),意思是將負(fù)載(工作任務(wù),訪問請求)進(jìn)行平衡、分?jǐn)偟蕉鄠€(gè)操作單元(服務(wù)器,組件)上進(jìn)行執(zhí)行。

為什么需要負(fù)載均衡

當(dāng)單臺web服務(wù)器直接面向用戶,可能要承載著大量的并發(fā)請求,單臺服務(wù)器可能難以負(fù)荷,我們需要使用多臺web服務(wù)器組成一個(gè)集群,利用Nginx負(fù)載均衡功能,將請求分發(fā)給不同的后端服務(wù)器,實(shí)現(xiàn)負(fù)載的流量分發(fā),提升整體性能、以及系統(tǒng)的容災(zāi)能力。

  • 負(fù)載均衡與代理有什么區(qū)別

代理是代理一臺服務(wù)器基于URI調(diào)度,調(diào)度到不同功能的應(yīng)用節(jié)點(diǎn)

負(fù)載均衡是將客戶端請求通過proxy_pass代理至一組upstream資源池

  • 實(shí)現(xiàn)負(fù)載均衡場景

實(shí)現(xiàn)負(fù)載均衡功能需要使用兩個(gè)模塊:

  • proxy_pass:代理模塊
  • upstream:虛擬資源池

示例:一個(gè)官方的的負(fù)載均衡展示

upstream backend {
? ? server backend1.example.com ? ? ? weight=5;
? ? server backend2.example.com:8080;
? ? server unix:/tmp/backend3;

? ? server backup1.example.com:8080 ? backup;
? ? server backup2.example.com:8080 ? backup;
}

server {
? ? location / {
? ? ? ? proxy_pass http://backend;
? ? }
}

示例:自己完成一個(gè)小例子

upstream node {
    server 192.168.10.3:80;
    server 192.168.10.4:80;
}
server {
    listen 80;
    server_name www.yyang.com;
    location / {
        proxy_pass http://node;
        include prxoy_params;
    }
}

負(fù)載均衡調(diào)度算法

輪詢調(diào)度

按順序逐一分配到不同的后端節(jié)點(diǎn),也是默認(rèn)算法。(簡單來說就是1:1:1)

加權(quán)輪詢
考慮到不同服務(wù)器的性能不同,給予節(jié)點(diǎn)不同的權(quán)值,使其接收到相應(yīng)的權(quán)值請求數(shù)

server 192.168.10.3:80 weight=3;
server 192.168.10.4:80 weight=1;

以上這個(gè)例子是說每4個(gè)請求會分配給10.3三個(gè),10.4一個(gè),以此循環(huán)。

ip_hash

根據(jù)用戶請求的IP,對該IP進(jìn)行hash運(yùn)算,根據(jù)運(yùn)算的值將請求分配給后端特定的一臺節(jié)點(diǎn)進(jìn)行處理。

取值范圍為ipv4地址的前三個(gè)8位或ipv6的整個(gè)地址作為哈希鍵,確保來自從一個(gè)客戶端的IP始終傳遞給同一臺服務(wù)器,除非次服務(wù)器不可用。(簡單來說就是172.16.20.1與172.16.20.2取前三個(gè)8位都是172.16.20)

ip_hash運(yùn)算公式:hash(ip)%node_counts=index

ip_hash帶來的問題:
大量同一IP的請求會造成某個(gè)節(jié)點(diǎn)流量過大
如果臨時(shí)下線一臺節(jié)點(diǎn),會重新計(jì)算hash值,建議使用down狀態(tài)

示例:注意ip_hash與權(quán)重不可同時(shí)使用

ip_hash;
server 192.168.10.3:80;
server 192.168.10.4:80;

一致性hash

為了避免上述問題,所以誕生了一致性hash,使用取模的方式,但不對服務(wù)器節(jié)點(diǎn)數(shù)量取模,而是對2的32次方取模,hash函數(shù)值為0~2^32-1。(形成一個(gè)虛擬圓環(huán),用戶請求會發(fā)給順時(shí)針相鄰的節(jié)點(diǎn))
有一個(gè)問題:如果后端節(jié)點(diǎn)較少可能會造成數(shù)據(jù)傾斜,所以一致性hash引入了虛擬節(jié)點(diǎn)機(jī)制,即對每個(gè)服務(wù)器計(jì)算多個(gè)哈希,每個(gè)計(jì)算結(jié)果位置都放置一個(gè)虛擬節(jié)點(diǎn)。
如果我們想使用ip_hash,但是計(jì)算公式使用一致性hash,該怎么做?

hash $remote_addr consistent;
server 192.168.10.3:80;
server 192.168.10.4:80;

url_hash

根據(jù)用戶的url進(jìn)行hash取模,根據(jù)運(yùn)算值,將請求分配給一臺特定的后端服務(wù)器。clent——nginx——url_hash——cache1——app

1.用戶請求nginx負(fù)載均衡,通過url算法,請求調(diào)度至cache1
2.cache1沒有數(shù)據(jù),會向后端獲取,返回?cái)?shù)據(jù),并將數(shù)據(jù)緩存
3.當(dāng)其他用戶訪問相同url時(shí),調(diào)度器依然會調(diào)度到cache1節(jié)點(diǎn)
4.cache1會直接將數(shù)據(jù)返回

hash $request_uri consistent;
server 192.168.10.3:80;
server 192.168.10.4:80;

least_conn

哪臺服務(wù)器的連接數(shù)最少,就將請求調(diào)度到這臺服務(wù)器

least_conn;
server 192.168.10.3:80;
server 192.168.10.4:80;

負(fù)載均衡后端節(jié)點(diǎn)狀態(tài)

down

將服務(wù)器節(jié)點(diǎn)標(biāo)記為不可用狀態(tài),一般用于停機(jī)維護(hù)。

server 192.168.10.3:80 down;
server 192.168.10.4:80;

backup

備用節(jié)點(diǎn),正常情況不會調(diào)度到此節(jié)點(diǎn);當(dāng)正常工作節(jié)點(diǎn)全部不可用時(shí),會啟用此節(jié)點(diǎn);當(dāng)節(jié)點(diǎn)恢復(fù)時(shí)此節(jié)點(diǎn)會繼續(xù)恢復(fù)備用狀態(tài)。

server 192.168.10.3:80;
server 192.168.10.4:80;
server 192.168.10.5:80 backup;

max_conns

用來限制每個(gè)后端節(jié)點(diǎn)接收到的最大的TCP連接數(shù),如果超出限制就會拋出錯(cuò)誤。

server 192.168.10.3:80 max_conns=10;
server 192.168.10.4:80 max_conns=10;

一臺可以連接10.兩臺是20,超過20就會出錯(cuò)。

keepalived

與后端服務(wù)器激活緩存,也就是長鏈接,提升網(wǎng)站吞吐量。
默認(rèn)不啟用此功能,當(dāng)有請求時(shí),會建立連接,維護(hù)連接,關(guān)閉連接,所以會存在網(wǎng)絡(luò)消耗;但是如果所有連接都緩存了,當(dāng)連接空閑了又會占用其他系統(tǒng)資源,所以可以使用keepalived參數(shù)。

server 192.168.10.3:80;
server 192.168.10.4:80;

keepalived 32; ? # 最大空閑連接數(shù)的個(gè)數(shù)
keepalived_timeout 100s; # 空閑連接的超時(shí)時(shí)間

# 需要配合以下兩個(gè)參數(shù)使用

proxy_http_version 1.1;
proxy_set_header connection "";

max_fails與fail_timeout

max_fails=2:服務(wù)器通信失敗兩次,認(rèn)為服務(wù)器不可用
fail_timeout=5s:服務(wù)器通信失敗后,每5秒探測一次服務(wù)器是否恢復(fù)正常。
在fail_timeout設(shè)定時(shí)間內(nèi),與服務(wù)器連接失敗次數(shù)達(dá)到max_fails數(shù)量,則認(rèn)為服務(wù)器不可用。
如果不設(shè)置的話默認(rèn)是探測一次,間隔10s。

server 192.168.10.3:80 max_fails=2 fail_timeout=5s;
server 192.168.10.4:80 max_fails=2 fail_timeout=5s;

這部分就到這,其他內(nèi)容放在之后。

到此這篇關(guān)于Nginx使用ngx_http_upstream_module實(shí)現(xiàn)負(fù)載均衡功能示例的文章就介紹到這了,更多相關(guān)Nginx 負(fù)載均衡內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux部署Nginx詳細(xì)圖文教程

    Linux部署Nginx詳細(xì)圖文教程

    這篇文章主要給大家介紹了關(guān)于Linux部署Nginx的相關(guān)資料,Nginx 是一個(gè)高性能的HTTP和反向代理web服務(wù)器,Nginx是一款輕量級的Web服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,需要的朋友可以參考下
    2024-01-01
  • Nginx實(shí)現(xiàn)404錯(cuò)誤自動(dòng)跳轉(zhuǎn)到首頁的配置過程

    Nginx實(shí)現(xiàn)404錯(cuò)誤自動(dòng)跳轉(zhuǎn)到首頁的配置過程

    當(dāng)用戶在訪問網(wǎng)站的過程中遇到404錯(cuò)誤時(shí),通常情況下應(yīng)該顯示一個(gè)友好的錯(cuò)誤頁面,而不是僅僅顯示一個(gè)簡單的錯(cuò)誤提示,在Nginx中,可以通過配置來實(shí)現(xiàn)404錯(cuò)誤自動(dòng)跳轉(zhuǎn)到首頁的功能,下面將詳細(xì)介紹如何進(jìn)行配置,需要的朋友可以參考下
    2023-12-12
  • 如何實(shí)現(xiàn)Nginx同一端口同時(shí)支持http與https協(xié)議

    如何實(shí)現(xiàn)Nginx同一端口同時(shí)支持http與https協(xié)議

    最近有一個(gè)需求,需要讓一個(gè)端口的http服務(wù)支持https訪問,本文就來介紹一下如何實(shí)現(xiàn)Nginx同一端口同時(shí)支持http與https協(xié)議,感興趣的可以了解一下
    2023-11-11
  • Nginx限流和黑名單配置的策略

    Nginx限流和黑名單配置的策略

    這篇文章主要介紹了Nginx限流和黑名單配置,Nginx的限流主要是兩種方式,限制訪問頻率和限制并發(fā)連接數(shù),Nginx?按請求速率限速模塊使用的是漏桶算法,即能夠強(qiáng)行保證請求的實(shí)時(shí)處理速度不會超過設(shè)置的閾值,感興趣的朋友跟隨小編一起看看吧
    2022-05-05
  • 一些優(yōu)化Nginx服務(wù)器的技巧簡介

    一些優(yōu)化Nginx服務(wù)器的技巧簡介

    這篇文章主要介紹了一些優(yōu)化Nginx服務(wù)器的技巧簡介,包括對HTTP模塊和Events模塊的配置建議,需要的朋友可以參考下
    2015-06-06
  • Nginx使用Lua模塊實(shí)現(xiàn)WAF的原理解析

    Nginx使用Lua模塊實(shí)現(xiàn)WAF的原理解析

    waf是通過執(zhí)行一系列針對HTTP/HTTPS的安全策略來專門為Web應(yīng)用提供保護(hù)的一款產(chǎn)品,本文重點(diǎn)給大家介紹Nginx使用Lua模塊實(shí)現(xiàn)WAF的原理,需要的朋友參考下吧
    2021-09-09
  • 在Linux中查看Apache或Nginx服務(wù)狀態(tài)的詳細(xì)步驟

    在Linux中查看Apache或Nginx服務(wù)狀態(tài)的詳細(xì)步驟

    在Linux中,查看Apache或Nginx服務(wù)的狀態(tài)通常涉及到使用系統(tǒng)管理工具或特定于這些Web服務(wù)器的命令,以下是如何查看Apache和Nginx服務(wù)狀態(tài)的詳細(xì)步驟,需要的朋友可以參考下
    2024-03-03
  • 淺談nginx反向代理中神奇的斜線

    淺談nginx反向代理中神奇的斜線

    這篇文章主要介紹了淺談nginx反向代理中神奇的斜線,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • Centos 6.5 64位中Nginx詳細(xì)安裝部署教程

    Centos 6.5 64位中Nginx詳細(xì)安裝部署教程

    Nginx是一個(gè)web服務(wù)器也可以用來做負(fù)載均衡及反向代理使用,目前使用最多的就是負(fù)載均衡,具體簡介我就不介紹了百度一下有很多,下面直接進(jìn)入安裝步驟,需要的朋友可以參考下
    2017-08-08
  • CentOS環(huán)境下Nginx配置SSL證書實(shí)現(xiàn)https請求詳解

    CentOS環(huán)境下Nginx配置SSL證書實(shí)現(xiàn)https請求詳解

    這篇文章主要為大家介紹了Nginx實(shí)戰(zhàn)-配置SSL證書(CentOS環(huán)境),實(shí)現(xiàn)https請求過程步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評論