Nginx 四层负载均衡
四层负载均衡概述
四层负载均衡是基于IP+端口的负载均衡,七层负载均衡是基于URL或主机名等应用层信息的负载均衡。
其他层负载均衡(转载):
二层负载均衡(MAC)
一般是用虚拟MAC地址方式,外部对虚拟的MAC地址请求,负载均衡接收后分配后端真实的MAC地址响应。
三层负载均衡(IP)
一般采用虚拟IP地址方式,外部对虚拟的IP地址请求,负载均衡接收后分配后端真实的IP地址响应。
四层负载均衡(TCP)
用虚拟 IP+PORT 接收请求,再转发到对应的真实的IP+PROT 服务器进程端口。
七层负载均衡(HTTP)
用虚拟的URL或主机名接收请求,再转发到对应的真实的处理域名的服务器。
四层负载均衡架构中客户端向负载均衡发送 SYN 请求建立第一次连接,通过配置的负载均衡算法选择一台后端服务器,并且将报文中的 IP 地址信息修改为后台服务器的IP地址信息,因此,TCP 三次握手连接是与后端服务器直接建立起来的。
七层负载均衡设备要根据真正的应用层内容再选择服务器,只能先与负载均衡设备进行 TCP 连接,然后负载均衡设备再与后端服务器建立另外一条 TCP 连接通道。七层设备在网络性能损耗会更多一些,因为只有先代理了后端服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上七层负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
结论:
四层负载均衡中,TCP连接的三次握手是客户端和应用服务器直接建立,四层负载均衡设备只是起到一个类似路由器的转发动作。
七层负载均衡中,TCP连接需要建立两次:客户端需要和七层负载均衡设备建立,七层负载均衡设备需要和后端服务器建立,所以效率低于四层负载均衡。
配置七层负载均衡
四层负载均衡设备可以对七层负载均衡设备实现负载均衡,配置两台七层负载均衡服务器,作为四层负载均衡服务器的后端服务器,使用 Nginx服务 实现七层负载均衡:
# LB01
# 配置文件
[root@lb01 ~]# cat /app/nginx/conf/conf.d/all.conf
upstream all {
server 172.16.1.8:80;
server 172.16.1.7:80;
server 172.16.1.9:80;
check interval=3000 rise=2 fall=3 timeout=1000 type=tcp;
}
server {
listen 8005;
server_name wecenter.wqh.com blog.wqh.com;
location / {
proxy_pass http://all;
include proxy_params;
}
location /check {
check_status;
}
}
# proxy_parmas 文件内容略
# LB02
# 配置文件
[root@lb02 ~]# cat /app/nginx/conf/conf.d/all.conf
upstream all {
server 172.16.1.8:80;
server 172.16.1.7:80;
server 172.16.1.9:80;
check interval=3000 rise=2 fall=3 timeout=1000 type=tcp;
}
server {
listen 8006;
server_name wecenter.wqh.com blog.wqh.com;
location / {
proxy_pass http://all;
include proxy_params;
}
location /check {
check_status;
}
}
# proxy_parmas 文件内容略
配置四层负载均衡
使用 Nginx服务 实现四层负载均衡,此处涉及到 ngx_stream_core_module
模块,需要注意的是此模块配置是和 http层 同一级别的,在主配置文件 nginx.conf 中需要和 events层、http层 并列,此处使用 include 配置, 将 stream层 的子配置文件全部放到对应的目录中,方便集中管理:
# FLB01
[root@flb01 nginx]# cat nginx.conf
......
events {
......
}
include stream/*.conf;
http {
......
}
[root@flb01 nginx]# cat stream/l4.conf
stream {
log_format proxy '$remote_addr $remote_port - [$time_local] $status $protocol '
'"$upstream_addr" "$upstream_bytes_sent" "$upstream_connect_time"' ;
access_log /var/log/nginx/proxy.log proxy;
upstream flb {
server 172.16.1.5:8005;
server 172.16.1.6:8006;
}
server {
listen 80;
proxy_connect_timeout 3s;
proxy_timeout 3s;
proxy_pass flb;
}
}
Nginx 四层负载均衡的更多相关文章
- nginx四层负载均衡配置
nginx四层负载均衡配置代理Mysql集群 环境如下: ip 192.168.6.203 Nginx ip 192.168.6.*(多台) Mysql 步骤一 查看Nginx是否安装stream模块 ...
- Nginx四层负载均衡概述
目录 Nginx四层负载均衡概述 什么是负载均衡 负载均衡应用场景 四层,七层集群架构 四层负载均衡总结 Nginx如何配置四层负载均衡 nginx四层负载均衡端口转发 Nginx四层负载均衡概述 什 ...
- 14、Nginx四层负载均衡
1.Nginx四层负载均衡基本概述 1.1.什么是四层负载均衡 四层负载均衡基于传输层协议包来封装的(如:TCP/IP),那我们前面使用到的七层是指的应用层,它的组装在四层基础之上,无论四层还是七层都 ...
- Nginx四层负载均衡
目录 Nginx四层负载均衡概述 Nginx如何配置四层负载均衡 使用nginx四层负载均衡实现tcp的转发 Nginx四层负载均衡概述 什么是四层负载均衡 四层负载均衡是基于传输层协议包来封装的(如 ...
- 安装Nginx四层负载均衡
Nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信. stream模块默认不安装的,需要手动添加参数:–with-stream,官方下载地址:downlo ...
- 14.Nginx四层负载均衡
1.七层负载均衡: 根据url 调度不同的集群 url.cheng.com 10.0.0.5 10.0.0.7 /pass 10.0.0.8 /user 1.web01和web02配置 (只不过代码不 ...
- linux+asp.net core+nginx四层负载均衡
Linux Disibutaion:Ubuntu 16.04.1 LTS Web Server:Nginx.Kestrel 关于如何在linux中部署asp.net core我这里不再详细介绍,可以参 ...
- 配置Nginx四层负载均衡
nginx 支持TCP转发和负载均衡的支持 实现下面的架构: 看配置: #user nobody; worker_processes 1; #error_log logs/error.log; #er ...
- Nginx四层负载均衡1
1.Nginx负载均衡Redis 服务器 IP地址 作用 系统版本 Nginx代理服务器 10.0.0.38 负载均衡服务器 Rocky8.6 Redis服务器1 10.0.0.18 Redis服务器 ...
随机推荐
- 一. SpringCloud简介与微服务架构
1. 微服务架构 1.1 微服务架构理解 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦.你可以将其看作是在 ...
- 使用memory_profiler异常
在使用memory_profiler模块0.55.0版本执行命令诊断程序内存用量时,遇到下面错误: C:\Users\Chen\Desktop\python_doc\第四模块课件>python ...
- js千分位分隔,数字货币化方法学习记录
js千分位分隔,数字货币化-4种方法(含正则) 方法1-整数货币化 // 整数货币化 function intCurrency(num) { var reg = new RegExp("^[ ...
- OAuth2.0是干什么的?
OAuth2.0是干什么的? 首先用户有一些数据: 将数据存储在服务器上: 这时候有一个应用要访问数据: 如果这个应用是一个恶意程序呢?所以需要一个检验来判断请求是不是安全的: 如何判断是不是安全的? ...
- @functools.lru_cache()
django.views.debug.get_default_exception_reporter_filter @functools.lru_cache()def get_default_excep ...
- 某商城系统(V1.3-2020-01-10)前台命令执行漏洞
漏洞文件: ./inc/module/upload_img.php 先跟进 del_file 函数: 在 del_file 函数中首先执行了unlink操作,然后接着进行了file_exists 判断 ...
- Vue3(三)CND + ES6的import + 工程化的目录结构 = 啥?
突发奇想 这几天整理了一下vue的几种使用方式,对比之后发现有很多相似之处,那么是不是可以混合使用呢?比如这样: vue的全家桶和UI库,采用传统的方式加载(CND.script). 自己写的js代码 ...
- Spring Boot 两种多数据源配置:JdbcTemplate、Spring-data-jpa
多数据源配置 JdbcTemplate支持 Spring-data-jpa支持 多数据源配置 创建一个Spring配置类,定义两个DataSource用来读取application.propertie ...
- Ajax(简介、基础操作、计算器,登录验证)
Ajax简介 Ajax 即"Asynchronous Javascript And XML"(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术. ...
- linux系统find命令详解+xargs命令 、exec命令
find 作用:查找文件 1.name: 指定文件名 例子1. 找到以du结尾的文件 ╭─root@localhost.localdomain ~ ╰─➤ find / -name "*du ...