使用Docker搭建consul集群+registrator实现服务自动注册。
2017-05-15 11:02
1006 查看
准备工作:
10.173.16.83 master
10.172.178.76 node1
10.171.19.139 node2
10.162.204.252 node3
一、安装consul-cluster
master:
docker run -d -h master -v /mnt:/data \
-p 10.173.16.83:8300:8300 \
-p 10.173.16.83:8301:8301 \
-p 10.173.16.83:8301:8301/udp \
-p 10.173.16.83:8302:8302 \
-p 10.173.16.83:8302:8302/udp \
-p 10.173.16.83:8400:8400 \
-p 8500:8500 \
progrium/consul -server -advertise 10.173.16.83 -bootstrap-expect 3
node1:
docker run -d -h node1 -v /mnt:/data \
-p 10.172.178.76:8300:8300 \
-p 10.172.178.76:8301:8301 \
-p 10.172.178.76:8301:8301/udp \
-p 10.172.178.76:8302:8302 \
-p 10.172.178.76:8302:8302/udp \
-p 10.172.178.76:8400:8400 \
-p 8500:8500 \
progrium/consul -server -advertise 10.172.178.76 -join 10.173.16.83
node2:
docker run -d -h node2 -v /mnt:/data \
-p 10.171.19.139:8300:8300 \
-p 10.171.19.139:8301:8301 \
-p 10.171.19.139:8301:8301/udp \
-p 10.171.19.139:8302:8302 \
-p 10.171.19.139:8302:8302/udp \
-p 10.171.19.139:8400:8400 \
-p 8500:8500 \
progrium/consul -server -advertise 10.171.19.139 -join 10.173.16.83
二、安装consul-client
node3:
docker run -d -h node3 -v /mnt:/data \
-p 10.162.204.252:8300:8300 \
-p 10.162.204.252:8301:8301 \
-p 10.162.204.252:8301:8301/udp \
-p 10.162.204.252:8302:8302 \
-p 10.162.204.252:8302:8302/udp \
-p 10.162.204.252:8400:8400 \
-p 8500:8500 \
progrium/consul -advertise 10.162.204.252 -join 10.173.16.83
三、安装regitrator
master:
docker run -d \
-v /var/run/docker.sock:/tmp/docker.sock \
--name registrator -h registrator \
gliderlabs/registrator:latest consul://10.173.16.83:8500
node1:
docker run -d \
-v /var/run/docker.sock:/tmp/docker.sock \
--name registrator -h registrator \
gliderlabs/registrator:latest consul://10.172.178.76:8500
node2:
docker run -d \
-v /var/run/docker.sock:/tmp/docker.sock \
--name registrator -h registrator \
gliderlabs/registrator:latest consul://10.171.19.139:8500
node3:
docker run -d \
-v /var/run/docker.sock:/tmp/docker.sock \
--name registrator -h registrator \
gliderlabs/registrator:latest consul://10.162.204.252:8500
四、简单测试。
1.启动python-micro-service容器。(启动多个,在某个机器或多个机器)
docker run -d -P --name node1 -h node1 jlordiales/python-micro-service:latest
2.定义模版文件并查看结果。
[root@master ~]# cat /tmp/consul.ctmpl
{{range service "python-micro-service"}}\nserver {{.Address}}:{{.Port}}{{end}}
[root@master ~]# consul-template -consul master:8500 -template /tmp/consul.ctmpl:/tmp/consul.result -dry -once
五、测试安装nginx
1.下载安装consul-template
wget https://releases.hashicorp.com/consul-template/0.7.0/consul-template_0.7.0_linux_amd64.zip
unzip consul-template_0.7.0_linux_amd64.zip -d /usr/bin/
2.查看nginx的dockerfile及相关文件。
[root@master nginx]# pwd
/root/nginx
[root@master nginx]# ls
consul-template Dockerfile start.sh
[root@master nginx]# cat Dockerfile
FROM nginx:latest
ENTRYPOINT ["/bin/start.sh"]
EXPOSE 80
VOLUME /templates
ENV CONSUL_URL consul:8500
ADD start.sh /bin/start.sh
RUN rm -v /etc/nginx/conf.d/*
ADD consul-template /usr/local/bin/
#RUN chmod +x /usr/local/bin/consul-template && chmod +x /bin/start.sh
[root@master nginx]# cat start.sh
#!/bin/bash
service nginx start
consul-template -consul=$CONSUL_URL -template="/templates/service.ctmpl:/etc/nginx/conf.d/service.conf:service nginx reload"
3.定义模版文件与结果文件
[root@master ~]# cat /tmp/service.ctmpl
upstream python-service {
least_conn;
{{range service "python-micro-service"}}server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=60 weight=1;
{{else}}server 127.0.0.1:65535; # force a 502 {{end}}
}
server {
listen 80 default_server;
charset utf-8;
location / {
proxy_pass http://python-service;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
4.构建nginx镜像并并启动。
docker build -t nginx .
docker run -p 8080:80 -d --name nginx --volume /tmp/service.ctmpl:/templates/service.ctmpl --link consul:consul nginx
5.查看模版结果。
进入nginx容器,查看配置文件内容。
参考文档:
1.https://jlordiales.me/2015/04/01/consul-template/
2.https://jlordiales.me/2015/02/03/registrator/#advertise
3.https://jlordiales.me/2015/01/23/docker-consul/
10.173.16.83 master
10.172.178.76 node1
10.171.19.139 node2
10.162.204.252 node3
一、安装consul-cluster
master:
docker run -d -h master -v /mnt:/data \
-p 10.173.16.83:8300:8300 \
-p 10.173.16.83:8301:8301 \
-p 10.173.16.83:8301:8301/udp \
-p 10.173.16.83:8302:8302 \
-p 10.173.16.83:8302:8302/udp \
-p 10.173.16.83:8400:8400 \
-p 8500:8500 \
progrium/consul -server -advertise 10.173.16.83 -bootstrap-expect 3
node1:
docker run -d -h node1 -v /mnt:/data \
-p 10.172.178.76:8300:8300 \
-p 10.172.178.76:8301:8301 \
-p 10.172.178.76:8301:8301/udp \
-p 10.172.178.76:8302:8302 \
-p 10.172.178.76:8302:8302/udp \
-p 10.172.178.76:8400:8400 \
-p 8500:8500 \
progrium/consul -server -advertise 10.172.178.76 -join 10.173.16.83
node2:
docker run -d -h node2 -v /mnt:/data \
-p 10.171.19.139:8300:8300 \
-p 10.171.19.139:8301:8301 \
-p 10.171.19.139:8301:8301/udp \
-p 10.171.19.139:8302:8302 \
-p 10.171.19.139:8302:8302/udp \
-p 10.171.19.139:8400:8400 \
-p 8500:8500 \
progrium/consul -server -advertise 10.171.19.139 -join 10.173.16.83
二、安装consul-client
node3:
docker run -d -h node3 -v /mnt:/data \
-p 10.162.204.252:8300:8300 \
-p 10.162.204.252:8301:8301 \
-p 10.162.204.252:8301:8301/udp \
-p 10.162.204.252:8302:8302 \
-p 10.162.204.252:8302:8302/udp \
-p 10.162.204.252:8400:8400 \
-p 8500:8500 \
progrium/consul -advertise 10.162.204.252 -join 10.173.16.83
三、安装regitrator
master:
docker run -d \
-v /var/run/docker.sock:/tmp/docker.sock \
--name registrator -h registrator \
gliderlabs/registrator:latest consul://10.173.16.83:8500
node1:
docker run -d \
-v /var/run/docker.sock:/tmp/docker.sock \
--name registrator -h registrator \
gliderlabs/registrator:latest consul://10.172.178.76:8500
node2:
docker run -d \
-v /var/run/docker.sock:/tmp/docker.sock \
--name registrator -h registrator \
gliderlabs/registrator:latest consul://10.171.19.139:8500
node3:
docker run -d \
-v /var/run/docker.sock:/tmp/docker.sock \
--name registrator -h registrator \
gliderlabs/registrator:latest consul://10.162.204.252:8500
四、简单测试。
1.启动python-micro-service容器。(启动多个,在某个机器或多个机器)
docker run -d -P --name node1 -h node1 jlordiales/python-micro-service:latest
2.定义模版文件并查看结果。
[root@master ~]# cat /tmp/consul.ctmpl
{{range service "python-micro-service"}}\nserver {{.Address}}:{{.Port}}{{end}}
[root@master ~]# consul-template -consul master:8500 -template /tmp/consul.ctmpl:/tmp/consul.result -dry -once
五、测试安装nginx
1.下载安装consul-template
wget https://releases.hashicorp.com/consul-template/0.7.0/consul-template_0.7.0_linux_amd64.zip
unzip consul-template_0.7.0_linux_amd64.zip -d /usr/bin/
2.查看nginx的dockerfile及相关文件。
[root@master nginx]# pwd
/root/nginx
[root@master nginx]# ls
consul-template Dockerfile start.sh
[root@master nginx]# cat Dockerfile
FROM nginx:latest
ENTRYPOINT ["/bin/start.sh"]
EXPOSE 80
VOLUME /templates
ENV CONSUL_URL consul:8500
ADD start.sh /bin/start.sh
RUN rm -v /etc/nginx/conf.d/*
ADD consul-template /usr/local/bin/
#RUN chmod +x /usr/local/bin/consul-template && chmod +x /bin/start.sh
[root@master nginx]# cat start.sh
#!/bin/bash
service nginx start
consul-template -consul=$CONSUL_URL -template="/templates/service.ctmpl:/etc/nginx/conf.d/service.conf:service nginx reload"
3.定义模版文件与结果文件
[root@master ~]# cat /tmp/service.ctmpl
upstream python-service {
least_conn;
{{range service "python-micro-service"}}server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=60 weight=1;
{{else}}server 127.0.0.1:65535; # force a 502 {{end}}
}
server {
listen 80 default_server;
charset utf-8;
location / {
proxy_pass http://python-service;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
4.构建nginx镜像并并启动。
docker build -t nginx .
docker run -p 8080:80 -d --name nginx --volume /tmp/service.ctmpl:/templates/service.ctmpl --link consul:consul nginx
5.查看模版结果。
进入nginx容器,查看配置文件内容。
参考文档:
1.https://jlordiales.me/2015/04/01/consul-template/
2.https://jlordiales.me/2015/02/03/registrator/#advertise
3.https://jlordiales.me/2015/01/23/docker-consul/
相关文章推荐
- 使用Docker搭建consul集群+registrator实现服务自动注册。
- docker深入2-使用registrator和consul-template自动注册和变更服务
- 搭建Docker Swarm集群实战(二)(服务发现使用consul)
- Docker集群实验环境布署--swarm【3 注册服务监控与自动发现组件--consul】
- 搭建Docker Swarm集群实战(一)(服务发现使用consul)
- 服务注册发现consul之二:使用Spring Cloud Consul实现服务的注册和发现
- 使用Spring Cloud Consul实现服务的注册和发现
- PHP网页服务实现注册和商店NPC管理(安装+搭建+使用+问题处理)
- springcloud-1.使用Eureka -robbon构建自动服务发现注册集群和消费者
- 基于Consul+Registrator+Nginx实现容器服务自动发现的集群框架 推荐
- 使用shell实现zookeeper集群的自动搭建
- 使用consul实现服务的注册和发现
- 使用jenkins、docker、consul、nginx搭建支持自动化构建部署以及弹性伸缩的集群系统详细教程
- [转载]微服务注册发现集群搭建——Registrator + Consul + Consul-template + nginx
- 使用Docker镜像搭建consul和swarm集群基础环境及overlay网络
- spring cloud搭建微服务second-fiberhome(二):结合consul实现服务注册与服务发现
- 使用Spring Cloud Consul实现服务的注册和发现
- Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务注册与发现
- 使用consul实现分布式服务注册和发现--redis篇
- 使用docker容器创建Kafka集群管理、状态保存是通过zookeeper实现,所以先要搭建zookeeper集群