consul命令行查看服务_微服务框架 Consul 服务注册与服务发现

Consul 是一个用于实现分布式系统的服务发现与配置的开源工具。与其他分布式服务注册与发现的方案相比,Consul 的方案更“一站式”,它内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其他工具。

Consul 架构

在描述体系结构之前,先了解下 Consul 术语表,以帮助澄清所讨论的内容:Agent - 是 Consul 集群中每个成员上的长时间运行的守护进程,可以通过 consul agent 命令启动它。agent 可以在 client 或 server 模式下运行。所有 agent 都可以运行 DNS 或 HTTP 接口,并负责运行检查和保持服务同步。

Client - 是将所有 RPCs 转发到 server 的 Agent,client 是相对无状态的。client 执行的唯一后台活动是参与 LAN gossip pool,这将减少资源开销,并且只消耗少量的网络带宽。

Server - 是一组具有扩展职责的 Agent,包括参与一致性判断(Raft quorum)、维护集群状态、响应 RPC 查询、与其他数据中心交换 WAN gossip 以及将查询转发给领导者(leaders)或远程数据中心。

Datacenter - 私有、低延迟和高带宽的网络环境。

Consensus(一致性) - Consul 使用 consensus protocol) 来提供 CAP(一致性,高可用,分区容错性)

Gossip - 一种协议,用来保证最终一致性,即:无法保证在某个时刻,所有节点状态一致,但可以保证“最终”一致

RPC - 远程过程调用,它是一种请求/响应机制,允许 client 向 server 发出请求。

Consul 的架构是这样的:

让我们分解这个图像,描述每一块。首先,我们可以看到有两个数据中心,标记为“1”和“2”。Consul 支持多数据中心,在每个数据中心中,我们有 client 和 server 的混合,推荐有 3 到 5 台 server,这就在故障情况下的可用性和性能之间取得了平衡,因为随着更多的机器被添加,将会变得越来越慢。然而,client 的数量是没有限制的,他们可以很容易地扩展到成千上万。

每个数据中心中的 server 都会一起来选出一个 leader(领导者);leader 是一个被选中的有额外职责的 server,负责处理所有查询和事务,当非 leader server 接收到 RPC 请求时,它将其转发给集群 leader。

安装

Consul 支持 Linux、Windows 和 Mac OS X 系统。它只是一个可执行文件,方便部署,与 Docker 等轻量级容器可无缝配合 。

要安装 Consul,先找到适合你的系统的软件包并下载,下载后,解压压缩包即可。最后将 Consul 二进制文件所在的路径添加到环境变量 PATH 上。关于如何在 Linux 和 Mac 上设置 PATH ,请参阅本页。

安装 Consul 后,通过打开一个新的终端会话并检查 consul 是否可用,通过执行 consul ,你应该会看到类似这样的帮助输出:$ consul

usage: consul [--version] [--help] []

Available commands are:

agent Runs a Consul agent

event Fire a new event

# ...

启动 Consul

在 Consul 安装后,必须运行 agent,agent 可以在 server 模式或 client 模式下运行。每个数据中心必须至少有一台 Server,不过建议使用一个由 3 或 5台 server 组成的集群。不推荐只部署单个 server,因为在故障场景中数据丢失是不可避免的。

所有其他 agent 都在 client 模式下运行,client 是一个非常轻量级的进程,它注册服务、运行健康检查并将查询转发给 server。agent 必须在集群的每个节点上运行。

启动 Agent

为了简单起见,我们现在开始在开发模式中使用 Consul agent。它不能在生产环境中使用,因为它不持久化任何状态。-$ consul agent -dev

==> Starting Consul agent...

==> Starting Consul agent RPC...

==> Consul agent running!

Version: 'v0.7.0'

Node name: 'Armons-MacBook-Air'

Datacenter: 'dc1'

Server: true (bootstrap: false)

Client Addr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400)

Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)

Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false

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

2016/09/15 10:21:10 [INFO] raft: Initial configuration (index=1): [{Suffrage:Voter ID:127.0.0.1:8300 Address:127.0.0.1:8300}]

2016/09/15 10:21:10 [INFO] raft: Node at 127.0.0.1:8300 [Follower] entering Follower state (Leader: "")

2016/09/15 10:21:10 [INFO] serf: EventMemberJoin: Armons-MacBook-Air 127.0.0.1

2016/09/15 10:21:10 [INFO] serf: EventMemberJoin: Armons-MacBook-Air.dc1 127.0.0.1

2016/09/15 10:21:10 [INFO] consul: Adding LAN server Armons-MacBook-Air (Addr: tcp/127.0.0.1:8300) (DC: dc1)

2016/09/15 10:21:10 [INFO] consul: Adding WAN server Armons-MacBook-Air.dc1 (Addr: tcp/127.0.0.1:8300) (DC: dc1)

2016/09/15 10:21:13 [DEBUG] http: Request GET /v1/agent/services (180.708µs) from=127.0.0.1:52369

2016/09/15 10:21:13 [DEBUG] http: Request GET /v1/agent/services (15.548µs) from=127.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值