Nginx TCP 负载均衡:stream 模块配置
工作上遇到需要用nginx做负载均衡,参考了前同事留下的作业顺利搞定,感觉这块很有意义写篇文档记录。
参考:nginx tcp负载均衡(Stream模块)配置说明
参考:利用nginx进行TCP负载均衡实战
直接上配置
user nginx;
worker_processes 2;
error_log /var/log/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
stream {
log_format proxy '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
access_log /var/log/nginx/access.log proxy;
upstream stream_backend {
least_conn; ## 默认是轮询算法,这里修改为:least-connected :对于每个请求,nginx选择当前连接数最少的server来处理
server 192.168.230.25:10014 max_fails=2 fail_timeout=30s;
server 192.168.230.61:10014 max_fails=2 fail_timeout=30s;
server {
listen 443 ssl;
proxy_protocol on;
ssl_certificate keys/xx.pem;
ssl_certificate_key keys/xx.pem;
proxy_pass stream_backend;
proxy_timeout 3600s;
proxy_connect_timeout 10s;
}
}
这个配置比较好理解,项目上有需要也可以直接用。
stream 模块介绍
从1.9.0开始,NGINX增加了stream模块用来实现四层协议的转发、代理和负载均衡。
与著名的四层LB软件lvs相比,stream 模块(开源版)无论从功能还是性能上,都有一定的差距,实现也相对简单。从性能上来说,stream模块在应用层实现四层的转发,需要与两端建立起socket连接,然后两端的数据收发进行代理转发。因此,大量的数据从内核态到用户态再从用户态到内核态传递。这些数据copy加上系统调度的开销,使得它的性能与纯内核态转发的lvs相比,有一定差距。
在用户态做四层的proxy,从原理上讲主要有如下步骤:
创建一个socket 监听client连接。
Client连接到来以后,使用load balancer算法选取一个正确的upstream 服务器并且建立socket连接。
把从client收到的数据转发给upstream server,同时把upstream server收到的数据转发给client。
日志格式解释
$remote_addr:客户端的IP地址。
$time_local:请求的时间和日期。
$protocol:请求使用的协议(例如HTTP/1.1)。
$status:响应的状态码。
$bytes_sent:发送给客户端的字节数。
$bytes_received:从客户端接收的字节数。
$session_time:请求的处理时间。
$upstream_addr:后端服务器的IP地址和端口号。
$upstream_bytes_sent:发送给后端服务器的字节数。
$upstream_bytes_received:从后端服务器接收的字节数。
$upstream_connect_time:与后端服务器建立连接的时间。
Nginx TCP 负载均衡:stream 模块配置的更多相关文章
- Nginx 反向代理功能-实现Nginx tcp负载均衡
Nginx 反向代理功能-实现Nginx tcp负载均衡 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Nginx专题(2):Nginx的负载均衡策略及其配置
本文介绍了Nginx的负载均衡策略,一致性hash分配原理,及常用的故障节点的摘除与恢复配置. 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第一期-宜信支付结算八方数据团队高级技术经理 ...
- Centos7 nginx的负载均衡概念与配置
一.负载均衡概念 负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台 ECS 的流量分发控制服务.负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单 ...
- nginx tcp负载均衡配置
1. nginx从1.9.0后引入模块ngx_stream_core_module,模块是没有编译的,需要用到编译需添加--with-stream配置参数 2. 在 nginx.conf 文件中, 与 ...
- nginx tcp负载均衡 (Module ngx_stream_upstream_module)
Example ConfigurationDirectives upstream server zone state hash least_conn ...
- 【精选】Nginx负载均衡学习笔记(一)实现HTTP负载均衡和TCP负载均衡(官方和OpenResty两种负载配置)
说明:很简单一个在HTTP模块中,而另外一个和HTTP 是并列的Stream模块(Nginx 1.9.0 支持) 一.两个模块的最简单配置如下 1.HTTP负载均衡: http { include m ...
- Nginx作为TCP负载均衡
参考文档:https://www.cnblogs.com/stimlee/p/6243055.html Nginx在1.9版本以后支持TCP负载均衡,模块默认是没有编译的,需要编译时添加—with-s ...
- Nginx之负载均衡配置(一)
前文我们聊了下nginx作为反向代理服务器,代理后端动态应用服务器的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12430543.html:今天我们来聊 ...
- 14.Nginx四层负载均衡
1.七层负载均衡: 根据url 调度不同的集群 url.cheng.com 10.0.0.5 10.0.0.7 /pass 10.0.0.8 /user 1.web01和web02配置 (只不过代码不 ...
- Nginx网络负载均衡,负载均衡,网络负载,网络均衡
本节就聊聊采用Nginx负载均衡之后碰到的问题: Session问题 文件上传下载 通常解决服务器负载问题,都会通过多服务器分载来解决.常见的解决方案有: 网站入口通过分站链接负载(天空软件站,华军软 ...
随机推荐
- PYTHON数据分析——python基础
利用命令行创建python文件 C:\Users\Your Name>python myfile.py Python 变量命名规则: 变量名必须以字母或下划线字符开头 变量名称不能以数字开头 变 ...
- [Pytorch框架] 4.5 多GPU并行训练
文章目录 4.5 多GPU并行训练 4.5.1 torch.nn.DataParalle 4.5.2 torch.distributed 4.5.3 torch.utils.checkpoint im ...
- Django笔记三十七之多数据库操作(补充版)
本文首发于公众号:Hunter后端 原文链接:Django笔记三十七之多数据库操作(补充版) 这一篇笔记介绍一下 Django 里使用多数据库操作. 在第二十二篇笔记中只介绍了多数据库的定义.同步命令 ...
- 猿人学内部js练习平台习题记录
猿人学内部js练习平台习题记录 根据课程更新 当前先完成第7题和第10题 第7题 骚操作 请求规律检测1 - post 1)通过fiddler抓包,看看请求头和请求体有什么骚操作的地方,如果没有反爬就 ...
- Django4全栈进阶之路13 template模板
在 Django 中,模板(Template)用于生成动态的 HTML 页面.通常情况下,Django 项目包含多个视图函数,每个视图函数都负责渲染不同的 HTML 页面.使用模板可以让我们将 HTM ...
- ODOO升级模块后到系统进入不了,报错500
有时候安装后者升级odoo相关模块后会导致系统进入不了,报错500,此时我们可以通过Odoo命令行卸载相关模块 此方法适用于在安装或升级某个模块后导致崩库,进不去桌面的情况下使用.原理是通过odoo- ...
- 自研API 网关 - 媲美美团这套Shepherd网关架构!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 我说:"很多互联网大厂,很少基于 SpringMVC 模块对外提供 WEB 服务的 ...
- Java Websocket 02: 原生模式通过 Websocket 传输文件
目录 Java Websocket 01: 原生模式 Websocket 基础通信 Java Websocket 02: 原生模式通过 Websocket 传输文件 Websocket 原生模式 传输 ...
- CSR格式如何更新? GES图计算引擎HyG揭秘之数据更新
摘要:HyG图计算引擎采用CSR格式来存储图的拓扑信息,CSR格式可以将稀疏矩阵的存储空间压缩,进而大大降低图的存储开销,同时具备访问效率高.格式易转化等优点. 本文分享自华为云社区<CSR格式 ...
- Kubernetes(k8s)访问控制:身份认证
目录 一.系统环境 二.前言 三.Kubernetes访问控制 四.身份认证简介 五.身份认证 5.1 配置客户端机器 5.2 使用base auth的方式进行认证 5.3 使用token的方式进行认 ...