Nginx-Stream-UpSync-Module 是基于nginx四层TCP协议的弹性扩缩容方案,实现性能无损的扩容缩容:
当前模块支持etcd 和 consul,相关配置如下:
nginx-etcd:
stream { upstream test { # fake server otherwise ngx_stream_upstream will report error when startup server 127.0.0.1:11111; # all backend server will pull from etcd when startup and will delete fake server upsync 127.0.0.1:8500/v2/keys/upstreams/test upsync_timeout=6m upsync_interval=500ms upsync_type=etcd strong_dependency=off; upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf; } upstream bar { server 127.0.0.1:8090 weight=1, fail_timeout=10, max_fails=3; } server { listen 12345; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass test; } server { listen 2345; upstream_show } server { listen 127.0.0.1:9091; proxy_responses 1; proxy_timeout 20s; proxy_pass bar; } }
nginx-consul:
stream { upstream test { # fake server otherwise ngx_stream_upstream will report error when startup server 127.0.0.1:11111; # all backend server will pull from consul when startup and will delete fake server upsync 127.0.0.1:8500/v1/kv/upstreams/test upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off; upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf; } upstream bar { server 127.0.0.1:8090 weight=1, fail_timeout=10, max_fails=3; } server { listen 12345; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass test; } server { listen 2345; upstream_show } server { listen 127.0.0.1:9091; proxy_responses 1; proxy_timeout 20s; proxy_pass bar; } }
相关设计文档可参考:https://github.com/weibocom/nginx-upsync-module/tree/master/doc;
设计原理一致。
缘起 最近一直在研究日志收集系统的框架,之前在线游戏的数据发送都是由游戏服务器发送的,我来之前一直是rsync传输,也还算稳定。但现在上了单机游戏,只能由手机客户端直接发送,dau比较高,最近很火的<<贪吃蛇>>在海外上线,一个星期dau已经达到千万级别。初步方案,lvs做4层负载均衡,下挂nginx做7层转发,数据直接入kafaka。一直不太喜欢通过reload修改nginx upstream,
原理 Nginx为什么那么快 Nginx采用多进程+epoll的方式对请求进行处理,每一个请求就是对socket时间的读写,相比传统的阻塞IO,epoll通过IO多路复用的方式,在同一个线程中高效的完成读写操作,相比多线程减少了线程间切换的消耗,极大地提升了效率。 Nginx请求流程 初始化 请求解析 请求处理 数据过滤 返回 Master和Worker的关系 Master进程Fork出Worke
t 编译安装Nginx并添加微博的nginx-upsync-module模块 下载Nginx的源码 # wget http://nginx.org/download/nginx-1.16.0.tar.gz # tar -zvxf nginx-1.16.0.tar.gz 使用git克隆模块 git clone https://github.com/onecer/nginx-upsync-modul
使用nginx-upsync-module动态更新nginxupstream,github 地址为:https://github.com/weibocom/nginx-upsync-module 如果使用的nginx tcp的负载均衡可以使用 https://github.com/xiaokai-wang/nginx-stream-upsync-module nginx-upsync-module
转载请注明出处:https://blog.csdn.net/l1028386804/article/details/100627169 有关Consul的安装可以参见博文《高可用之——Consul+Consul-template实现HTTP动态负载均衡》 一、静态负载均衡 Nginx的四层静态负载均衡需要启用ngx_stream_core_module模块,默认情况下,ngx_stream_cor
1.常用的动态配置Nginx负载均衡方式 Consul+Consul-template 每次发现配置更改,重启Nginx。 Consul+OpenResty 实现无需重启Nginx的动态负载均衡。 Consul+upsync+Nginx 实现无需重启Nginx的动态负载均衡。 (本文如果有错别字还请大家提醒一下) 2、配置Concul服务器 2.1安装解压ZIP软件 如果未安装 unzip软件,在
Http动态负载均衡 什么是动态负载均衡 传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件, 因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新加载nginx.conf。 这类似分布式的配置中心 动态负载均衡实现方案 1.Consul+Consul-template 每次发现配置更改需要raload ng
nginx-upsync-module 是微博开源的一个基于 Nginx 实现动态配置的模块,通过拉取 Consul 或 etcd (及其它)的上游数据,实现无需重新加载 Nginx ,动态修改后端服务器属性(weight,max_fails,down ...)。 修改配置文件并重新启动 Nginx 可能并不总是很方便。 例如,当遇到大流量和高负载,重启 Nginx 并在此时重新加载配置会进一步增
ScalingEntry SPI 名称 详细说明 ScalingEntry 弹性伸缩入口 已知实现类 详细说明 MySQLScalingEntry 基于 MySQL 的弹性伸缩入口 PostgreSQLScalingEntry 基于 PostgreSQL 的弹性伸缩入口
背景 Apache ShardingSphere 提供了数据分片的能力,可以将数据分散到不同的数据库节点上,提升整体处理能力。 但对于使用单数据库运行的系统来说,如何安全简单地将数据迁移至水平分片的数据库上,一直以来都是一个迫切的需求; 同时,对于已经使用了 Apache ShardingSphere 的用户来说,随着业务规模的快速变化,也可能需要对现有的分片集群进行弹性扩容或缩容。 简介 Sha
目的 测试 OpenSHift 水平弹性扩展,资源限制。 环境 openshift v3.11.16/kubernetes v1.11.0 步骤 创建工程1. CLI 登录到 OCP $ oc login https://master.example.com:8443 -u admin -p admin2. 创建工程 $ oc new-project test-hpa 准备测试镜像 本部分使用测试
弹性伸缩组即根据业务需求和策略设置伸缩策略,实现虚拟机弹性扩容和收缩的功能。 弹性伸缩组即根据业务需求和策略设置伸缩策略,实现虚拟机弹性扩容和收缩的功能。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “主机/主机/弹性伸缩组” 菜单项,进入弹性伸缩组页面。 使用流程 在主机模板页面中创建用于弹性伸缩组的主机模板,目前仅支持 云联壹云 和Azure平台的主机模板。 在弹性伸缩组页面
Upsync,微博开源基于Nginx容器动态流量管理方案 。 Nginx 以其超高的性能与稳定性,在业界获得了广泛的使用,微博的七层就大量使用了 Nginx 。结合 Nginx 的健康检查模块,以及动态 reload 机制,可以近乎无损的服务的升级上线与扩容。这个时候扩容的频次比较低,大多数情况下是有计划的扩容。 Upsync,开发了模块 nginx-upsync-module,它的功能是拉取 c