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服务器 ...
随机推荐
- LeetCode965. 单值二叉树
题目 1 class Solution { 2 public: 3 int flag = 0; 4 bool isUnivalTree(TreeNode* root){ 5 isUnivalTree1 ...
- Unsafe Filedownload - Pikachu
概述: 文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后会开始执行下载代码,将该文件名对应的文件r ...
- 用 UniRx 实现 Timeline 式的异步操作
没接触 UniRx 之前,我在 Unity 中通常用 Coroutine 或 Callback 来实现异步操作.根据我的任务,一般都是去实现游戏组件的演出,比如:敌方角色图形显示后,我方角色 UI ...
- 关于BAPI_TRANSACTION_COMMIT一点说明
我们调用bapi做了相关的业务操作后,通常都要在后面调用 BAPI_TRANSACTION_COMMIT来提交所做得更改 然而,有时候,在程序中需要调用多个不同的BAPI实现不同的功能,那么这个时候就 ...
- printf函数输出格式总结
printf函数格式 函数描述: printf("[格式化字符串]", [参数链表]); 函数声明: int printf(const char *format, ...) ; 输 ...
- SQLSERVER 修改数据实例的排序规则
SQL Server服务器修改排序规则的方法 操作及验证步骤: 1 登录数据库后,查看当前安装数据库默认排序规则的两种方式 方式一.使用SQL Server 2014 Management Studi ...
- 使用bandit对目标python代码进行安全函数扫描
技术背景 在一些对python开源库代码的安全扫描中,我们有可能需要分析库中所使用到的函数是否会对代码的执行环境造成一些非预期的影响.典型的例如python的沙箱逃逸问题,通过一些python的第三方 ...
- ovs-fields
1. 字段匹配 精确匹配 field=value,如,nw_src=10.1.2.3. 按位匹配 field=value/mask,如,nw_src=10.1.0.0/255.255.0.0,nw_s ...
- 基于go-cqhttp实现QQ机器人
本篇文章记录一下自己在编写QQ机器人的时候所遇到的一些问题和核心功能的实现. QQ机器人RabbitBot采用python编写,由于是个人学习使用,故目前不会开源完整代码,只会放出核心代码供学习参考. ...
- the code has to work especially hard to keep things in the same thread
django/asgiref: ASGI specification and utilities https://github.com/django/asgiref/