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

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

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

image

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

image

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

  • 四层是基于TCP/IP协议

  • 总结七层与四层

四层负载均衡的性能远高于HTTP协议

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

image

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

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

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

image

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

image

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

1.搭建准备
1.不能把nginx配置放在 http内
就是 /etc/nginx/conf.d
2.四层负载均衡
要放在stream 内
2.修改nginx全局配置文件
切换路径
[root@lb02 ~]# cd /etc/nginx
编写全局配置文件
[root@lb02 nginx]# vim /etc/nginx/nginx.conf
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.创建网址配置文件
[root@lb02 nginx]# mkdir /etc/nginx/stream.conf
4.切换目录
[root@lb02 nginx]# cd stream.conf
5.编写配置网址
[root@lb02 stream.conf]# vim nginx.conf
# 连接池
upstream nginx {
	server 172.16.1.5:80;
}
server {
	# 四层负载均衡不能写域名
	listen 80;
		# 连接池 连接
		proxy_pass nginx;
	
}
6.关闭 selinux 与firewalld
关闭 selinux
setenforce 0

关闭firewalld
systecmtl stop firewalld

7.测试
nginx -t
8.重启
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文件
切换路径
[root@lb02 ~]# cd /etc/nginx

创建ssh文件
[root@lb02 stream.conf]# vim ssh.conf
upstream ssh {
server 172.16.1.5:22;
}
server {
listen 1234;
proxy_pass ssh;
}
3.测试
nginx -t
4.重启
[root@lb02 stream.conf]# systemctl restart nginx
5.连接自己ip端口,实现跳板机,地址转换
[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.编写配置文件
[root@lb02 stream.conf]# vim mysql.conf 
upstream mysql {
server 172.16.1.61:3306;
}

server {
listen 33060;
proxy_pass mysql;
}
3.四层负载均衡33060端口代理数据库3306端口
四层负载均衡33060端口代理数据库3306端口
[root@db01 ~]# mysql -uroot -p123456 -h192.168.15.6 -P33060

image

posted @ 2022-01-10 17:41  AlexEvans  阅读(1319)  评论(0编辑  收藏  举报