Administration

一旦 JetStream 集群运行,与 CLI 和 nats CLI 的交互与以前相同。对于这些示例,让我们假设我们有一个 5 服务器集群,n1-n5,位于名为 C1 的集群中。

账户级别

Within an account there are operations and reports that show where users data is placed and which allow them some basic interactions with the RAFT system.

创建集群流

使用 nats CLI 添加流时,将询问副本数量,当您选择大于 1 的数字时(我们建议 1、3 或 5),数据将使用上述 RAFT 协议存储在集群中的多个节点上。

nats stream add ORDERS --replicas 3

示例输出提取:

....
Information for Stream ORDERS created 2021-02-05T12:07:34+01:00
....
Configuration:
....
             Replicas: 3

Cluster Information:

                 Name: C1
               Leader: n1-c1
              Replica: n4-c1, current, seen 0.07s ago
              Replica: n3-c1, current, seen 0.07s ago

上面您可以看到,在所有显示流信息的情况下(例如添加后或使用 nats stream info)都会报告集群信息。

这里我们在 NATS 集群 C1 中有一个流,其当前领导者是节点 n1-c1,它有 2 个跟随者 - n4-c1n3-c1

current 表示跟随者是最新的并且拥有所有消息,这里两个集群对等节点都是最近看到的。

副本数量可以在日后继续更改。

查看流放置和统计信息

用户可以获取关于其流的总体统计信息以及这些流放置的位置:

强制流和消费者领导者选举

每个 RAFT 组都有一个领导者,在需要时由组选举产生。通常没有理由干扰这个过程,但您可能希望在方便的时候触发领导者变更。领导者选举将代表对流的短暂中断,因此如果您知道稍后将在节点上工作,可能值得提前将领导权移开。

将领导权从节点移开不会将其从集群中移除,也不会阻止其再次成为领导者,这仅仅是一个触发的领导者选举。

对于消费者也是如此,nats consumer cluster step-down ORDERS NEW

系统级别

系统用户可以查看元组的状态 - 但不能查看单个流或消费者。

查看集群状态

我们有集群状态的高级报告:

这是一个完整的集群范围报告,可以使用 --account 将报告限制到特定账户。

这里我们看到流、消息、API 调用等在 2 个超级集群中的分布情况以及 RAFT 元组的概述。

在元组报告中,服务器 n2-c1 不是最新的,已经有 9 秒没有被看到,它还落后 2 个 raft 操作。

此报告是使用原始数据构建的,可以从监控端口上的 /jsz url 获取,或通过 nats 使用:

这将产生关于集群当前状态的大量原始信息 - 这里仅从领导者请求它。

强制元组领导者选举

与上面的流和消费者类似,元组允许领导者卸任。元组是集群范围的,跨越所有账户,因此要管理元组,您必须使用 SYSTEM 用户。

驱逐对等节点

通常在关闭 NATS 时,包括使用跛脚鸭模式,集群会注意到这一点并继续运行。

但可能有一种情况,您知道一个节点永远不会恢复(重新上线),并希望向 JetStream 发出该节点不会返回的信号。对等节点移除(peer-remove)操作将从指定的流及其所有消费者中移除该节点。

节点被移除后,集群会察觉到流的副本数量不再满足配置要求,并会立即选取一个新节点开始复制数据。新节点的选择将遵循与现有流相同的放置规则。

triangle-exclamation

或者,如果您打算保留该节点、只是想将流从特定节点移走,您可以在流级别对节点执行 peer-remove。

此时,该流及其所有消费者都将从组中移除 n4-c1。随后将选择一个新的节点(本例中选中了 n2-c1 作为新对等节点),并将数据复制到该节点。

我们可以看到选择了一个新的副本,流重新回到了复制级别 3,并且 n4-c1 在此流或其任何消费者中不再活跃。

最后更新于