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

  1. 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协议负载均衡

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐