nginx一般直接在配置文件里配置upstream即可实现负载均衡,但有些特定的环境下此种方式就显得有些局限性。比如后台动态调整节点的时候;调整节点后不想修改配置文件重启nginx。
可以将配置文件从nginx本地迁移到其他第三方服务上如etcd、consul上,然后通过nginx-upsync-module模块实时同步到配置文件中,实现上下线节点动态同步到upstream配置中,再结合ngx_healthcheck_module实现后端健康检测。
可以将配置文件从nginx本地迁移到其他第三方服务上如etcd、consul上,然后时候拉取配置到本地。本文采用nginx-upsync-module,主要支持consul、etcd,本文以etcd为例。
etcd介绍
etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。在这些用于存放nginx中关于upstream的配置信息。
etcd使用的2个默认端口号:2379和2380 2379:用于客户端通信 2380:用于与集群中的Peer通信
1.安装etcd(单机版)
2.启动
3.生成脚本
4.nginx安装
安装nginx,同时安装七层后端检测模块为例
5.配置说明
语法参数
server 127.0.0.1:11111;本机upsync工作虚拟端口
127.0.0.1:2379/v2/keys/upstreams/test, etcd服务器同步路径
upsync_interval=6m;每隔一段时间从consul/etcd中拉出服务器
upsync_timeout=500ms,从consul/etcd请求中提取服务器超时。
upsync_type=etcd,从拉取服务器类型:consul,etcd。
strong_dependency=off,每次在nginx启动或重新加载时,nginx是否从consul/etcd中拉出配置,on,拉取
off,不拉取配置
upsync_dump_path /usr/local/nginx/conf/upstream.conf, 同步存储配置文件路径
include /usr/local/nginx/conf/upstream.conf, 加载配置文件路径
最终实际配置
6.启动服务
7.后端服务添加配置
后端web服务上线后,需要向etcd中添加注册信息,添加成功以后,nginx反代自动从etcd中拉取配置,实现后端服务上线自动添加至配置中。
后端web服务新上线
增加服务器节点语法
后端web服务新下线
删除服务节点
调整服务参数
检测
查看nginx中的配置文件