目录
Ⅰ、安装consul-template(consul服务器上)
一、consul特点
Ⅰ、服务发现
服务发现是分布式应用程序之间管理相互关系的一种机制。一个分布式程序一般由多个组件组成。这些组件可以都放在一台机器上,也可以分布在多个数据中心,甚至分布在不同的地理区域。这些组件通常可以为其他组件提供服务,或者为其他组件消费服务
Ⅱ、健康检查(Health Checking)
Consul的Client可以提供任意数量的健康检查,既可以与给定的服务相关联(“webserver是否返回200 OK”),也可以与本地节点相关联(“内存利用率是否低于90%”)。操作员可以使用这些信息来监视集群的健康状况,服务发现组件可以使用这些信息将流量从不健康的主机路由出去。
Ⅲ、Key/Value存储
应用程序可以根据自己的需要使用Consul提供的Key/Value存储。 Consul提供了简单易用的HTTP接口,结合其他工具可以实现动态配置、功能标记、领袖选举等等功能。
Ⅳ、安全服务通信
Consul可以为服务生成和分发TLS证书,以建立相互的TLS连接。意图可用于定义允许哪些服务通信。服务分割可以很容易地进行管理,其目的是可以实时更改的,而不是使用复杂的网络拓扑和静态防火墙规则。
Ⅴ、多数据中心
Consul支持开箱即用的多数据中心. 这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域
二、consul应用场景
Consul的应用场景包括服务发现、服务隔离、服务配置
本文使用Consul( https://www.consul.io/)作为服务发现工具的例子。Consul是一个使用一致性算法的特殊数据存储器。Consul使用Raft一致性算法来提供确定的写入机制。Consul暴露了键值存储系统和服务分类系统,并提供可用性、高容错能力,并保证强一致性。服务可以将自己注册到Consul,并以高可用且分布式的方式共享这些信息
Consul还提供了一些有趣的功能:
提供了根据API进行服务分类,代替了大部分传统服务发现工具的键值对存储
提供两种接口来查询信息:基于内置的DNS服务的DNS查询接口和基于HTTP的REST API查询接口。选择适合的接口,尤其是基于DNS的接口,可以很方便地将Consul与现有环境集成
提供了服务监控,也称作健康监控。Consul内置了强大的服务监控系统。
为了更好地理解Consul是如何工作的,本文先介绍如何在Docker容器里分布式运行Consul。之后会从Docker容器将服务注册到Consul,并从其他Docker容器访问注册的数据。为了更有挑战,会让这些容器运行在不同的Docker宿主机上
为了做到这些,需要做到以下几点:
创建Consul服务的Docker镜像
构建3台运行Docker的宿主机,并在每台上运行一个Consul。这3台宿主机会提供一个分布式环境,来展现Consul如何处理弹性和失效工作的
构建服务,并将其注册到Consul,然后从其他服务查询该数据
附加:可以在 http://consul.io/intro/index.html找到对Consul更通用的介绍
三、搭建consul集群
搭建环境
192.168.116.22 server centos7 Docker 、Consul、Consul-template
192.168.116.23 client centos7 Docker、registrator
Ⅰ、server端部署
wget https://releases.hashicorp.com/consul/1.7.2/consul_1.7.2_linux_amd64.zip
unzip consul_1.7.2_linux_amd64.zip
mv consul /usr/bin
进行初始化