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服务器 ...
随机推荐
- C语言流程图画法(C语言学习笔记)
常用符号及其含义 图片来自百度文库 https://wenku.baidu.com/view/beb410dea216147916112853.html 常用结构 N-S图
- [Usaco2009 Feb]Bullcow 牡牛和牝牛
原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=3398 容易想到的一种\(dp\)就是:设\(dp[i][j]\)表示前\(i\)头牛里面有 ...
- Python爬虫:数据分析小能手:JSON库的用法
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. 给大家推荐一个Python交流的q裙,大家在学习遇到了什么问题都可以进群一起交流,大家 ...
- 六个你不知道的PR快捷键,拯救你的剪辑效率
5G时代到来,会剪辑视频的人,无论在校园还是未来步入职场都很吃香.对于普通人来说,视频处理也成为了一个通用技能.PR是我们大多数人剪辑中,经常会用到的剪辑工具,之前的文章中已经给大家总结了pr的一些提 ...
- Spring Security,没有看起来那么复杂(附源码)
权限管理是每个项目必备的功能,只是各自要求的复杂程度不同,简单的项目可能一个 Filter 或 Interceptor 就解决了,复杂一点的就可能会引入安全框架,如 Shiro, Spring Sec ...
- feign使用okHttpClient,调用原理
最近项目中 spring cloud 用到http请求,使用feign,配置okhttp,打算配置一下就直接使用,不过在压测与调优过程中遇到一些没有预测到的问题,附上排查与解析结 yml.pom配置 ...
- echarts图表X轴文字过长解决解决方案:根据文字长度自动旋转
Echarts 标签中文本内容太长的时候怎么办 ? 关于这个问题搜索一下,有很多解决方案.无非就是 省略(间隔显示).旋转文字方向.竖排展示 前面两种解决方案,就是echarts暴露的: { ax ...
- LVS负载均衡理论以及算法概要
一. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.or ...
- 网络流 - dinic + 当前弧优化【代码】
这是初学网络流的时候从<算法竞赛进阶指南>抄下来的一份代码,自己理解的也不是很透彻. 注意,边要从 \(1\) 开始计,不然直接 \(xor\) 运算的话取反边会直接炸掉. #includ ...
- PIGS_POJ1149
PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20253 Accepted: 9252 Description ...