四层负载均衡与七层负载均衡(部署搭建四层负载均衡)

一:四层负载均衡与七层负载均衡区别

1.七层负载均衡
copy
通常使用的nginx负载均衡技术, 在网络分层中处于应用层(第七层)的,nginx与客户端建立TCP连接(握手),然后再根据请求信息以及本地配置信息,将请求灵活的分发到不同的服务上。nginx这类7层负载均衡的优缺点都很明显。
  • 优点
copy
可以将请求分发到不同的服务上,并且可以根据请求信息进行灵活的代理转发;由于请求会通过负载均衡服务器,负载均衡服务器会过滤一些请求(例如:DOS攻击)避免所有请求信息都打到服务器上,保障了服务器的稳定运行。
  • 缺点
copy
处于网络分层的最上层,需要对数据进行解析,与客户端建立连接,效率比较低。

image

2.四层负载均衡
copy
除了nginx这种7层负载均衡策略,还有基于传输层(4层)的负载均衡策略。通过分析请求的IP地址以及端口号进行请求的负载均衡。根据请求处理的模式不同4层负载均衡算法可以分为:NAT,D-NAT,DR以及TUN隧道技术等。4层负载均衡的实现方式有:LVS。
  • 优点
copy
不对数据进行完全解析,不跟客户端建立连接(握手),请求分发的效率快。
  • 缺点
copy
无法灵活的进行转发,负载的服务器必须部署的相同服务器,否则同一个请求信息可能获取的结果是不同的。

image

3.四层和七层协议区别
  • 七层是基于HTTP协议

  • 四层是基于TCP/IP协议

  • 总结七层与四层

copy
四层负载均衡的性能远高于HTTP协议 HTTP协议也是基于TCP/IP协议
4.四层负载均衡应用场景
copy
1.四层+七层来做负载均衡,四层可以保证七层的负载均衡的高可用性; 2.SSH代理端口,负载均衡可以做端口转发 3.MySQL服务,数据库读写分离
5.四层负载均衡的作用
copy
1.在网站访问流量特别多的时候,七层负载均衡抵挡不住这么多的流量时 2.四层负载均衡的性能远高于七层负载均衡 就可以使用 3.四层负载均衡就是 负载均衡代理

image

6.四层与七层的协作
copy
1.四层负载均衡不能区分域名 2.七层负载流量转发和安全认证
7.四层负载均衡的实现
copy
四层负载均衡必须要有以下该参数 --with-srearm
  • 注:epel源安装的Nginx无法使用四层负载均衡

二:部署四层负载均衡准备工作(编译安装)

1.使用编译安装nginx(不能yum安装)
copy
注意:yum安装没有--with-stream 参数 四层负载均衡必须要--with-stream 参数
3.安装准备
copy
yum install net-tools vim wget -y
4.添加源
copy
vim /etc/yum.repos.d/nginx.repo
copy
[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.执行
copy
[root@lb02 ~]# yum clean all
6.编译
copy
[root@lb02 ~]# yum makecache
7.安装nginx
copy
[root@lb02 ~]# yum install nginx
8.将epel源压缩(不能使用epel安装)
copy
切换路径 [root@lb02 ~]# cd /etc/yum.repos.d 将epel源压缩(不能使用epel安装) [root@lb02 yum.repos.d]# gzip epel.repo
copy
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
copy
yum install nginx
10.显示--with-stream 参数

image

11.执行nginx -V
copy
显示该 参数 --with-stream 则成功(启用四层负载均衡)

image

三:部署搭建四层负载均衡

1.搭建准备
copy
1.不能把nginx配置放在 http内 就是 /etc/nginx/conf.d 2.四层负载均衡 要放在stream 内
2.修改nginx全局配置文件
copy
切换路径 [root@lb02 ~]# cd /etc/nginx 编写全局配置文件 [root@lb02 nginx]# vim /etc/nginx/nginx.conf
copy
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.创建网址配置文件
copy
[root@lb02 nginx]# mkdir /etc/nginx/stream.conf
4.切换目录
copy
[root@lb02 nginx]# cd stream.conf
5.编写配置网址
copy
[root@lb02 stream.conf]# vim nginx.conf
copy
# 连接池 upstream nginx { server 172.16.1.5:80; } server { # 四层负载均衡不能写域名 listen 80; # 连接池 连接 proxy_pass nginx; }
6.关闭 selinux 与firewalld
copy
关闭 selinux setenforce 0 关闭firewalld systecmtl stop firewalld
7.测试
copy
nginx -t
8.重启
copy
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文件
copy
切换路径 [root@lb02 ~]# cd /etc/nginx 创建ssh文件 [root@lb02 stream.conf]# vim ssh.conf
copy
upstream ssh { server 172.16.1.5:22; } server { listen 1234; proxy_pass ssh; }
3.测试
copy
nginx -t
4.重启
copy
[root@lb02 stream.conf]# systemctl restart nginx
5.连接自己ip端口,实现跳板机,地址转换
copy
[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.编写配置文件
copy
[root@lb02 stream.conf]# vim mysql.conf upstream mysql { server 172.16.1.61:3306; } server { listen 33060; proxy_pass mysql; }
3.四层负载均衡33060端口代理数据库3306端口
copy
四层负载均衡33060端口代理数据库3306端口 [root@db01 ~]# mysql -uroot -p123456 -h192.168.15.6 -P33060

image

posted @   AlexEvans  阅读(1404)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示
🚀