Docker +Registrator+Consul 容器服務自動加入Nginx集羣

  • 大概配置 沒有完整測試------
  • consul-template:守護程序 用於實時欻性能consul集羣數據 並更新文件系統上的任意數量的指定模板 生成配置文件 更新完成後可以選擇運行任意shell命令
  • gliderlabs/registrator:檢查容器運行狀態 自動註冊和註銷Docker容器的服務到服務配置中心 目前支持Consul etcd 和SkyDNS2

https://github.com/hashicorp/consul-template

https://releases.hashicorp.com/consul-template/0.19.3/consul-template_0.19.3_linux_amd64.zip

#consul-template 安裝在nginx負載均衡節點

  • docker主機啓動註冊器

#IP 註冊到consul的地址 consul配置是要連接的conusl的地址
docker run -d \
--name=registrator \
--net =host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.10.251 \
consul://192.168.10.252:8500

  • 配置 consul-template

mkdir /usr/local/nginx/consul-template -p
cd /usr/local/nginx/consul-template
wget https://releases.hashicorp.com/consul-template/0.19.3/consul-template_0.19.3_linux_amd64.zip
unzip consul-template_0.19.3_linux_amd64.zip
rm -f consul-template_0.19.3_linux_amd64.zip

#consul-template 模板
cat >> /usr/local/nginx/consul-template/admin.ctmpl << EOF
upstream admin {
  ip_hash;
  {{range service "service-admin"}}
   server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=60 weight=1;
  {{end}}
}
server {
  listen 80 default_server;
# 映射博客後臺管理服務
  location  /admin{
    proxy_pass http://admin/;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

EOF

#啓動consul-template 生成nginx配置模板
#示例配置是生成全量的conf 其實可只生成upstream 模塊
/usr/local/nginx/consul-template/consul-template \
-consul-addr=192.168.10.252:8500 \
 -template "/usr/local/nginx/consul-template/admin.ctmpl:/usr/local/nginx/conf.d/admin.conf:/etc/init.d/nginx reload" \
-log-level=info

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章