用于 Couchbase Server 集群配置和管理的 Docker 容器。
Couchbase Cluster Manager 是一个运行用 Swift 编写的应用程序的 Docker 容器。 它的目的是自动管理在 Docker swarm 上运行的 Couchbase Server 节点集群。
术语表
Node
: 一个 Couchbase Server 实例。Service
: 一个 Docker Swarm 服务,运行一个 Couchbase Server 容器 (一个节点)。Couchbase Cluster Manager 直接与 Docker Swarm 通信,并定期 (CCM_INTERVAL
) 检索运行中的服务列表。 然后根据其 com.ccm.cluster
标签过滤该列表,以匹配管理器的 CCM_NAME
环境变量。 然后,它继续查找一个已配置的节点。如果未找到,则使用容器环境中指定的配置初始化一个新集群。 在此阶段,如果配置中定义了,则会创建一个名为 CCM_BUCKET_NAME
的 bucket 和一个 Sync Gateway 用户 CCM_SG_USERNAME
/ CCM_SG_PASSWORD
。
Couchbase Cluster Manager 现在可以访问集群中一个已配置的节点,它会检索一个众所周知的节点列表,以便确定哪些节点已被删除,哪些节点必须被添加。 它通过比较服务列表上的主机名与节点的主机名来实现此目的。
此时,与 Swarm 上不再存在的服务匹配的节点被 故障转移
。与此同时,在 Swarm 上运行但与任何节点都不匹配的服务被 添加
到集群。 一旦所有节点都被处理完毕,就会触发 重新平衡
(如果需要)。
注意: Couchbase Cluster Manager 必须在 Docker Swarm 管理器上运行 (constraints: [node.role == manager]
),并且必须绑定到 /var/run/docker.sock
才能与 Docker Swarm 通信并能够检索服务列表。
名称 | 必需 | 默认值 | 值 (例如) | 描述 |
---|---|---|---|---|
CCM_NAME |
✔ | - |
my-cluster |
集群名称。 |
CCM_MEMORY_QUOTA |
✔ | - |
512 |
集群内存配额 (MB)。 |
CCM_INDEX_MEMORY_QUOTA |
✔ | - |
256 |
集群索引内存配额 (MB)。 |
CCM_FTS_MEMORY_QUOTA |
✔ | - |
256 |
集群全文搜索内存配额 (MB)。 |
CCM_USERNAME |
✔ | - |
admin |
集群管理用户名。 |
CCM_PASSWORD |
✔ | - |
/run/secrets/ccm_password |
集群管理密码 (纯文本或 secret)。 |
CCM_BUCKET_NAME |
- |
- |
default |
Bucket 名称。 |
CCM_BUCKET_MEMORY_QUOTA |
- |
- |
512 |
Bucket 内存配额 (MB)。 |
CCM_SG_USERNAME |
- |
- |
syncgateway |
SyncGateway 用户名。 |
CCM_SG_PASSWORD |
- |
- |
password |
SyncGateway 密码。 |
CCM_INTERVAL |
- |
300 |
60 |
管理器节点合并间隔 (秒)。 |
名称 | 必需 | 值 (例如) | 描述 |
---|---|---|---|
com.ccm.cluster |
✔ | my-cluster |
集群名称,必须与 CCM_NAME 匹配。 |
com.ccm.hostname |
✔ | node-01.my-cluster |
服务主机名 (必须包含至少一个 . )。 |
com.ccm.services |
✔ | data,index,query,fts |
要在节点上配置的 Couchbase 服务。 |
以下堆栈将启动两个 Couchbase Server 节点和一个 Couchbase-cluster-manager。
docker-compose.yml
version: '3.3'
services:
cbs-01:
image: couchbase/server:community-5.0.0
networks:
default:
aliases:
- cbs-01.mycluster
deploy:
labels:
com.ccm.cluster: "mycluster"
com.ccm.hostname: "cbs-01.mycluster"
com.ccm.services: "data,index,query,fts"
cbs-02:
image: couchbase/server:community-5.0.0
networks:
default:
aliases:
- cbs-02.mycluster
deploy:
labels:
com.ccm.cluster: "mycluster"
com.ccm.hostname: "cbs-02.mycluster"
com.ccm.services: "data,index,query,fts"
cbs-cluster-manager:
image: asensei/couchbase-cluster-manager
environment:
- CCM_NAME=mycluster
- CCM_MEMORY_QUOTA=512
- CCM_INDEX_MEMORY_QUOTA=256
- CCM_FTS_MEMORY_QUOTA=256
- CCM_USERNAME=administrator
- CCM_PASSWORD=password
- CCM_BUCKET_NAME=default
- CCM_BUCKET_MEMORY_QUOTA=512
- CCM_SG_USERNAME=syncgateway
- CCM_SG_PASSWORD=password
- CCM_INTERVAL=300
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
placement:
constraints: [node.role == manager]
networks:
default: