07.Nginx TCP負載均衡
07.Nginx TCP負載均衡
1.四層負載均衡基本概述
1.1 什么是四層負載均衡
1.2 四層負載均衡應用場景
1.3 四層負載均衡優缺點
2.四層負載均衡場景實踐
2.1 配置語法示例
2.2 實作HTTP協議負載均衡
2.3 實作MySQL負載均衡
2.4 實作非HTTP協議負載均衡
1.四層負載均衡基本概述
1.1 什么是四層負載均衡
IP+
所謂四層就是基于 埠的負載均衡,它通過用戶請求
的埠來決定將請求轉發至哪臺后端服務器,
IP
就是通過三層的 地址并加上四層的埠號,來決定哪
些流量需要做負載均衡,對需要負載均衡的流量進行
NAT TCP
轉換,然后轉發至后端服務器節點,并記錄這個
UDP
或者 的流量是由哪臺后端服務器處理的,后續這個
連接的所有流量都同樣轉發到同一臺服務器處理,
1.2 四層負載均衡應用場景
場景一、埠代理
首先
http
當然是最常用的一種協議,但是還是有很多非
http
的應用(
mysql
redis
、 、
ssh
),只能用四層代理
場景二、四層負載均衡 七層負載均衡,實作大規模集
群架構,
CPU
其次七層代理需要 運算,所以單臺機器很難做到很高的處理能力,因此需要在七層負載均衡前面再加四層負載均衡,(提高網站的訪問效率,并保證了七層負載均衡的高可用性,)
1.3 四層負載均衡優缺點
1.四層負載均衡通常用來轉發非http應用:如 tcp/80
tcp/443 tcp/3306 tcp/22 udp/53
2.四層負載均衡可以解決七層負載均衡高可用性的問題,( 多個七層負載均衡同時提供服務 )
3.四層負載均衡可以解決七層負載均衡埠數限制問題,(七層負載均衡最多能使用的埠是5w)
4.四層轉發效率遠比七層代理的效率高的多,但是他只
能支持tcp/ip協議,所以他的功能較弱,雖然七層效率不高,但他支持http/https這樣的應用層協議,
2.四層負載均衡場景實踐
2.1 配置語法示例
stream {
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;
}
server {
listen 12345;
proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass backend;
}
}
2.2 實作HTTP協議負載均衡
前端四層負載均衡+后端七層負載均衡+應用節點1.配置nginx四層負載均衡
[root@lb02 ~]# vim /etc/nginx/nginx.conf events {
…
}
include /etc/nginx/conf.c/*.conf;
http {
…
}
#創建存放四層負載均衡配置的目錄
[root@lb4-01 conf.c]# rm -f /etc/nginx/conf.d/default.conf #洗掉http的80埠
[root@lb4-01 ~]# mkdir /etc/nginx/conf.c [root@lb4-01 ~]# cd /etc/nginx/conf.c [root@lb4-01 conf.c]# cat lb_domain.conf stream {
upstream lb {
server 172.16.1.5:80 weight=5 max_fails=3 fail_timeout=30s;
server 172.16.1.6:80 weight=5 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
proxy_connect_timeout 3s; proxy_timeout 3s;
proxy_pass lb;
}
}
2.Nginx
重啟
[root@lb4-01 conf.c]# systemctl restart nginx
[root@lb4-01 conf.c]# systemctl enable nginx
2.3 實作MySQL負載均衡
請求負載均衡 5555 —> 172.16.1.7:22
請求負載均衡 6666 —> 172.16.1.51:3306
- Nginx
四層負載均衡配置如下
[root@lb01 ~]# mkdir -p /etc/nginx/conf.c [root@lb01 ~]# vim /etc/nginx/nginx.conf
#在events層下面,http層上面配置include include /etc/nginx/conf.c/*.conf;
#配置Nginx四層轉發
[root@lb01 ~]# cd /etc/nginx/conf.c/ [root@lb01 conf.c]# cat stream.conf stream {
#1.定義轉發tcp/22埠的虛擬資源池
upstream ssh {
server 172.16.1.7:22;
}
#2.定義轉發tcp/3306埠的虛擬資源池 upstream mysql {
server 172.16.1.51:3306;
}
#呼叫虛擬資源池
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@lb01 conf.c]# systemctl restart nginx
2.4 實作非HTTP協議負載均衡
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/294904.html
標籤:其他
上一篇:Lenovo系列問題第四期
