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服务器 ...
随机推荐
- Electron小白入门自学笔记(一)
码文不易啊,转载请带上本文链接呀,感谢感谢 https://www.cnblogs.com/echoyya/p/14297176.html 一.从Hello Electron开始 创建一个空的文件夹, ...
- DOS的FOR命令用法总结
鉴于dos自带的关于for命令的帮助信息看起来太简单,自己总结了一下,并增加了必要的实例,以备日后自己查阅.其中一些地方可能存在理解错误,敬请指出. [转发请注明出处]
- Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之管理 Transactions
系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...
- HTTP协议相关知识整理:
http协议简介 超文本传输协议:是一种用于分布式.协作式和超媒体信息系统的应用层协议. 一次请求一次响应之后断开连接(无状态,短连接) 分析http请求信息格式 http工作原理 以下是 HTTP ...
- GIT常用命令:
1.安装好Git之后,点击鼠标右键即可看到有Git bush选项,点击即可进入Git命令行操作. 2.使用命令: git config --global user.name "lyh&q ...
- 浅析Redis与IO多路复用器原理
为什么Redis使用多路复用I/O Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导 ...
- High Performance Networking in Google Chrome 进程间通讯(IPC) 多进程资源加载
小结: 1. 小文件存储于一个文件中: 在内部,磁盘缓存(disk cache)实现了它自己的一组数据结构, 它们被存储在一个单独的缓存目录里.其中有索引文件(在浏览器启动时加载到内存中),数据文件( ...
- 深入理解SPI机制-服务发现机制
https://www.jianshu.com/p/3a3edbcd8f24 SPI ,全称为 Service Provider Interface,是一种服务发现机制.它通过在ClassPath路径 ...
- BootstrapValidator验证规则、BootStrap表格:列参数
BootstrapValidator验证规则 需引用组件 <script src="~/Scripts/jquery-1.10.2.js"></script> ...
- Language Guide (proto3) | proto3 语言指南(一)定义消息类型
定义消息类型 首先让我们看一个非常简单的例子.假设您想定义一个搜索请求消息格式,其中每个搜索请求都有一个查询字符串.您感兴趣的特定结果页以及每页的结果数.下面是用于定义.proto消息类型的文件. s ...