文章目录
一、Docker consul概述
容器服务更新与发现:先发现再更新,发现的是后端节点上容器的变化(registrator),更新的是nginx配置文件(agent)
registrator:是consul安插在docker容器里的眼线,用于监听监控节点上容器的变化(增加或减少,或者宕机),一旦有变化会把这些信息告诉并注册在consul server端(使用回调和协程的方式,所以它的延迟和资源消耗会很少),consul server发生一旦发生注册列表的变化后,会把注册的信息告诉agent
agent(代理):用来控制consul template模板,用template组件去和nginx.conf来进行对接,模板里全是变量,用变量的方式去加载后端由注册到consul server端之后,server端会把信息告诉agent,agent和template进行对接,写入template,template就有了镜像,更新完之后会作为nginx.conf子配置文件被前端的nginx识别,consul agent会控制reload之后会识别nginx.conf配置文件中的变化,相当于识别后端的节点,就可以在地址池中动态调整自己后端资源。
Consul的特性
- 支持健康检查、允许存储键值对
- 基于Golong语言,可移植性强
- 支持ACL访问控制
二、基于 nginx 与 consul 构建自动发现即高可用的 Docker 服务架构
1.项目需求
- 使用 Docker 将 Consul、Consul template、Registrator 与 Nginx 组成一个值得新人且可扩展的服务架构
- 在这个架构中添加或移除服务时,不需要重写任何配置,也不需要重启任何服务,一切都能够正常运行,以实现自动化运维
2.环境准备
主机 | IP 地址 | 需要安装的软件 |
---|---|---|
主节点 | 192.168.126.11 | docker-ce、consul、consul-template、nginx |
nginx | 192.168.126.12 | doker-ce |
3.部署步骤
#两台节点上都安装 Docker-ce,记得关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i "s/SELINUX=*/SELINUX=disabled/g" /etc/selinux/config
①在主节点上部署consul
[root@xjj ~]# mkdir /consul
[root@xjj ~]# cd /consul/
[root@xjj consul]# rz
[root@xjj consul]# ls
consul_0.9.2_linux_amd64.zip
[root@xjj consul]# unzip consul_0.9.2_linux_amd64.zip -d /usr/bin/
Archive: consul_0.9.2_linux_amd64.zip
inflating: /usr/bin/consul
[root@xjj consul]# consul agent \
> -server \
> -bootstrap \
> -ui \
> -data-dir=/var/lib/consul-data \
> -bind=192.168.126.11 \
> -client=0.0.0.0 \
> -node=consul-server01 &> /var/log/consul.log &
[1] 100683
[root@xjj consul]# jobs -l
[1]+ 100683 运行中 consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.126.11 -client=0.0.0.0 -node=consul-server01 &>/var/log/consul.log &
[root@xjj consul