返回介绍

运行 Agent

发布于 2024-12-29 22:52:38 字数 4533 浏览 0 评论 0 收藏 0

完成 Consul 的安装后,必须运行 agent. agent 可以运行为 server 或 client 模式.每个数据中心至少必须拥有一台 server . 建议在一个集群中有 3 或者 5 个 server.部署单一的 server,在出现失败时会不可避免的造成数据丢失。

其他的 agent 运行为 client 模式.一个 client 是一个非常轻量级的进程.用于注册服务,运行健康检查和转发对 server 的查询.agent 必须在集群中的每个主机上运行。

查看启动数据中心的细节请查看 这里 .

启动 Agent

为了更简单,现在我们将启动 Consul agent 的开发模式.这个模式快速和简单的启动一个单节点的 Consul.这个模式不能用于生产环境,因为他不持久化任何状态。

[root@hdp2 ~]# consul agent -dev
==> Starting Consul agent...
==> Starting Consul agent RPC...
==> Consul agent running!
         Node name: 'hdp2'
        Datacenter: 'dc1'
            Server: true (bootstrap: false)
       Client Addr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400)
      Cluster Addr: 10.0.0.52 (LAN: 8301, WAN: 8302)
    Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false
             Atlas: <disabled>

==> Log data will now stream in as it occurs:

    2016/08/17 15:20:41 [INFO] serf: EventMemberJoin: hdp2 10.0.0.52
    2016/08/17 15:20:41 [INFO] serf: EventMemberJoin: hdp2.dc1 10.0.0.52
    2016/08/17 15:20:41 [INFO] raft: Node at 10.0.0.52:8300 [Follower] entering Follower state
    2016/08/17 15:20:41 [INFO] consul: adding LAN server hdp2 (Addr: 10.0.0.52:8300) (DC: dc1)
    2016/08/17 15:20:41 [INFO] consul: adding WAN server hdp2.dc1 (Addr: 10.0.0.52:8300) (DC: dc1)
    2016/08/17 15:20:41 [ERR] agent: failed to sync remote state: No cluster leader
    2016/08/17 15:20:42 [WARN] raft: Heartbeat timeout reached, starting election
    2016/08/17 15:20:42 [INFO] raft: Node at 10.0.0.52:8300 [Candidate] entering Candidate state
    2016/08/17 15:20:42 [DEBUG] raft: Votes needed: 1
    2016/08/17 15:20:42 [DEBUG] raft: Vote granted from 10.0.0.52:8300. Tally: 1
    2016/08/17 15:20:42 [INFO] raft: Election won. Tally: 1
    2016/08/17 15:20:42 [INFO] raft: Node at 10.0.0.52:8300 [Leader] entering Leader state
    2016/08/17 15:20:42 [INFO] raft: Disabling EnableSingleNode (bootstrap)
    2016/08/17 15:20:42 [DEBUG] raft: Node 10.0.0.52:8300 updated peer set (2): [10.0.0.52:8300]
    2016/08/17 15:20:42 [INFO] consul: cluster leadership acquired
    2016/08/17 15:20:42 [DEBUG] consul: reset tombstone GC to index 2
    2016/08/17 15:20:42 [INFO] consul: member 'hdp2' joined, marking health alive
    2016/08/17 15:20:42 [INFO] consul: New leader elected: hdp2
    2016/08/17 15:20:43 [INFO] agent: Synced service 'consul'

如你所见,Consul Agent 启动并输出了一些日志数据.从这些日志中你可以看到,我们的 agent 运行在 server 模式并且声明作为一个集群的领袖.额外的本地镀锌被标记为一个健康的成员。

OS X 用户注意: Consul 使用你的主机 hostname 作为默认的节点名字.如果你的主机名包含时间,到这个节点的 DNS 查询将不会工作.为了避免这个情况,使用 -node 参数来明确的设置 node 名。

集群成员

新开一个终端窗口运行 consul members , 你可以看到 Consul 集群的成员.下一节我们将讲到加入集群.现在你应该只能看到一个成员,就是你自己:

[root@hdp2 ~]# consul members
Node  Address         Status  Type    Build  Protocol  DC
hdp2  10.0.0.52:8301  alive   server  0.6.4  2         dc1

这个输出显示我们自己的节点.运行的地址,健康状态,自己在集群中的角色,版本信息.添加 -detailed 选项可以查看到额外的信息。

members 命令的输出是基于 gossip 协议是最终一致的.意味着,在任何时候,通过你本地 agent 看到的结果可能不是准确匹配 server 的状态.为了查看到一致的信息,使用 HTTP API(将自动转发) 到 Consul Server 上去进行查询:

[root@hdp2 ~]#  curl localhost:8500/v1/catalog/nodes
[{"Node":"hdp2","Address":"10.0.0.52","TaggedAddresses":{"wan":"10.0.0.52"},"CreateIndex":3,"ModifyIndex":4}]

除了 HTTP API ,DNS 接口也可以用来查询节点.注意,你必须确定将你的 DNS 查询指向 Consul agent 的 DNS 服务器,这个默认运行在 8600 端口.DNS 条目的格式(例如:"Armons-MacBook-Air.node.consul") 将在后面讲到。

$ dig @127.0.0.1 -p 8600 Armons-MacBook-Air.node.consul
...

;; QUESTION SECTION:
;Armons-MacBook-Air.node.consul.    IN  A

;; ANSWER SECTION:
Armons-MacBook-Air.node.consul. 0 IN    A   172.20.20.11

停止 Agent

你可以使用 Ctrl-C 优雅的关闭 Agent. 中断 Agent 之后你可以看到他离开了集群并关闭。

在退出中,Consul 提醒其他集群成员,这个节点离开了.如果你强行杀掉进程.集群的其他成员应该能检测到这个节点失效了.当一个成员离开,他的服务和检测也会从目录中移除.当一个成员失效了,他的健康状况被简单的标记为危险,但是不会从目录中移除.Consul 会自动尝试对失效的节点进行重连.允许他从某些网络条件下恢复过来.离开的节点则不会再继续联系。

此外,如果一个 agent 作为一个服务器,一个优雅的离开是很重要的,可以避免引起潜在的可用性故障影响达成 一致性协议 .

查看 这里 了解添加和移除 server.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文