跳转到主要内容

管理多节点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 (18.5 kB 查看哈希值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面