欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Linux培訓(xùn)之Nginx負(fù)載均衡TCP/UDP流

2019-07-04 14:10:03 2640瀏覽

今天千鋒扣丁學(xué)堂Linux培訓(xùn)老師給大家分享一篇關(guān)于Nginx負(fù)載均衡之TCP/UDP流的詳細(xì)介紹,首先負(fù)載均衡是指在多個(gè)后端服務(wù)器之間有效地分配網(wǎng)絡(luò)流量,下面我們一起來看一下吧。



從NGINXPlusR5[1]版本開始可以代理和負(fù)載均衡傳輸控制協(xié)議(TransmissionControlProtocol,TCP)通信。TCP是許多流行應(yīng)用程序和服務(wù)的協(xié)議,如LDAP、MySQL和RTMP。

從NGINXPlusR9[2]版本開始可以代理和負(fù)載平衡UDP流量。用戶數(shù)據(jù)報(bào)協(xié)議(UserDatagramProtocol,UDP)是許多流行的非事務(wù)性應(yīng)用程序的協(xié)議,如DNS、syslog和RADIUS。

反向代理

基礎(chǔ)條件

需要使用ngx_stream_core_module模塊,該模塊從版本1.9.0開始可用。這個(gè)模塊在默認(rèn)情況下是不構(gòu)建的,需使用--with-stream配置參數(shù)來啟用它。如下配置:

./configure  --prefix=/usr/local/nginx --with-stream 

配置反向代理

配置反向代理,以便NGINX打開資源,將來自客戶端的TCP連接或UDP數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)到upstream組或代理服務(wù)器。

A.配置反向代理之前,看一下ngx_stream_core_module模塊中幾個(gè)元素的語法:

stream塊,在配置文件中是頂級塊,和http塊屬于同一級別,語法如下:

Syntax:    stream { ... } 
Default:    — 
Context:    main 

server塊,配置一個(gè)服務(wù)。在頂級stream{}上下文中為每個(gè)虛擬服務(wù)器定義一個(gè)或多個(gè)服務(wù)器配置塊。語法如下:

Syntax:    server { ... } 
Default:    — 
Context:    stream 

listen指令,設(shè)置服務(wù)器將接受連接的套接字的地址和端口。可以只指定端口。地址也可以是主機(jī)名,例如:

Syntax:    listen address:port [ssl] [udp] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]]; 
Default:    — 
Context:    server 

示例如下:

listen 127.0.0.1:12345; 
listen *:12345; 
listen 12345;     # same as *:12345 
listen localhost:12345; 

listen指令在此默認(rèn)協(xié)議是TCP協(xié)議,對于UDP流,需要指定udp參數(shù),如下:

listen 12345 udp; 

B.使用ngx_stream_proxy_module模塊(默認(rèn)是編譯進(jìn)來的)的proxy_pass指令配置代理,proxy_pass指令語法:

Syntax:    proxy_pass address; 
Default:    — 
Context:    server 

設(shè)置被代理服務(wù)器的地址。地址可以定義為一個(gè)域名或IP地址和一個(gè)端口號(hào):

proxy_pass localhost:12345; 

或一個(gè)UNIX-domainsocket路徑:

proxy_pass unix:/tmp/stream.socket;

C.如果代理服務(wù)器有多個(gè)網(wǎng)絡(luò)接口,可以配置NGINX使用特定的源IP地址去連接upstream服務(wù)器。這可能很有用,當(dāng)一個(gè)代理服務(wù)器在nginx后面,并配置了接受來自特定IP網(wǎng)絡(luò)或IP地址范圍的連接。

使用ngx_stream_proxy_module模塊的proxy_bind指令,其語法:

Syntax:    proxy_bind address [transparent] | off; 
Default:    — 
Context:    stream, server 
#此指令在1.9.2版本中開始使用。 

從指定的本地IP地址向被代理服務(wù)器發(fā)起外部連接。特殊值off取消從上層配置中繼承的proxy_bind指令產(chǎn)生的影響,允許系統(tǒng)自動(dòng)分配本地IP地址。

transparent參數(shù)(1.11.0+)允許從一個(gè)非本地IP地址發(fā)起到被代理服務(wù)器的外部連接,例如從一個(gè)客戶端的真實(shí)IP地址:

proxy_bind $remote_addr transparent; 

為了使此參數(shù)起作用,通常需要使用超級用戶權(quán)限運(yùn)行nginx工作進(jìn)程。在Linux上,不需要(1.13.8+),就像指定了transparent參數(shù)一樣,工作進(jìn)程從主進(jìn)程繼承CAP_NET_RAW功能。還需要配置核心路由表以攔截來自被代理服務(wù)器的網(wǎng)絡(luò)流量。

示例配置如下:

stream { 
    # ... 
    server { 
        listen            127.0.0.1:12345; 
        proxy_pass        backend.example.com:12345; 
        proxy_buffer_size 16k; 
        #proxy_bind 127.0.0.1:12345; 
    } 
} 

負(fù)載均衡

使用ngx_stream_upstream_module模塊(默認(rèn)是編譯進(jìn)來的)的upstream指令。指令語法:

Syntax:    upstream name { ... } 
Default:    — 
Context:    stream 

定義一組服務(wù)器。服務(wù)器可以偵聽不同的端口。此外,可以混合偵聽TCP和UNIX域套接字的服務(wù)器。

在頂級stream{}上下文中定義一個(gè)或多個(gè)upstream{}配置塊,并設(shè)置upstream組的名稱,例如TCP服務(wù)器的stream_backend和UDP服務(wù)器的dns_servers:

stream { 
    upstream stream_backend { 
        server backend1.example.com:12345; 
        server backend2.example.com:12345; 
        server backend3.example.com:12346; 
    } 
 
    upstream dns_servers { 
        server 192.168.136.130:53; 
        server 192.168.136.131:53; 
    } 
} 

配置upstream組使用的負(fù)載均衡方法??梢灾付ㄒ韵路椒ㄖ唬?br />
1.RoundRobin:默認(rèn)情況下,NGINX使用循環(huán)算法對流進(jìn)行負(fù)載平衡,將其順序指向配置的upstream組中的服務(wù)器。因?yàn)樗悄J(rèn)方法,所以沒有round-robin指令;只需在頂級stream{}上下文中創(chuàng)建upstream{}配置塊,

2.最少連接(LeastConnections)–nginx選擇當(dāng)前活動(dòng)連接數(shù)較少的服務(wù)器。

Syntax:    least_conn; 
Default:    — 
Context:    upstream 

3.最少時(shí)間-NGINXPlus選擇平均延遲最低且活動(dòng)連接數(shù)最少的服務(wù)器。用于計(jì)算最低平均延遲的方法取決于least_time指令中包含以下哪個(gè)參數(shù):

Syntax:    least_time connect | first_byte | last_byte [inflight]; 
Default:    — 
Context:    upstream 

A.connect-連接upstream服務(wù)器的時(shí)間

B.first_byte-接收數(shù)據(jù)的第一個(gè)字節(jié)的時(shí)間

C.last_byte-從服務(wù)器接收完整響應(yīng)的時(shí)間,如果指定了inflight參數(shù)(1.11.6+),則還會(huì)考慮不完整的連接。

4.哈希-NGINX根據(jù)用戶定義的key,選擇服務(wù)器。

Syntax:    hash key [consistent]; 
Default:    — 
Context:    upstream 


Hash負(fù)載平衡方法還用于配置會(huì)話持久性。由于散列函數(shù)基于客戶端IP地址,因此來自給定客戶端的連接始終傳遞到同一服務(wù)器,除非服務(wù)器已關(guān)閉或不可用。指定可選的consistent參數(shù)以應(yīng)用ketama一致性散列方法:

hash $remote_addr consistent; 

5.random-每個(gè)連接將傳遞給隨機(jī)選擇的服務(wù)器。如果指定了two參數(shù),首先,NGINX會(huì)考慮服務(wù)器權(quán)重隨機(jī)選擇兩臺(tái)服務(wù)器,然后使用指定的方法選擇其中一臺(tái)服務(wù)器:

Syntax:random[two[method]];Default:—Context:upstreamThisdirectiveappearedinversion1.15.1.

A.least_conn-活動(dòng)連接數(shù)最少

B.least_time=connect-連接上游服務(wù)器的時(shí)間($upstream_connect_time)少了美元符號(hào)

C.least_time=first_byte-從服務(wù)器接收第一個(gè)數(shù)據(jù)字節(jié)的平均時(shí)間最短($upstream_first_byte_time)

D.least_time=last_byte-從服務(wù)器接收最后一個(gè)數(shù)據(jù)字節(jié)的平均時(shí)間最短($upstream_session_time)

隨機(jī)負(fù)載平衡方法應(yīng)該用于多個(gè)負(fù)載均衡器將請求傳遞到同一組后端的分布式環(huán)境.

示例:

stream { 
    upstream stream_backend { 
        hash   $remote_addr consistent; 
        server backend1.example.com:12345 weight=5; 
        server backend2.example.com:12345; 
        server backend3.example.com:12346 max_conns=3; 
    } 
    upstream dns_servers { 
        least_conn; 
        server 192.168.136.130:53; 
        server 192.168.136.131:53; 
    } 
} 

完整示例

stream { 
    upstream stream_backend { 
        hash   $remote_addr consistent; 
        server backend1.example.com:12345 weight=5; 
        server backend2.example.com:12345; 
        server backend3.example.com:12346 max_conns=3; 
    } 
    upstream dns_servers { 
        least_conn; 
        server 192.168.136.130:53; 
        server 192.168.136.131:53; 
    } 
    server { 
        listen            12345; 
        proxy_pass        stream_backend; 
        proxy_buffer_size 16k; 
        #proxy_bind 127.0.0.1:12345; 
    } 
 
    server { 
        listen            53 udp; 
        proxy_pass        dns_servers; 
        proxy_buffer_size 16k; 
    } 
} 

以上就是千鋒扣丁學(xué)堂Linux培訓(xùn)之Nginx負(fù)載均衡TCP/UDP流的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,想要學(xué)好Linux開發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專業(yè)老師制定的Linux學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Linux課程體系和Linux視頻教程供大家學(xué)習(xí),想要學(xué)好Linux開發(fā)技術(shù)的小伙伴快快行動(dòng)吧??鄱W(xué)堂Linux技術(shù)交流群:422345477。


                          【掃碼進(jìn)入HTML5VIP免費(fèi)公開課】  


     【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】        【掃碼進(jìn)入HTML5前端開發(fā)VIP免費(fèi)公開課】



查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>

標(biāo)簽: Linux培訓(xùn) Linux視頻教程 紅帽Linux視頻 Linux學(xué)習(xí)視頻 Linux入門視頻 紅帽RHCE/RHCSA考試

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部