安装consul
见 consul
安装consul-template
1 | wget https://releases.hashicorp.com/consul-template/0.20.0/consul-template_0.20.0_linux_amd64.tgz |
注册服务
1 | curl http://192.168.100.140:8500/v1/agent/service/register -X PUT -i -H "Content-Type:application/json" -d '{ |
编写NginX配置模板
nginx.conf.ctmpl:
1 | {{range services -}} |
编写consul-template配置文件
nginx.hcl:
1 | consul { |
测试consul-template
1 | consul-template -config nginx.hcl # 会生成/etc/nginx/conf.d/default.conf |
测试自动更新NginX配置
- 运行consul-template服务
1 | nohup consul-template -config nginx.hcl >/var/log/consul-template.log 2>&1 & |
模拟健康状态异常时自动更新NginX配置
比如,修改
"HTTP": "http://192.168.101.35:9003/hc"
为"HTTP": "http://192.168.101.35:9003/hcc"
,重新注册该服务后test.zlz.01的服务健康状态变为不正常。consul-template能自动检测到异常,并重新生成/etc/nginx/conf.d/default.conf。