四层负载均衡与七层负载均衡(部署搭建四层负载均衡)
一:四层负载均衡与七层负载均衡区别
1.七层负载均衡
copy通常使用的nginx负载均衡技术, 在网络分层中处于应用层(第七层)的,nginx与客户端建立TCP连接(握手),然后再根据请求信息以及本地配置信息,将请求灵活的分发到不同的服务上。nginx这类7层负载均衡的优缺点都很明显。
- 优点
copy可以将请求分发到不同的服务上,并且可以根据请求信息进行灵活的代理转发;由于请求会通过负载均衡服务器,负载均衡服务器会过滤一些请求(例如:DOS攻击)避免所有请求信息都打到服务器上,保障了服务器的稳定运行。
- 缺点
copy处于网络分层的最上层,需要对数据进行解析,与客户端建立连接,效率比较低。
2.四层负载均衡
copy除了nginx这种7层负载均衡策略,还有基于传输层(4层)的负载均衡策略。通过分析请求的IP地址以及端口号进行请求的负载均衡。根据请求处理的模式不同4层负载均衡算法可以分为:NAT,D-NAT,DR以及TUN隧道技术等。4层负载均衡的实现方式有:LVS。
- 优点
copy不对数据进行完全解析,不跟客户端建立连接(握手),请求分发的效率快。
- 缺点
copy无法灵活的进行转发,负载的服务器必须部署的相同服务器,否则同一个请求信息可能获取的结果是不同的。
3.四层和七层协议区别
-
七层是基于HTTP协议
-
四层是基于TCP/IP协议
-
总结七层与四层
copy四层负载均衡的性能远高于HTTP协议 HTTP协议也是基于TCP/IP协议
4.四层负载均衡应用场景
copy1.四层+七层来做负载均衡,四层可以保证七层的负载均衡的高可用性; 2.SSH代理端口,负载均衡可以做端口转发 3.MySQL服务,数据库读写分离
5.四层负载均衡的作用
copy1.在网站访问流量特别多的时候,七层负载均衡抵挡不住这么多的流量时 2.四层负载均衡的性能远高于七层负载均衡 就可以使用 3.四层负载均衡就是 负载均衡代理
6.四层与七层的协作
copy1.四层负载均衡不能区分域名 2.七层负载流量转发和安全认证
7.四层负载均衡的实现
copy四层负载均衡必须要有以下该参数 --with-srearm
- 注:epel源安装的Nginx无法使用四层负载均衡
二:部署四层负载均衡准备工作(编译安装)
1.使用编译安装nginx(不能yum安装)
copy注意:yum安装没有--with-stream 参数 四层负载均衡必须要--with-stream 参数
3.安装准备
copyyum install net-tools vim wget -y
4.添加源
copyvim /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
copytotal 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
copyyum install nginx
10.显示--with-stream 参数
11.执行nginx -V
copy显示该 参数 --with-stream 则成功(启用四层负载均衡)
三:部署搭建四层负载均衡
1.搭建准备
copy1.不能把nginx配置放在 http内 就是 /etc/nginx/conf.d 2.四层负载均衡 要放在stream 内
2.修改nginx全局配置文件
copy切换路径 [root@lb02 ~]# cd /etc/nginx 编写全局配置文件 [root@lb02 nginx]# vim /etc/nginx/nginx.conf
copyuser 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; }
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.测试
copynginx -t
8.重启
copysystemctl restart nginx
9.网址测试 (四层代理成功)
四:四层负载均衡实战(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
copyupstream ssh { server 172.16.1.5:22; } server { listen 1234; proxy_pass ssh; }
3.测试
copynginx -t
4.重启
copy[root@lb02 stream.conf]# systemctl restart nginx
5.连接自己ip端口,实现跳板机,地址转换
copy[root@lb02 stream.conf]# ssh 192.168.15.6 -p 1234
五: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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本