所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。 以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。
在不使用http协议是我们通常要使用到四层负载均衡来实现、
1.四层+七层来做负载均衡,四层可以保证七层的负载均衡的高可用性; 2.负载均衡可以做端口转发 3.数据库读写分离
4+7的应用场景
1.四层负载均衡仅能转发TCP/IP协议、UDP协议、通常用来转发端口,如:tcp/22、udp/53; 2.四层负载均衡可以用来解决七层负载均衡端口限制问题;(七层负载均衡最大使用65535个端口号) 3.四层负载均衡可以解决七层负载均衡高可用问题;(多台后端七层负载均衡能同时的使用) 4.四层的转发效率比七层的高得多,但仅支持tcp/ip协议,不支持http和https协议; 5.通常大并发场景通常会选择使用在七层负载前面增加四层负载均衡。
注意:四层负载均衡中不支持域名。
使用四层负载均衡,必须要有--with-stream模块 四层负载均衡和七层负载均衡很相似但是完全是两回事、
# 编辑配置文件 [root@lb01 ~]# vim /etc/nginx/nginx.conf stream { include /etc/nginx/stream/*.conf; }
# 创建配置文件目录: [root@lb01 ~]# cd /etc/nginx/ [root@lb01 ~]# mkdir /stream [root@lb01 ~]# cd /etc/nginx/stream [root@lb01 stream]# vim mysql.conf # 实现配置 server { listen 3306; proxy_pass 172.16.1.61:3306; }
# 测试端口 [root@lb01 ~]# netstat -nutlp
# 测试 在192.165.15.61访问191.168.15.5的mysql
案例:使用四层负载均衡实现SSH的代理,端口为1122
[root@lb01 stream]# vim ssh.conf server { listen 1122; proxy_pass 172.16.1.5:22; # ssh默认端口为22 }
# 测试 :测试机web01 [root@web01 ~]# ssh root@192.168.15.5 -p1122
连接成功