0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Nginx四層負(fù)載均衡基本概訴

冬至子 ? 來源:運(yùn)維庫 ? 作者:運(yùn)維庫 ? 2023-05-22 17:48 ? 次閱讀

1、Nginx四層負(fù)載均衡基本概訴

(1) 什么是四層負(fù)載均衡

四層負(fù)載均衡基于傳輸層協(xié)議包來封裝的(如:TCP/IP),那我們前面使用到的七層指的是應(yīng)用層,它的封裝在四層基礎(chǔ)之上,無論四層還是七層都指的是OSI網(wǎng)絡(luò)模型。

(2) 四層負(fù)載均衡應(yīng)用場景

1.四層負(fù)載可以保證7層負(fù)載的高可用:四層+七層來做負(fù)載均衡,四層可以保證七層的負(fù)載均衡的高可用性,如:nginx就無法保證自己的服務(wù)高可用,需要依賴LVS或者keepaive。

2、端口映射(端口轉(zhuǎn)發(fā)):如:TCP協(xié)議的負(fù)載均衡,有些請求是TCP協(xié)議的(mysql,ssh),或者說這些請求只需要使用四層進(jìn)行端口的轉(zhuǎn)發(fā)就可以了,所以使用四層負(fù)載均衡。

(3) 四層+七層構(gòu)建大規(guī)模集群架構(gòu)使用場景

圖片

(4) 四層負(fù)載均衡總結(jié)

1、四層負(fù)載均衡僅能轉(zhuǎn)發(fā)TCP/IP協(xié)議、UDP協(xié)議、通常用來轉(zhuǎn)發(fā)端口,如:tcp/22、udp/53

2、四層負(fù)載均衡可以用來解決七層負(fù)載均衡端口限制問題;(七層負(fù)載均衡最大使用65535個端口)

3、四層負(fù)載均衡可以解決七層負(fù)載均衡高可用問題;(多臺后端七層負(fù)載均衡能同時的使用)

4、四層的轉(zhuǎn)發(fā)效率比七層的高得多,但僅支持tcp/ip協(xié)議,不支持http和https協(xié)議;

5、通常大并發(fā)場景通常會選擇使用在七層負(fù)載均衡前面增加四層負(fù)載均衡

2、Nginx四層負(fù)載均衡實(shí)戰(zhàn)

(1) Nginx四層負(fù)載語法
Syntax: listen address:port [ssl] [udp] [proxy_protocol] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
    Default: —
    Context: server
#示例
    worker_processes auto;

    error_log /var/log/nginx/error.log info;

    events {
        worker_connections  1024;
    }
 
    #在events層下面,http層上面配置stream
    # stream配置多的時候,直接配置include更加簡潔
 
 stream {
 #1.定義虛擬資源池
     upstream backend {
         hash $remote_addr consistent;
         server backend1.example.com:12345 weight=5;
         server 127.0.0.1:12345  max_fails=3 fail_timeout=30s;
         server unix:/tmp/backend3;
      }

     upstream dns {
         server 192.168.0.1:53535;
         server dns.example.com:53;
      }
    #2.調(diào)用虛擬資源池
     server {
         listen 12345;
         proxy_connect_timeout 1s;
         proxy_timeout 3s;
         proxy_pass backend;
      }

     server {
         listen 127.0.0.1:53 udp reuseport;
         proxy_timeout 20s;
          proxy_pass dns;
      }

     server {
         listen [::1]:12345;
         proxy_pass unix:/tmp/stream.socket;
      }
    }
(2) Nginx四層負(fù)載均衡前期準(zhǔn)備

① 環(huán)境規(guī)劃

主機(jī)名        應(yīng)用環(huán)境      IP地址
    Nginx-5        Nginx+PHP   192.168.2.5
    Nginx-6        Nginx+PHP   192.168.2.6
    MySQL-7          MySQL     192.168.2.7
    7-Proxy1-8       Nginx     192.168.2.8
    7-Proxy2-9       Nginx     192.168.2.9
    4-Proxy1-10      Nginx     192.168.2.10

② 搭建第二臺七層proxy服務(wù)器 7-Proxy2-9

#1、準(zhǔn)備對應(yīng)的www用戶
[root@7-Proxy2-9 ~]# groupadd -g666 www
[root@7-Proxy2-9 ~]# useradd -u666 -g666 www

#2、在7-Proxy2-9上面安裝Nginx
[root@7-Proxy2-9 ~]# cat /etc/yum.repos.d/nginx.repo 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0       
enabled=1
[root@7-Proxy2-9 ~]#  yum install nginx -y

#3、在7-Proxy2-9上面拷貝7-Proxy1-8的所有nginx相關(guān)配置即可。
[root@7-Proxy2-9 ~]# scp -rp root@192.168.2.8:/etc/nginx /etc/

#4、啟動nginx
[root@7-Proxy2-9 conf.d]# nginx -t
[root@7-Proxy2-9 conf.d]# systemctl start nginx
[root@7-Proxy2-9 conf.d]# systemctl enable nginx
#注:注銷7-Proxy1-8的域名解析,換成7-Proxy2-9,再訪問網(wǎng)站是否游泳,成功即可。

③ 搭建四層proxy服務(wù)器 4-Proxy1-10

#1、準(zhǔn)備對應(yīng)的www用戶
[root@4-Proxy1-10 ~]# groupadd -g666 www
[root@4-Proxy1-10 ~]# useradd -u666 -g666 www

#2、在4-Proxy1-10上面安裝Nginx
[root@4-Proxy1-10 ~]# cat /etc/yum.repos.d/nginx.repo 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0       
enabled=1
[root@4-Proxy1-10 ~]#  yum install nginx -y
#3、查看是否有四層模塊
[root@4-Proxy1-10 ~]# nginx -V
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module
`--with-stream`(這個四層負(fù)載模塊是nginx>=1.9.0才有) --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

#4、啟動nginx
[root@4-Proxy1-10 conf.d]# nginx -t
[root@4-Proxy1-10 conf.d]# systemctl start nginx
[root@4-Proxy1-10 conf.d]# systemctl enable nginx
(3) Nginx四層負(fù)載均衡實(shí)戰(zhàn)

① 需求

1.通過訪問負(fù)載均衡的5555端口,實(shí)際是后端的Nginx-522端口在提供服務(wù)。
 2.通過訪問負(fù)載均衡的6666端口,實(shí)際是后端的mysql-73306端口在提供服務(wù)。

② 4-Proxy1-10配置

#如果監(jiān)聽了80端口,要刪除/etc/nginx/conf.d/default.conf
[root@4-Proxy1-10 ~]# rm -f /etc/nginx/conf.d/default.conf   #刪除http的80端口
#配置四層負(fù)載均衡(這里采用文件方式,后面直接用include就行)
[root@4-Proxy1-10 ~]# mkdir -p /etc/nginx/conf.c
[root@4-Proxy1-10 ~]# vim /etc/nginx/nginx.conf
# 在events層下面,http層上面配置include
include  /etc/nginx/conf.c/*.conf;

# 編寫四層代理配置
[root@4-Proxy1-10 ~]# cd /etc/nginx/conf.c/
[root@4-Proxy1-10 conf.c]# cat stream.conf 
stream {
    #1.定義虛擬資源池
    upstream ssh {
        server 192.168.2.5:22;
    }

    upstream mysql {
        server 192.168.2.7:3306;
    }
    #2.調(diào)用虛擬資源池
    server {
        listen 5555;
        proxy_connect_timeout 1s;
        proxy_timeout 300s;
        proxy_pass ssh;
    }
    server {
        listen 6666;
        proxy_connect_timeout 1s;
        proxy_timeout 300s;
        proxy_pass mysql;
    }
}
[root@4-Proxy1-10 conf.c]# systemctl restart nginx
#1.打開訪問 Nginx-5、Nginx-6、7-Proxy1-8、7-Proxy2-94-Proxy1-10的訪問日志
#2.可以用ssh 192.168.2.105555 登入到Nginx-5 
#3.可以用navicat 登入192.168.2.106666登入到mysql-7上 
#4.命令tail -f /var/log/nginx/access.log查看到是分?jǐn)偟?span id="llxdwok"    class="hljs-number">7-Proxy1-87-Proxy2-9上
#5.可以正常訪問wordpress、wecenter、eduSoho
#6.4-Proxy1-10上并沒有產(chǎn)生日志
(4) nginx四層負(fù)載均衡記錄日志
① 四層負(fù)載均衡日志必須配置在stream模塊
[root@4-Proxy1-10 ~]# cat /etc/nginx/conf.c/tcp_proxy.conf
stream {

#定義日志的格式
log_format  proxy '$remote_addr $remote_port - [$time_local] $status $protocol '
                  '"$upstream_addr" "$upstream_bytes_sent" "$upstream_connect_time"' ;

    #調(diào)用日志,使用proxy格式
    access_log /var/log/nginx/tcp_proxy.log proxy;

......其他配置省略......

#查看日志 tail -f /var/log/nginx/tcp_proxy.log 可以看見日志
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    789

    瀏覽量

    26283
  • SSH
    SSH
    +關(guān)注

    關(guān)注

    0

    文章

    178

    瀏覽量

    16226
  • LVS
    LVS
    +關(guān)注

    關(guān)注

    1

    文章

    35

    瀏覽量

    9897
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    139

    瀏覽量

    12115
  • TCP通信
    +關(guān)注

    關(guān)注

    0

    文章

    146

    瀏覽量

    4184
收藏 人收藏

    評論

    相關(guān)推薦

    負(fù)載均衡器的誕生和工作機(jī)制

    今天我們來深度揭秘一下負(fù)載均衡器 LVS 的秘密,相信大家看了你管這破玩意兒叫負(fù)載均衡?這篇文章后,還是有不少疑問,比如 LVS 看起來只有類似路由器的轉(zhuǎn)發(fā)功能,為啥說它是
    的頭像 發(fā)表于 01-04 12:26 ?798次閱讀
    <b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>器的誕生和工作機(jī)制

    高性能負(fù)載均衡Tomcat集群的實(shí)現(xiàn)

    Nginx+Tomcat搭建高性能負(fù)載均衡集群
    發(fā)表于 08-21 14:31

    使用nginx實(shí)現(xiàn)tomcat負(fù)載均衡

    Nginx+tomcat+memcached實(shí)現(xiàn)負(fù)載均衡及session(交叉存儲)
    發(fā)表于 08-28 08:52

    nginx實(shí)現(xiàn)的負(fù)載均衡

    nginx實(shí)現(xiàn)負(fù)載均衡
    發(fā)表于 05-04 13:42

    16nginx+keepalived +zuul如何實(shí)現(xiàn)高可用及負(fù)載均衡

    學(xué)習(xí)筆記微服務(wù)-16 nginx+keepalived +zuul 實(shí)現(xiàn)高可用及負(fù)載均衡
    發(fā)表于 05-22 10:16

    基于應(yīng)用負(fù)載均衡策略的分析

    基于應(yīng)用負(fù)載均衡策略的分析
    發(fā)表于 03-26 08:28 ?8次下載

    Nginx和Tomcat負(fù)載均衡實(shí)現(xiàn)session共享

    Nginx和Tomcat負(fù)載均衡實(shí)現(xiàn)session共享
    發(fā)表于 09-05 10:40 ?9次下載
    <b class='flag-5'>Nginx</b>和Tomcat<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>實(shí)現(xiàn)session共享

    構(gòu)建實(shí)戰(zhàn):Nginx+IIS構(gòu)筑Web服務(wù)器集群負(fù)載均衡

    構(gòu)建實(shí)戰(zhàn):Nginx+IIS構(gòu)筑Web服務(wù)器集群負(fù)載均衡
    發(fā)表于 09-05 10:56 ?4次下載
    構(gòu)建實(shí)戰(zhàn):<b class='flag-5'>Nginx</b>+IIS構(gòu)筑Web服務(wù)器集群<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>

    f5負(fù)載均衡Nginx負(fù)載均衡有什么區(qū)別

    負(fù)載均衡是分?jǐn)偟蕉鄠€操作單元上進(jìn)行執(zhí)行,建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,提供了一種廉價有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。市場上有很多的負(fù)載
    發(fā)表于 01-01 18:41 ?8866次閱讀
    f5<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>和<b class='flag-5'>Nginx</b><b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>有什么區(qū)別

    一文讀懂Nginx、Apache工作原理

    在高并發(fā)連接的情況下,Nginx是Apache服務(wù)器不錯的替代品。Nginx同時也可以作為7負(fù)載均衡服務(wù)器來使用。根據(jù)我的測試結(jié)果,
    發(fā)表于 04-26 11:33 ?2452次閱讀

    詳解Nginx負(fù)載均衡配置誤區(qū)

    之前有很多朋友問關(guān)于Nginx的upstream模塊中max_fails及fail_timeout,這兩個指令,分別是配置關(guān)于負(fù)載均衡過程中,對于上游(后端)服務(wù)器的失敗嘗試次數(shù)和不可用時間,很多人
    的頭像 發(fā)表于 05-13 14:36 ?1594次閱讀
    詳解<b class='flag-5'>Nginx</b><b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>配置誤區(qū)

    負(fù)載均衡能否能直接從LVS打到站點(diǎn)

    改成下面的架構(gòu) 答案是不行,為什么?其實(shí)我在上文中有提到一些點(diǎn)已經(jīng)暗示了,只不過不那么明顯而已,我再單獨(dú)把這些點(diǎn)拎出來 LVS 是負(fù)載均衡N
    的頭像 發(fā)表于 08-17 10:29 ?1317次閱讀
    <b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>能否能直接從LVS打到站點(diǎn)<b class='flag-5'>層</b>

    聊聊Nginx作為負(fù)載均衡器它支持的算法都有哪些?

    Nginx作為一款最流行WEB服務(wù)器軟件,同時也是一款反向代理和負(fù)載均衡軟件。毫不夸張地說,Nginx負(fù)載
    的頭像 發(fā)表于 02-14 17:50 ?657次閱讀

    如何使用Nginx作為應(yīng)用程序的負(fù)載均衡器?

    Nginx因其高性能和可擴(kuò)展性而廣受歡迎。它是排名第一的開源Web 服務(wù)器。在本教程中,我們將學(xué)習(xí)如何使用Nginx作為應(yīng)用程序的負(fù)載均衡器? 要將
    的頭像 發(fā)表于 03-23 14:52 ?1000次閱讀

    搭建Keepalived+Lvs+Nginx高可用集群負(fù)載均衡

    ? 一、Nginx安裝 二、配置反向代理 三、配置負(fù)載均衡 、upstream指令參數(shù) 五、配置ssl證書提供https訪問 六、配置ha ngi
    的頭像 發(fā)表于 06-25 15:39 ?2580次閱讀
    搭建Keepalived+Lvs+<b class='flag-5'>Nginx</b>高可用集群<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>