Consul系列:Consul Agent用法介绍(二)

运行和停止 Agent

Consul agent 是 Consul 的核心:它运行 agent,执行维护成员信息、运行 check、通知 service、处理 queries 等的重要任务。Agent 必须在作为 Consul 集群一部分运行于每个节点上。

Agent 有两种模式:client 或 server。

Server 要参与 consensus quorum,当遇到故障情况时,这些节点通过 Raft 提供强一致性和强有效性,在 Server 节点上的较高负载意味着它们应该运行在专属的实例 —— 它们比 client 节点更为资源密集型。在整个集群中,绝大部分都为 Client 节点。

client 把所有的 RPCs 请求转发到 server 端,是相对无状态的。唯一在后台运行的时 client 端执行了 LAN gossip pool,只消耗极少的资源和网络带宽。

Running an Agent

Agent 通过执行 consul agent 启动。这个命令是阻塞的,除非主动终止。Agent 命令需要很多配置参数,但大多数都有默认值。

# consul agent -server \

-data-dir=/tmp/consul \ -config-dir=/etc/consul.d \ -bind=192.168.104.2 \ -client=192.168.104.2 \ -datacenter=gd1 \ -domain=consul

==>  Starting Consul agent...
==>  Starting Consul agent RPC...
==>  Consul agent running!
    Version: 'v0.7.2'
     Node name: 'i4-jrocket2-104-02-1'
    Datacenter: 'gd1'
     Server: true (bootstrap: false)
    Client Addr: 192.168.104.2 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400) 
    Cluster Addr: 192.168.104.2 (LAN: 8301, WAN: 8302)
    Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false 
        Atlas: <disabled>
==>  Log data will now stream in as it occurs: 
......

这段日志中包含比较多的重要信息:

  • Node name:表示节点在集群中的名字,在集群中是唯一的。通常设置为 hostname。可以通过参数 -node 设置。

  • Datacenter:这是 agent 配置为运行的数据中心。 Consul 对多个数据中心有一等公民的支持;但是,要高效工作,必须将每个节点配置为报告其数据中心。 - datacenter 标志可用于设置数据中心。 对于单 DC 配置,Agent 将默认为 “dc1”。

  • Server:这指示 agent 是否以 server 或 client 模式运行。Server 节点具有参与协商 quorum,存储集群状态和处理 queries 的额外负担。 另外,服务器可以处于 “bootstrap(引导)” 模式。 多个 server 不能处于引导模式,因为这将使群集处于不一致的状态。

  • Client Addr:这是用于 agent cient 端接口的地址,包括 HTTP,DNS 和 RPC 接口的端口。 RPC 地址由查询和控制运行 agent 的其他 consul 命令(例如 consul 成员,consul join 等)使用。 默认情况下,它仅绑定到 localhost。 如果更改此地址或端口,则在运行命令(如consul成员)以指示如何访问 agent 程序时,必须 指定 -client。 其他应用程序也可以使用 RPC 地址和端口来控制 Consul。

  • Cluster Addr:这是用于集群中的 Consul agent 之间的通信的端口的地址和集合。 并非群集中的所有 Consul agent 都必须使用相同的端口,但是所有其他节点必 须可以访问此地址。

  • Atlas:这显示了注册节点的 Atlas 基础架构。 它还指示是否启用自动加入。 使用 -atlas 设置 Atlas 基础结构,并通过设置 -atlas-join 启用自动连接。

Stopping an Agent

Agent 可以通过两种方式停止:gracefully(优雅)or forcefully(强制)。

要正常停止 agent ,请向进程发送中断信号(通常是来自终端的 Ctrl-C 或运行 kill -INT consul_pid)。 当正常退出时,Agent 首先通知它打算离开集群的集群。 这样,其他集群成员通知集群节点已离开。

或者,您可以通过向 Agent 发送 kill 信号来强制杀死 Agent。 当强制 kill 时,agent 立即结束。 集群的其余部分最终(通常在几秒钟内)检测到节点已经死亡,并通知集 群节点已经失败。

Server 节点以 gracefully 方式离开时尤为重要,使得对集群的影响减小到很低。

对于 client agent,节点故障和节点离开之间的差异对您的用例可能不重要。 例如,对于 Web 服务器和负载平衡器设置,两者都会产生相同的结果:Web 节点从负载平衡器池中删除。

Lifecycle

Consul 集群中的每个 agent 都经历一个生命周期。 了解此生命周期有助于构建 agnet 与 cluster 交互智能模型和如何处理节点是非常有用的。

当 agent 首次启动时,它不知道集群中的任何其他节点。 要发现它的 Peer set,它必须加入集群。 这是通过 join 命令完成的,或者通过在启动时提供适当的配置来自动加入。 一旦节点加入,这个信息被传送到整个集群,这意味着所有节点最终都会意识到彼此。 如果 agent 是 server,则现有 server 将开始复制到新节点。

在网络故障的情况下,一些节点可能不能由其他节点访问。 在这种情况下,不可达节点被标记为失败。 不可能区分网络故障和 agent 崩溃,因此两种情况处理相同。 一旦节点标记为失败,此信息在 service catalog 中更新。

当节点离开时,它指定它的意图这样做,并且集群标记该节点已经离开。 与失败的情况不同,节点提供的所有 service 都会立即取消注册。 如果 agent 是 server,则复制到 server 将停止。

为了防止死节点(处于故障状态或离开状态的节点)的累积,Consul 将自动从 catalog 中删除死节点。 这个过程称为收敛。目前默认配置的时间间隔为 72 小时(不建议更改 reaping 间隔,可能导致集群中断)。 收敛类似于离开,导致所有相关 service 被取消注册。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值