使用 NGINX Plus 和 Consul 进行服务发现

主要观点:服务发现是多数分布式系统及面向服务或微服务架构的关键组件,因服务实例网络位置动态分配且会随自动缩放、故障或升级而改变,客户端需复杂的服务发现机制来追踪服务实例当前网络位置。
关键信息

  • 介绍如何动态添加或删除注册到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 上游组中添加或删除的时间。
阅读 17
0 条评论