架構WEB服務 Nginx之六 四層負載均衡

2022-06-22 20:57:09 字數 4165 閱讀 8951

目錄什麼是四層負載均衡?

四層負載均衡是基於傳輸層協議包來封裝的(如:tcp/ip),那我們前面使用到的七層是指的應用層,他的組裝在四層的基礎之上,無論四層還是七層都是指的osi網路模型。

四層負載均衡應用場景

1、四層+七層來做負載均衡,四層可以保證七層的負載均衡的高可用性;如:nginx就無法保證自己的服務高可用,需要依賴lvs或者keepalive。

2、如:tcp協議的負載均衡,有些請求是tcp協議的(mysql、ssh),或者說這些請求只需要使用四層進行埠的**就可以了,所以使用四層負載均衡。

四層+七層構建大規模集群架構使用場景

四層負載均衡總結

1、四層負載均衡僅能**tcp/ip協議、udp協議、通常用來**埠,如:tcp/22、udp/53;

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

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

4、四層的**效率比七層的高得多,但僅支援tcp/ip協議,不支援http和https協議;

5、通常大併發場景通常會選擇使用在七層負載前面增加四層負載均衡。

7.四層負載(主)出現單點故障,再加一台四層負載(備份)。

首先水平擴充套件lb,新建一台和lb01配置一樣的lb02

lb02安裝nginx

[root@lb02 ~]# cat >/etc/yum.repos.d/nginx.repo 

[root@lb02 ~]# scp -r [email protected]:/etc/nginx /etc/

lb02啟動nginx並加入開機自啟

[root@lb02 ~]# systemctl start nginx

[root@lb02 ~]# systemctl enable nginx

lb配置四層負載均衡建立存放四層負載均衡配置檔案的目錄,並加入主配置檔案/etc/nginx/nginx.conf

[[email protected] ~]# mkdir /etc/nginx/conf.c
配置四層負載均衡,並過載

[[email protected] ~]# cat > /etc/nginx/conf.c/lb_domain.conf 

在c:\windows\system32\drivers\etc\hosts

檔案中修改為10.0.0.4 php.oldboy.com blog.oldboy.com使用瀏覽器訪問頁面測試成功!

配置四層負載均衡開啟日誌

四層負載均衡預設是沒有access的日誌的,因為在nginx.conf的配置中,access的日誌格式是配置在http下的,而四層複雜均衡配置實在http以外的;

如果需要日誌則需要在stream下面配置:

[[email protected] ~]# cat > /etc/nginx/conf.c/lb_domain.conf 使用proxy protocol獲取真實客戶端ip

使用架構四層負載均衡-->七層負載均衡-->web伺服器,web伺服器訪問日誌記錄的客戶端ip$remote_addr是七層負載均衡的,**的客戶端ip$http_x_forwarded_for是四層負載均衡的

[root@web01 ~]# tail -1 /var/log/nginx/access.log

proxy protocol是haproxy的作者willy tarreau於2023年開發和設計的乙個internet協議,通過為tcp新增乙個很小的頭資訊,來方便的傳遞客戶端資訊(協議棧、源ip、目的ip、源埠、目的埠等),在網路情況複雜又需要獲取使用者真實ip時非常有用。其本質是在三次握手結束後由**在連線中插入了乙個攜帶了原始連線四元組資訊的資料報。

注意:proxy protocol的接收端必須在接收到完整有效的 proxy protocol 頭部後才能開始處理連線資料。因此對於伺服器的同乙個監聽埠,不存在相容帶proxy protocol包的連線和不帶proxy protocol包的連線。如果伺服器接收到的第乙個資料報不符合proxy protocol的格式,那麼伺服器會直接終止連線。

lb配置:

注意:x-forwarded-for會自動附加$remote_addr變數,這裡設定proxy_set_header x-forwarded-for $proxy_protocol_addr;會使web伺服器收到的$http_x_forwarded_for的值變為$proxy_protocol_addr,$remote_addr

過載nginx服務:

[[email protected] ~]# systemctl reload nginx

[root@lb01 ~]# systemctl reload nginx

[root@lb02 ~]# systemctl reload nginx

瀏覽器訪問測試:

[[email protected] ~]# tail -1 /var/log/nginx/proxy.log

10.0.0.1:1762 - [22/sep/2020:15:06:13 +0800] 200 tcp "172.16.1.5:80" "2197" "0.001"

[root@lb01 ~]# tail -20 /var/log/nginx/access.log | grep thumbnail.png

[root@web01 ~]# tail -20 /var/log/nginx/access.log | grep thumbnail.png

要求:通過訪問負載均衡的5555埠,實際是後端的web01的22埠提供服務;

10.0.0.4:5555 ---> 172.16.1.7:22;

通過訪問負載均衡的6666埠,實際是後端的mysql的3306埠提供服務。

10.0.0.4:6666 ---> 172.16.1.51:3306;

實現配置:

[[email protected] ~]#cat > /etc/nginx/conf.c/lb_domain.conf <測試:使用xshell連線10.0.0.4:5555實際是連線172.16.1.7:22

使用sqlyog連線10.0.0.4:6666實際是連線172.16.1.51:3306

web架構 之 Nginx負載均衡

一 安裝nginx前,需要安裝pcre和openssl 192.168.150.130 1.安裝pcre tar zxvf pcre.0.tar.gz cp vrp pcre.0.usr local pcre cd usr local pcre configure prefix usr local ...

web常用服務架構

架構風格就是一種專案的設計模式。常見的架構風格有基於客戶端與服務端的 基於元件模型的 ejb 分層架構 mvc 面向服務架構 soa 等。單體架構也稱為單體系統或單體應用,就是一種把系統中所有功能 模組耦合在乙個應用中的架構方式。單體架構特點 打包成乙個獨立單元,以乙個程序的方式執行。單體架構優點 ...

Web服務的體系架構

web簡介 web是www world wide web 的簡稱,又稱為全球資訊網,是建立在客戶機 伺服器上的,以html語言和html協議為基礎,提供面向internet服務的,有一致使用者介面的一種資訊服務系統。web service簡介 其實就是乙個應用程式,它向外界暴露出乙個能夠通過web進...