文章目录
一、概述
1、什么是consul
- Consul是HashiCorp公司推出的开源工具,Consul由Go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色、轻量级的特点。
- Consul是分布式的、高可用的、可横向扩展的用于实现分布式系统的服务发现与配置
Consul的作用
- 服务注册与发现(主要功能),提供HTTP和DNS两种发现方式
- 健康检查,支持多种协议,HTTP、TCP等
- Key/Value存储
- 支持多数据中心
- 基于Golong语言,可移植性强
- 支持ACL访问控制
- 与Docker等轻量级容器可无缝配合
2、consul-template概述
- Consul-Template是一个守护进程,用于实时查询Consul集群信息
- Consul-Template可以更新文件系统上任意数量的指定模板,生成配置文件
- 更新完成以后,可以选择运行shell命令执行更新操作,重新加载Nginx。
- Consul-Template可以查询Consul中的服务目录、Key、Key-values等。
- 这种强大的抽象功能和查询语言模板可以使Consul-Template特别适合动态的创建配置文件。
- 例如:创建Apache/Nginx Proxy Balancers、Haproxy Backends
3、registrator的作用
- 一个由Go语言编写的,针对docker使用的,可以用于检测容器状态,自动注册和注销docker容器的服务到服务配置中心。目前支持Consul、Etcd和SkyDNS2。
二、搭建consul集群搭建
案例环境
consul:192.168.10.20
registrator:192.168.10.60
案例需求
- 实现单机网络下容器与容器之间互通
- 使用Docker Compose创建容器
- 搭建Consul服务实现自动发现和更新
实验准备
- 两台主机配置好docker
1、安装Consul
consul:192.168.10.20
mkdir /root/consul
cd /root/consul
//放入安装包
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/bin
consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.10.20 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &
查看集群信息
consul members
consul info | grep leader
这里查询到的8300端口用于集群内数据的读写和复制
通过httpd api获取集群信息
curl 127.0.0.1:8500/v1/status/peers //查看集群server成员
curl 127.0.0.1:8500/v1/status/leader //集群Raf leader
curl 127.0.0.1:8500/v1/catalog/services //注册的所有服务
curl 127.0.0.1:8500/v1/catalog/nginx //查看nginx服务信息
curl 127.0.0.1:8500/v1/cat