码迷,mamicode.com
首页 > 其他好文 > 详细

Consul+Registrator+Consul-template实现动态修改nginx配置文件

时间:2016-04-27 18:59:27      阅读:572      评论:0      收藏:0      [点我收藏+]

标签:配置文件   服务器   动态   信息   

实现需求

用nginx做负载均衡,手动的方式是在upstream中添加或删除后端服务器,比较麻烦.

通过Registrator收集需要注册到Consul作为Nginx后端服务器信息然后注册到Consul key/value.Consul-template去Consul key/value中读取信息,然后自动修改Nginx配置文件并平滑重启Nginx.不需要修改nginx.conf

环境

192.168.0.149Mesos-masterZookeeperConsul-serverConsul-templateNginx
192.168.0.161Mesos-masterZookeeperMarathon

192.168.0.174Mesos-masterZookeeper


192.168.0.239Mesos-salveRegistrator


步骤

mesosphere和Nginx搭建过程省略

启动Consul-server

 docker run -d --name=consul --net=host gliderlabs/consul-server -bootstrap -bind=192.168.0.149

启动Registrator

NOTE:这种启动方式是注册到Consul的key/value

 docker run -d  --name=registrator     --net=host   --volume=/var/run/docker.sock:/tmp/docker.sock    gliderlabs/registrator:latest consulkv://localhost:8500/hello

安装Consul-template

wget -c  https://releases.hashicorp.com/consul-template/0.12.0/consul-template_0.12.0_linux_amd64.zip
unzip -d . consul-template_0.12.0_linux_amd64.zip    
cp consul-template    /usr/local/bin/.

配置nginx.conf模板

NOTE:

consul-template和nginx必须装到一台机器,因为consul-template需要动态修改nginx配置文件

只需要把nginx.conf默认配置复制到这里,然后修改upstream段.

#vim /root/nginx_web.ctmpl 
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
   upstream app {
     {{range $key, $pairs := tree "hello/" | byKey}}{{range $serverid, $pair := $pairs}}
     server {{.Value}}; weight=1 {{end}}{{end}}
   }
   server {
        listen       80;
        server_name  localhost;
        
       location / {
         http://app;
       }

        }

    }


}

启动consul-template

consul-template -consul 192.168.0.149:8500 -template /root/nginx_web.ctmpl:/usr/local/nginx/conf/nginx.conf:"/usr/local/nginx/sbin/nginx -s reload"

测试:

用marathon启动一个nginx容器,看registrator是否注册到consul,然后看consul-template是否自动添加了这个后端服务器到/usr/local/nginx/conf/nginx.conf




本文出自 “翟军铭的linux博客” 博客,请务必保留此出处http://zhaijunming5.blog.51cto.com/10668883/1768321

Consul+Registrator+Consul-template实现动态修改nginx配置文件

标签:配置文件   服务器   动态   信息   

原文地址:http://zhaijunming5.blog.51cto.com/10668883/1768321

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!