跳转到主要内容

手动设置集群

使用 KeyDB 设置集群#

请记住,由于版本更新,我们不再需要使用 keydb-trib.rb,因为 keydb-cli 现在有了 --cluster create 选项。

我们将从一个类似于 create-cluster 工具的示例开始。让我们创建一个包含3个主节点和3个副本节点的6节点设置。

对每个节点执行以下操作6次。您可以为每个节点创建单独的 keydb.conf 文件,或者在启动时附加配置文件。

创建配置文件和目录#

可以手动执行,也可以通过下面的脚本执行。对于端口 30000-30005,手动执行以下操作(用端口号替换 [port]):

mkdir [port]
cd [port]
nano keydb.conf
port [port]
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
dir ./
loglevel notice
logfile [port].log
save 900 1
save 300 10
save 60 10000

如果您不想手动操作,可以使用此脚本

#!/usr/bin/env bash
# myscript.sh
for port in 7000 7001 7002 7003 7004 7005
do
mkdir ${port}
cd ${port}
cat >keydb.conf << EOF
port ${port}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
dir ./
loglevel notice
logfile ${port}.log
save 900 1
save 300 10
save 60 10000
EOF
cd ..
done

请注意,如果您要连接到不同的机器,则需要在 keydb.conf 中指定 bind 地址。*这是一个最小化的配置,可能还需要设置身份验证等。*

运行实例与创建集群:#

现在,为每个端口实例启动一个 keydb-server 实例,并加载相应的配置文件 keydb-server /path-to-dir-above/keydb.conf

接下来,使用以下命令创建集群

keydb-cli --cluster create 127.0.0.1:30000 127.0.0.1:30001 127.0.0.1:30002 127.0.0.1:30003 127.0.0.1:30004 127.0.0.1:30005 --cluster-replicas 1

x 一旦通过 keydb-cli 连接成功,您可以运行 CLUSTER INFOCLUSTER NODES 来获取集群的相应信息。

测试集群设置#

在集群模式下(-c),使用 keydb-cli 连接到端口30000,并尝试以下操作

$ keydb-cli -c -p 30000
keydb 127.0.0.1:30000> set foo bar
-> 已重定向到位于 127.0.0.1:30002 的槽 [12182]
OK
keydb 127.0.0.1:30002> set hello world
-> 已重定向到位于 127.0.0.1:30000 的槽 [866]
OK
keydb 127.0.0.1:30000> get foo
-> 已重定向到位于 127.0.0.1:30002 的槽 [12182]
"bar"
keydb 127.0.0.1:30000> get hello
-> 已重定向到位于 127.0.0.1:30000 的槽 [866]
"world"

其他一些命令:#

将节点添加到现有集群中。

keydb-cli --cluster add-node 127.0.0.1:30006 127.0.0.1:30000

请注意,我们使用了 add-node 命令,将新节点的地址指定为第一个参数,并将集群中任意一个现有节点的地址指定为第二个参数以进行关联

将副本节点添加到副本数少于其他节点的主节点上,或随机添加

keydb-cli --cluster add-node 127.0.0.1:30006 127.0.0.1:30000 --cluster-slave

将副本节点添加到特定的主节点

keydb-cli --cluster add-node 127.0.0.1:30006 127.0.0.1:30000 --cluster-slave --cluster-master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e

或者通过连接到新节点来复制特定的主节点

cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e

重新分片

keydb-cli reshard <host>:[port] --cluster-from <node-id> --cluster-to <node-id> --cluster-slots <number of slots> --cluster-yes