管理多节点couchdb 2.x集群的实用工具
项目描述
couchdb-cluster-admin
管理多节点couchdb 2.x集群的实用工具
首先,为您的设置准备一个配置文件
这将使其他命令的运行更简单。复制示例
cp config/conf.example.yml config/mycluster.yml
然后使用集群的详细信息编辑它。
设置本地集群进行测试
如果您已安装docker,只需运行
docker build -t couchdb-cluster - < docker-couchdb-cluster/Dockerfile
以构建集群镜像(基于klaemo/couchdb:2.0-dev)然后运行
docker run --name couchdb-cluster \
-p 15984:15984 \
-p 15986:15986 \
-p 25984:25984 \
-p 25986:25986 \
-p 35984:35984 \
-p 35986:35986 \
-p 45984:45984 \
-p 45986:45986 \
-v $(pwd)/data:/usr/src/couchdb/dev/lib/ \
-t couchdb-cluster \
--with-admin-party-please \
-n 4
以启动具有4个节点的集群。节点数据将持久化到./data。
要运行测试(需要此docker设置),请下载并安装https://github.com/sstephenson/bats
git clone https://github.com/sstephenson/bats.git
cd bats
./install.sh /usr/local # or wherever on your PATH you want to install this
然后
docker start couchdb-cluster # make sure this is running and localhost:15984 is receiving pings
bats test/
可选:在环境中设置密码
如果您不希望每次运行命令时都指定密码,可以将它的值放在COUCHDB_CLUSTER_ADMIN_PASSWORD环境变量中,如下所示
read -sp Password: PW
然后,对于以下所有命令,在命令前加上COUCHDB_CLUSTER_ADMIN_PASSWORD=$PW,例如
COUCHDB_CLUSTER_ADMIN_PASSWORD=$PW python couchdb-admin-cluster/describe.py --conf mycluster.yml
快速了解您的集群
现在您可以运行
python couchdb_cluster_admin/describe.py --conf config/mycluster.yml
以查看您的集群节点和分片分配的概述。例如,在以下输出中
Membership cluster_nodes: couch3 couch1 couch4 couch2 all_nodes: couch3 couch1 couch4 couch2 Shards 00000000-1fffffff 20000000-3fffffff 40000000-5fffffff 60000000-7fffffff 80000000-9fffffff a0000000-bfffffff c0000000-dfffffff e0000000-ffffffff mydb couch1 couch1 couch1 couch1 couch1 couch1 couch1 couch1 my_second_database couch1 couch1 couch1 couch1 couch1 couch1 couch1 couch1
您可以看到,尽管有四个节点,但所有分片目前都分配到了第一个节点。
帮助估计分片分配
为了规划分片重新分配,您可以运行以下命令
python couchdb_cluster_admin/suggest_shard_allocation.py --conf config/mycluster.yml --allocate couch1:1 couch2,couch3,couch4:2
示例中 --allocate 参数的值应解释为“在couch1上放置1个副本,并在couch2、couch3和couch4上分散放置2个副本”。
输出如下
couch1 57.57 GB couch2 42.15 GB couch3 36.5 GB couch4 36.5 GB 00000000-1fffffff 20000000-3fffffff 40000000-5fffffff 60000000-7fffffff 80000000-9fffffff a0000000-bfffffff c0000000-dfffffff e0000000-ffffffff mydb couch1,couch2,couch4 couch1,couch2,couch3 couch1,couch3,couch4 couch1,couch2,couch4 couch1,couch2,couch3 couch1,couch3,couch4 couch1,couch2,couch4 couch1,couch2,couch3 my_second_database couch1,couch3,couch4 couch1,couch3,couch4 couch1,couch3,couch4 couch1,couch3,couch4 couch1,couch3,couch4 couch1,couch3,couch4 couch1,couch3,couch4 couch1,couch3,couch4
注意,重新分配不考虑分片当前的存储位置,因此在您从单节点集群迁移到多节点集群的情况下比在您向多节点集群添加一个节点的情况下更有用。在上面的示例中,couch1是单节点集群,而couch2、couch3和couch4是多节点集群。您可以想象,在实施此处建议的分片分配后,我们可能会从couch1中删除所有分片并将其从集群中移除。
请注意,不同数据库的“相同”分片不保证分配到同一节点;在计算均匀分片分配时,每个(数据库,分片)对被视为一个独立的单元。在此示例中,数据库和分片数量较少;当分片*数据库较高时,此过程可以很好地均匀平衡节点间的数据。
项目详情
couchdb-cluster-admin-0.7.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2d7768a23873c268585100dc192a4d955d2c0fcf75972f6c423168e854ef5144 |
|
MD5 | 873509a77ed53f42f5dad45ad50139ab |
|
BLAKE2b-256 | 6de86863378cfa81d514b38e9ed6c9c1c4036d611b418e54007114ed0a3002c3 |