管理 Databend Meta 集群
预计部署时间 5分钟 ⏱
您可以随时在不中断服务的情况下添加或删除 databend-meta
个节点。
1. 添加节点
1.1 为新节点创建 databend-meta-n.toml
新节点必须有唯一的 id
和监听地址。 例如,要添加一个 id 为 7
的新节点,配置项如下:
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
}
}
]