四層負載均衡與七層負載均衡(部署搭建四層負載均衡)


一:四層負載均衡與七層負載均衡區別

1.七層負載均衡
通常使用的nginx負載均衡技術, 在網絡分層中處於應用層(第七層)的,nginx與客戶端建立TCP連接(握手),然后再根據請求信息以及本地配置信息,將請求靈活的分發到不同的服務上。nginx這類7層負載均衡的優缺點都很明顯。
  • 優點
可以將請求分發到不同的服務上,並且可以根據請求信息進行靈活的代理轉發;由於請求會通過負載均衡服務器,負載均衡服務器會過濾一些請求(例如:DOS攻擊)避免所有請求信息都打到服務器上,保障了服務器的穩定運行。
  • 缺點
處於網絡分層的最上層,需要對數據進行解析,與客戶端建立連接,效率比較低。

image

2.四層負載均衡
除了nginx這種7層負載均衡策略,還有基於傳輸層(4層)的負載均衡策略。通過分析請求的IP地址以及端口號進行請求的負載均衡。根據請求處理的模式不同4層負載均衡算法可以分為:NAT,D-NAT,DR以及TUN隧道技術等。4層負載均衡的實現方式有:LVS。
  • 優點
不對數據進行完全解析,不跟客戶端建立連接(握手),請求分發的效率快。
  • 缺點
無法靈活的進行轉發,負載的服務器必須部署的相同服務器,否則同一個請求信息可能獲取的結果是不同的。

image

3.四層和七層協議區別
  • 七層是基於HTTP協議

  • 四層是基於TCP/IP協議

  • 總結七層與四層

四層負載均衡的性能遠高於HTTP協議

HTTP協議也是基於TCP/IP協議
4.四層負載均衡應用場景
1.四層+七層來做負載均衡,四層可以保證七層的負載均衡的高可用性;
2.SSH代理端口,負載均衡可以做端口轉發
3.MySQL服務,數據庫讀寫分離
5.四層負載均衡的作用
1.在網站訪問流量特別多的時候,七層負載均衡抵擋不住這么多的流量時
2.四層負載均衡的性能遠高於七層負載均衡 就可以使用
3.四層負載均衡就是 負載均衡代理

image

6.四層與七層的協作
1.四層負載均衡不能區分域名
2.七層負載流量轉發和安全認證
7.四層負載均衡的實現
四層負載均衡必須要有以下該參數
--with-srearm
  • 注:epel源安裝的Nginx無法使用四層負載均衡

二:部署四層負載均衡准備工作(編譯安裝)

1.使用編譯安裝nginx(不能yum安裝)
注意:yum安裝沒有--with-stream 參數
四層負載均衡必須要--with-stream 參數
3.安裝准備
yum install net-tools vim wget -y
4.添加源
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
5.執行
[root@lb02 ~]# yum clean all
6.編譯
[root@lb02 ~]# yum makecache
7.安裝nginx
[root@lb02 ~]# yum install nginx
8.將epel源壓縮(不能使用epel安裝)
切換路徑
[root@lb02 ~]# cd /etc/yum.repos.d
將epel源壓縮(不能使用epel安裝)
[root@lb02 yum.repos.d]# gzip epel.repo
total 52
-rw-r--r--. 1 root root 2523 Dec 24 18:31 CentOS-Base.repo
-rw-r--r--. 1 root root 1664 Oct 23  2020 CentOS-Base.repo.backup
-rw-r--r--. 1 root root 1309 Nov 23  2020 CentOS-CR.repo
-rw-r--r--. 1 root root  649 Nov 23  2020 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 Nov 23  2020 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 Nov 23  2020 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Nov 23  2020 CentOS-Sources.repo
-rw-r--r--. 1 root root 8515 Nov 23  2020 CentOS-Vault.repo
-rw-r--r--. 1 root root  616 Nov 23  2020 CentOS-x86_64-kernel.repo
-rw-r--r--  1 root root  254 Dec 24 18:31 epel.repo.gz
-rw-r--r--  1 root root  398 Jan  8 21:34 nginx.repo

9.重新安裝nginx
yum install nginx
10.顯示--with-stream 參數

image

11.執行nginx -V
顯示該 參數 --with-stream 則成功(啟用四層負載均衡)

image

三:部署搭建四層負載均衡

1.搭建准備
1.不能把nginx配置放在 http內
就是 /etc/nginx/conf.d
2.四層負載均衡
要放在stream 內
2.修改nginx全局配置文件
切換路徑
[root@lb02 ~]# cd /etc/nginx
編寫全局配置文件
[root@lb02 nginx]# vim /etc/nginx/nginx.conf
user  nginx;
worker_processes  auto;
error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

stream {
        include /etc/nginx/stream.conf/*.conf;
}

image

3.創建網址配置文件
[root@lb02 nginx]# mkdir /etc/nginx/stream.conf
4.切換目錄
[root@lb02 nginx]# cd stream.conf
5.編寫配置網址
[root@lb02 stream.conf]# vim nginx.conf
# 連接池
upstream nginx {
	server 172.16.1.5:80;
}
server {
	# 四層負載均衡不能寫域名
	listen 80;
		# 連接池 連接
		proxy_pass nginx;
	
}
6.關閉 selinux 與firewalld
關閉 selinux
setenforce 0

關閉firewalld
systecmtl stop firewalld

7.測試
nginx -t
8.重啟
systemctl restart nginx
9.網址測試 (四層代理成功)

image

四:四層負載均衡實戰(SSH代理端口)

  • 設備需求
    | 服務器名稱 | 服務器ip地址 | 服務器 |
    | ---------- | ------------ | ------------ |
    | lb01 | 192.168.15.5 | 七層負載均衡 |
    | lb02 | 192.168.15.6 | 四層負載均衡 |
1.使用場景(SSH代理端口)
  • 案例1:要求使用192.168.15.6的1234端口鏈接192.168.15.5的22端口
  • ssh服務不是http協議 通過的是tcp協議 來實現nginx代理ssh服務
  • (通過地址轉換,隱藏原本自己ip)
2.創建ssh文件
切換路徑
[root@lb02 ~]# cd /etc/nginx

創建ssh文件
[root@lb02 stream.conf]# vim ssh.conf
upstream ssh {
server 172.16.1.5:22;
}
server {
listen 1234;
proxy_pass ssh;
}
3.測試
nginx -t
4.重啟
[root@lb02 stream.conf]# systemctl restart nginx
5.連接自己ip端口,實現跳板機,地址轉換
[root@lb02 stream.conf]# ssh 192.168.15.6 -p 1234

image

五:nginx代理mysql服務

1.四層負載均衡代理mysql
  • 案例2:要求使用192.168.15.6的33060端口代理192.168.15.61的3306端口
2.編寫配置文件
[root@lb02 stream.conf]# vim mysql.conf 
upstream mysql {
server 172.16.1.61:3306;
}

server {
listen 33060;
proxy_pass mysql;
}
3.四層負載均衡33060端口代理數據庫3306端口
四層負載均衡33060端口代理數據庫3306端口
[root@db01 ~]# mysql -uroot -p123456 -h192.168.15.6 -P33060

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM