跳转到主要内容

管理 Databend Meta 集群

tip

预计部署时间 5分钟 ⏱

您可以随时在不中断服务的情况下添加或删除 databend-meta 个节点。

1. 添加节点

1.1 为新节点创建 databend-meta-n.toml

新节点必须有唯一的 id 和监听地址。 例如,要添加一个 id 为 7的新节点,配置项如下:

databend-meta-7.toml
log_dir            = "metadata/_logs7"
admin_api_address = "0.0.0.0:28701"
grpc_api_address = "0.0.0.0:28702"

[raft_config]
id = 7
raft_dir = "metadata/datas7"
raft_api_port = 28703
raft_listen_host = "127.0.0.1"
raft_advertise_host = "localhost"
join = ["localhost:28103"]

join 指定了一个现有的集群的地址列表 (<raft_advertise_host>:<raft_api_port>),用于新节点的加入。

如果已经加入集群,databend-meta 将跳过 join 参数。 它检查 committed 成员身份是否包含了它的 id 来决定是否加入。 此政策的解释:(但您不必真的阅读:)

  • 如果有记录,它不能依靠。 它是可能的,领导者已经设置了复制到这个新的节点,但尚未将其添加为 voter 。 在这种情况下,该节点将永远不会自动添加到集群中。

  • 它必须检测是否有包含此节点的 membership 配置。 因此,只有当某个节点已经加入了一个集群(领导者承诺了会员并将其复制到此节点),跳过加入过程。

为什么跳过对 Raft 日志的会员资格检查:

一个领导者可能已经复制 non-committed 会员身份到这个节点和崩溃了。 然后下一位领导人不知道这个新节点。

只有当会员被承诺时,此节点才能确保它在一个集群中。

1.2 Start the new node

./databend-meta -c ./databend-meta-7.toml > meta7.log 2>&1 &

2. 移除节点

使用此命令删除一个节点:databend-meta --leave-id <node_id_to_remove> --leave-via <node_addr_1> <node_addr_2>...

此命令可以在任何一个安装了 databend-meta 的主机上使用。 它将发送一个 leave 请求给第一个可以连接到的 <node_addr_i>。 该命令会阻止节点与集群之间进行交互,直到离开请求处理完毕或有错误发生。

databend-meta --leave-via 将在 leave RPC 完成时立即退出。

  • --leave-via 指定了一个节点 advertise 地址以发送 leave 请求。 见:--raft-advertise-host

  • --leave-id 指定了要离开的节点ID。 它可以是集群中的任何 ID。

3. 检查集群成员

在添加或删除节点的每一步,都应该检查集群状态,以确保一切都顺利进行。

配置中的 admin-api-address 提供了一个用于管理的 HTTP 服务,可以用来检查集群的状态。例如,curl -s localhost:28101/v1/cluster/nodes 可以显示一个集群的成员:

[
{
"name": "1",
"endpoint": {
"addr": "localhost",
"port": 28103
}
},
{
"name": "2",
"endpoint": {
"addr": "localhost",
"port": 28203
}
}
]