Consul-概述
https://www.consul.io/
https://github.com/hashicorp/consul
https://learn.hashicorp.com/consul
1.简介
Consul是HashiCorp公司推出的开源工具,用于服务发现和配置的工具。Consul是分布式的,高度可用的,并且具有极高的可伸缩性。
Consul提供了几个关键功能:
服务发现 -Consul使服务易于注册自己并通过DNS或HTTP接口发现其他服务。诸如SaaS提供程序之类的外部服务也可以注册。
健康检查 -健康检查【运行状况检查】使Consul可以快速提醒操作员有关群集中的任何问题。与服务发现的集成可防止将流量路由到不正常的主机,并启用服务级别的断路器。
服务细分/服务网格 -Consul Connect通过自动TLS加密和基于身份的授权实现安全的服务到服务通信。应用程序可以在服务网格配置中使用sidecar代理来为入站和出站连接建立TLS连接,而根本不知道Connect。
键/值存储 -灵活的键/值存储可存储动态配置,功能标记,协调,领导者选举等。简单的HTTP API使其易于在任何地方使用。
多数据中心 -Consul旨在支持数据中心,并且无需复杂的配置即可支持任意数量的区域。
Consul用Golang实现,可以在Linux,Mac OS X,FreeBSD,Solaris和Windows上运行。Consul,因此具有天然可移植性 (支持 Linux、windows和macOS)。
2.Consul 的角色
client: 客户端, 无状态, 将 HTTP 和 DNS 接口请求转发给局域网内的服务端集群.
server: 服务端, 保存配置信息, 高可用集群, 在局域网内与本地客户端通讯, 通过广域网与其他数据中心通讯. 每个数据中心的 server 数量推荐为 3 个或是 5 个.
3.运行 Consul代理
- Consul是典型的 C/S架构,可以运行服务模式或客户模式。每一个数据中心必须有至少一个服务节点, 3到5个服务节点最好。非常不建议只运行一个服务节点,因为在节点失效的情况下数据有极大的丢失风险。
运行Agent - agent可以运行为server或client模式.每个数据中心至少必须拥有一台server . 建议在一个集群中有3或者5个server.部署单一的server,在出现失败时会不可避免的造成数据丢失.
- 其他的agent运行为client模式.一个client是一个非常轻量级的进程.用于注册服务,运行健康检查和转发对server的查询.agent必须在集群中的每个主机上运行.