Docker consul
一、Docker consul简介
consul是HashiCorp公司推出使用go语言编写的开源工具,用于实现分布式系统的服务发现与配置
- consul支持健康检查,允许存储键值对
- 一致性协议采用Raft算法,用来保证服务的高可用
- 成员管理和消息广播采用GOSSIP协议,支持ACL访问控制
- 方便部署,与Docker等轻量级容器可无缝配合
Docker consul服务更新与发现的服务架构
- consul template:配置文件模板
- registrator:注册机制
- consul server:consul服务
上方拓扑图是基于Docker完成的,然后将consul、consul template、registrator和nginx组装成一个值得信任且可扩展的服务框架,此架构可以灵活的、不需要重启任何服务、不需要重写任何配置的添加和移除服务
当后方增加了一个容器时,容器会注册registrator,registrator发现增加了一个容器的时候,会通知consul server要更新,consul server使用consul template模板更新
Docker consul自动发现服务架构的构建
- 每个提供服务的节点上都要部署和运行consul的agent
- consul agent有两种运行模式:server和client
- server和client只是consul集群层面的区分,与搭建在cluster之上的应用服务无关
二、模拟实验
consul节点 | 192.168.153.40 | Docker-ce、Consul、Consul-template、nginx |
---|---|---|
web节点 | 192.168.153.60 | Docker-ce |
consul节点
mkdir consul
cd consul/ #拉入软件包
unzip consul_0.9.2_linux_amd64.zip -d /usr/bin
consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.153.40 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &
jobs
##查看集群信息
consul members
consul info | grep leader