Consul集群部署

本文详细介绍了Consul的架构、工作原理以及如何部署Consul集群。Consul是HashiCorp公司推出的开源服务发现与配置工具,采用Raft一致性算法,支持服务注册与发现、健康检查、KV存储、多数据中心等功能。文章涵盖了从环境准备到安装Consul,再到创建Server和Client节点,最后通过HTTP和DNS接口进行服务查询。同时,文章还展示了如何配置和使用Consul的KV存储进行数据管理和备份。
摘要由CSDN通过智能技术生成

Consul介绍

Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。Consul 是分布式的、高可用的、可横向扩展的。

官网:https://www.consul.io,最新版本:1.8.3

  • 概念:
Agent:是在 Consul 集群的每个成员上长期运行的守护进程,通过命令 consul agent 启动运行。由于所有节点都必须运行一个 Agent,因此 Agent 可以分为 client 或 Server。
       所有的 Agent 都可以运行DNS或HTTP接口,并负责运行监测和保持服务同步

Client:是将所有RPC转发到 Server 的 Agent。Client 是相对无状态的,Client 唯一执行的后台活动是加入 LAN gossip 池。这只有最小的资源开销,且只消耗少量的网络带宽

Server:是一个有一组扩展功能的 Agent,这些功能包括参与 Raft 选举、维护集群状态、响应RPC查询、与其他数据中心交互 WAN gossip 和转发查询给 leader 或远程的数据中心

Datacenter:是一个私有的、低延迟和高带宽的网络环境。这不包括通过公网的通信,但就目的而言,单个 EC2 中的多个可用区域被视为数据中心的一部分

Consensus:一致性。Consul 使用 Consensus 协议(具体由 Raft 算法实现)来提供一致性(由 CAP 定义),表明 leader 选举和事务的顺序达成一致

Gossip:Consul 使用 Gossip 协议来管理成员资格并向集群广播消息。Serf 提供了完整的 Gossip 协议,可用于多种目的,而 Consul 建立在 Serf 之上。
        Gossip 涉及节点到节点的随机通信,主要是通过UDP。Gossip 协议也被称为 Epidemic 协议(流行病协议)

LAN Gossip:指包含所有位于同一局域网或数据中心的节点的 LAN gossip 池

WAN Gossip:指仅包含 Server 的 WAN gossip 池。这些 Server 主要分布在不同的数据中心,通常通过Internet或者广域网进行通信

RPC:远程过程调用。一种 请求/响应 机制,允许 Client 向 Server 发起请求
  • 架构图:

在这里插入图片描述

可以看到有两个数据中心,每个数据中心中都有 Client 和 Server。Server的数量建议是 3 或 5 台,这能平衡故障情况下的可用性和集群性能。Server 数量越多,达成一致性也会越慢,但是 Client 的数量没有限制。

其次,数据中心中的所有 Agent 都加入 gossip 协议,这意味着存在一个给定数据中心的所有 Agent 的 gossip 池。这样做有几个目的:

1. 不需要为 Client 配置 Server 地址,发现是自动完成的;

2. 检测 Agent 故障的工作不是放在 Server 上、而是分布式的,这使得故障检测更具可伸缩性;

3. 它被用作一个消息层,已通知何时发生重要事件(例如 leader 选举)

每个数据中心的 Server 都是单个 Raft 对等集的一部分,这意味着它们将共同选举出一个 leader,leader 负责处理所有查询和事务。作为 consensus 协议的一部分,事务必须复制到所有对等方。由于这一需求,当 非 leader Server 收到RPC请求时,它将转发给 leader Server。

Server 还作为 WAN gossip 池的一部分运行。WAN gossip 池与 LAN gossip 池不同,因为它针对Internet更高的延迟进行了优化,并且仅包含其他 Consul Server。WAN gossip 池的目的是允许数据中心以一种低接触的方式发现彼此,在线连接新的数据中心就像加入现有的 WAN gossip 池一样简单。由于 Server 都在 WAN gossip 池中运行,因此它还支持跨数据中心请求。Server 收到其他数据中心的请求时,会将其转发到正确的数据中心的随机 Server,然后该 Server 可以转发给本地的 leader。这就让数据中心之间的耦合非常低,由于故障检测、连接缓存和多路复用,跨数据中心的请求相对较快且可靠。

通常,不会在不同的 Consul 数据中心之间复制数据。当请求另一个数据中心的资源时,本地 Consul Server 将RPC请求转发到该资源的远程 Consul Server 并返回结果。如果远程数据中心不可用,那么这些资源也将不可用,但这不会影响本地数据中心。在某些特殊情况下,可以复制有限的数据子集,例如使用 Consul 内置的 ACL复制 功能,或使用诸如 consul-replicate 之类的外部工具。

  • 特点:
多数据中心: Consul 支持任意数量的数据中心,而不需要复杂的配置

服务网格/服务细分:Consul Connect通过自动TLS加密和基于身份的授权来实现安全的服务间通信。
                 应用程序可以在服务网格配置中使用sidecar代理来为入站和出站连接建立TLS连接,而根本不知道Connect

服务发现: Consul 使服务易于注册自己,并通过DNS或HTTP接口发现其他服务。诸如SaaS提供程序之类的外部服务也可以注册

运行状态检测: Consul 提供了健康检查的机制,与服务发现的集成可防止将流量路由到不正常的主机,并启用服务级别的断路器

Key/Value 存储: 灵活的kv存储可以实现动态配置、功能标记、leader选举等,简单的HTTP API使它可以在任何地方轻松使用
  • 端口:

Consul最多需要6个不同的端口才能正常工作,某些端口需要使用TCP、UDP或同时使用这两种协议。

DNS࿱
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值