Consul 入门实战(1)--简介
Consul 是 HashiCorp 公司提供一个服务网格解决方案,具有服务发现、配置管理登功能。本文主要介绍下 Consul 的基本概念。
1、Consul 的特点
服务发现(Service Discovery):客户端在 Consul 注册为服务,其他客户通过 Consul 获取服务的提供方;通过 DNS 或 HTTP 的方式,应用可以很容易的找到它所依赖的服务。
健康检查(Health Checking):Consul 客户端可以提供任意数量的运行状况检查,这些检查可以与给定服务相关联("Web 服务器是否返回 200 OK"),也可以与本地节点("内存利用率是否低于 90%")相关联。可以使用此信息来监视群集运行状况,服务发现组件可以使用此信息将流量从运行状况不佳的主机路由出去。
Key/Value 存储:应用可以将 Consul 的键/值存储用于任意目的,包括动态配置、功能标记、协调、领导者选举等;简单的 HTTP API 使其易于使用。
安全服务通信:Consul 可以为服务生成 TLS 证书,以建立 TLS 连接。意图可用于定义允许哪些服务进行通信。服务分割可以轻松管理,其意图可以实时更改,而不是使用复杂的网络拓扑和静态防火墙规则。
多数据中心:Consul 支持开箱即用的多个数据中心;这意味着 Consul 的用户不必担心需要构建额外的抽象层来扩展到多个区域。
2、Consul 架构
上图中有两个 DataCenter,他们通过 Internet 互联;为了提高通信效率,只有 Server 节点才加入跨数据中心的通信。
集群内的节点通过 gossip 协议维护成员关系,某个节点需了解集群内还有其他哪些节点,这些节点是 Client 还是 Server。单个数据中心的 gossip 协议同时使用 TCP 和 UDP 通信,并且都使用 8301端口。跨数据中心的 gossip 协议也同时使用 TCP 和 UDP 通信,端口使用 8302。
3、Consul 使用场景
服务发现:consul 作为注册中心,服务地址被注册到 consul 中以后,可以使用 consul 提供的 dns、http 接口查询,consul支持health check。
服务隔离:consul 支持以服务为单位设置访问策略,能同时支持经典的平台和新兴的平台,支持 tls 证书分发,service-to-service加密。
配置管理:consul 提供 key-value 数据存储功能,并且能将变动迅速地通知出去,借助 Consul 可以实现配置共享。
4、Consul 服务发现原理
服务发现的脚本原理如下:
A、在服务器 Server1、Server2、Server3 上部署了 Consul Server,服务器 Server4 、Server5、Server6 上部署了 Consul Client,它们组成了一个 Consul 集群。
B、Service A、Service B、Service C 部署在 Server4 和 Server5 并注册到 Consul 上,其他的服务可以发现这三个服务;服务部署在两台 Server 上,避免了单点故障。
C、Service D 需要访问 Service B,首先访问本机的 Consul Client,Consul Client 会将请求转发到 Consul Server,Consul Server查询到 Service B 的信息返回;最终 Service D 拿到了 Service B 的所有部署的IP 和端口,然后就可以选择其中一个发起请求了。
参考:https://juejin.cn/post/6844904003764125703