Docker —Consul部署
Consul 简化了分布式环境中的服务的注册和发现流程,通过 HTTP 或者 DNS 接口发现。支持外部 SaaS 提供者等
服务发现
- 服务发现是分布式应用程序之间管理相互关系的一种机制。一个分布式程序一般由多个组件组成。这些组件可以都放在一台机器上,也可以分布在多个数据中心,甚至分布在不同的地理区域。这些组件通常可以为其他组件提供服务,或者为其他组件消费服务
- 服务发现 允许某个组件在想要与其他组件交互时,自动找到对方 。由于这些应用沈本是分布式的,服务发现机制也需要分布式的。而且,服务发现作为分布式应用不同组件之间的“胶水”,其本身还需要足够动态、可开,适应性强,而且可以快速且一致地共享关于这些服务的数据
- 另外,Docker主要关注分布式应用以及 面向服务架构与微服务架构 。这些关注点很适合与某个服务发现工具集成。每个Docker容器可以将其中运行的服务注册到服务发现工具里。注册的信息可以是IP地址或者端口,或者两者都有,以便服务之间进行交互
consul介绍
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如何处理弹性和失效工作的
- 构建