Consul架构

Consul Agent

同一个consul agent程序,通过启动的时候指定不同的参数,以server或client模式之一来运行。

上一节中我们运行的agent就是以server模式来运行:

image-20211016165647062

Server与Client

image-20211016164059965

Server模式:

  • 存储机器状态(日志存储)
  • 处理查询

Client 模式:

  • 负责通过该节点注册到 Consul 微服务的健康检查

  • 将客户端的注册请求和查询转换为 server 的 RPC 请求

    image-20211016165213724

Consul Datacenter

  • Datacenter是一个内网环境,具有低延迟、高带宽的特点
  • AWS中多个az可以组成一个datacenter

Consul Datacenter架构

在同一个datacenter中的所有consul agent会组成一个LAN网络:

image-20211016164554695

上图 datacenter 分成上下两个部分, 但是这两个部分又不是完全隔离的。他们之间通过 WAN GOSSIP 进行报文交互。

单个 datacenter 中, 节点被划分成两种颜色, 红色的 server, 紫色的 client, 他们之间通过 GRPC 进行通信(业务数据), 除此之外, Client 和 Server 之间通过还有一条 LAN Gosssip 进行通信,比如,当 Server 节点增加,或者 down 机后,Client 可以获取对应的 Server列表,去除或者增加 Server 列表。

同一个 Consul agent 程序,启动的时候,通过制定不同的参数来运行 Server 和 Client 模式。也就是说 client 和 server 本质上都是 Client Agent


上图的server集群,有一个作为leader,其他的作为follower。

而以dev模式运行的node,默认情况下是leader:

image-20211016180754526