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

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