couchbase-cluster-manager

Swift Platform Platform

用于 Couchbase Server 集群配置和管理的 Docker 容器。

概述

Couchbase Cluster Manager 是一个运行用 Swift 编写的应用程序的 Docker 容器。 它的目的是自动管理在 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 服务。

Docker Compose

以下堆栈将启动两个 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: