主要观点:服务发现是多数分布式系统及面向服务或微服务架构的关键组件,因服务实例网络位置动态分配且会随自动缩放、故障或升级而改变,客户端需复杂的服务发现机制来追踪服务实例当前网络位置。
关键信息:
- 介绍如何动态添加或删除注册到Consul的负载均衡服务器,使用 NGINX Plus 的动态重新配置 API,R8 版本下 API 更改在重启和配置重载时仍持久。
- Consul 由HashiCorp开发,用于发现和配置基础设施中的服务,还提供故障检测、键值存储等功能。
- 创建了consul-demo GitHub 项目,包含配置步骤,可结合 NGINX Plus 动态重新配置 API 与 Consul。
重要细节: - 分别启动多个 Docker 容器,包括 Consul(服务发现)、Registrator(向 Consul 注册服务)、tutum/hello-world 和 google/golang-hello(模拟服务)、NGINX Plus R8(负载均衡)。
- NGINX Plus 容器监听公共端口 80 和内部活动监控仪表盘端口 8080,Consul 容器监听多个端口并提供固定 IP 地址用于容器间通信。
- Registrator 监测 Docker 中新启动的带有暴露端口的容器并向 Consul 注册服务,通过设置环境变量明确注册方式,容器退出或移除时自动从 Consul 服务目录中删除。
- 在 consul-demo 的 JSON 文件中配置 Consul监视,每次注册服务列表更新时调用外部处理脚本script.sh,该脚本获取当前 NGINX Plus 上游服务器列表,通过 Consul服务API 遍历标记为
production
的注册容器,使用动态重新配置 API 将其添加到上游组或移除未注册的容器。
总结:通过演示中的脚本可基于注册到 Consul 的服务自动在 NGINX Plus 中重新配置上游组,无需手动处理 API 调用,减少服务状态更改到在 NGINX Plus 上游组中添加或删除的时间。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。