
scylladb/scylla-manager!logo
Scylla Manager 是 ScyllaDB 的数据库操作自动化工具。它可以调度修复和备份等任务,能够管理多个Scylla集群,并以可控且可预测的方式运行集群级任务。
Scylla Manager 面向 Scylla Enterprise 客户和 Scylla Open Source 用户提供。对于 Scylla Open Source,Scylla Manager 限制为最多 5 个节点。详情请参见 Scylla Manager 专有软件许可协议。
Docker Compose 是一款用于定义和运行多容器应用的工具,无需手动编排参与的容器。
本示例使用单节点 Scylla 集群和 MinIO,不应在生产环境中使用。有关正确的生产环境设置,请参见 Scylla Manager 操作指南。示例启动并运行后,您可以尝试使用 Scylla Manager 提供的各种运行修复和备份的命令。
docker-compose.yaml。yamlversion: "3.7" services: scylla-manager: image: scylladb/scylla-manager:${SCYLLA_MANAGER_VERSION} networks: public: depends_on: - scylla-manager-db scylla-manager-db: image: scylladb/scylla:latest volumes: - scylla_manager_db_data:/var/lib/scylla networks: public: command: --smp 1 --memory 1G scylla: build: context: . image: scylladb/scylla-with-agent volumes: - scylla_data:/var/lib/scylla networks: public: ipv4_address: 192.168.100.100 command: --smp 1 minio: image: minio/minio:latest volumes: - minio_data:/data networks: public: ports: - "9001:9000" environment: MINIO_ACCESS_KEY: minio MINIO_SECRET_KEY: minio123 command: server /data volumes: minio_data: scylla_data: scylla_manager_db_data: networks: public: driver: bridge ipam: driver: default config: - subnet: 192.168.100.0/24
此配置指示 Docker 创建两个容器:scylla-manager 容器运行 Scylla Manager 服务器,scylla-manager-db 容器运行 Scylla 数据库(Scylla Manager 用于保存其数据)。此外,还提供了一个 MinIO 实例用于备份,以及一个供应用使用的 Scylla 实例。请注意,这不是生产环境设置,生产环境需要更复杂的存储和安全配置。
Dockerfile 复制到与步骤 1 中保存的 docker-compose.yaml 相同的目录。此 Dockerfile 用于创建包含 Scylla Manager Agent 的 ScyllaDB 镜像,因为 Agent 需要访问 ScyllaDB 的数据文件以创建备份。dockerfileFROM scylladb/scylla:latest RUN echo -e "#!/usr/bin/env bash\n\ set -eu -o pipefail\n\ if [[ ! -f \"/var/lib/scylla-manager/scylla_manager.crt\" || ! -f \"/var/lib/scylla-manager/scylla_manager.key\" ]]; then\n\ /sbin/scyllamgr_ssl_cert_gen\n\ fi\n\ exec /usr/bin/scylla-manager-agent $@" > /scylla-manager-agent-docker-entrypoint.sh RUN echo -e "[scylla-manager]\n\ name=Scylla Manager for Centos \$releasever - \$basearch\n\ baseurl=[***]\7/\$basearch/\n\ enabled=1\n\ gpgcheck=0\n" > /etc/yum.repos.d/scylla-manager.repo RUN echo -e "[program:scylla-manager-agent]\n\ command=/scylla-manager-agent-docker-entrypoint.sh\n\ autorestart=true\n\ stdout_logfile=/dev/stdout\n\ stdout_logfile_maxbytes=0\n\ stderr_logfile=/dev/stderr\n\ stderr_logfile_maxbytes=0" > /etc/supervisord.conf.d/scylla-manager-agent.conf RUN yum -y install epel-release && \ yum -y clean expire-cache && \ yum -y update && \ yum install -y scylla-manager-agent && \ yum clean all && \ rm /etc/yum.repos.d/scylla-manager.repo RUN echo -e "auth_token: token\n\ s3:\n\ access_key_id: minio\n\ secret_access_key: minio123\n\ endpoint: [***]" > /etc/scylla-manager-agent/scylla-manager-agent.yaml RUN rm -f /var/lib/scylla-manager/scylla_manager.crt && \ rm -f /var/lib/scylla-manager/scylla_manager.key && \ chmod --reference=/usr/bin/scylla-manager-agent /scylla-manager-agent-docker-entrypoint.sh
docker-compose up 命令创建并启动容器:bashSCYLLA_MANAGER_VERSION=2.0.1 docker-compose up -d
也可以不使用 Docker Compose,直接通过 Docker 命令手动设置。
为避免启动问题,建议先启动外围服务,如 MinIO。
按以下命令启动 MinIO 容器,并将其链接到后续创建的 Scylla 实例:
bashdocker run -d -p 9000:9000 --name minio1 \ -e "MINIO_ACCESS_KEY=minio" \ -e "MINIO_SECRET_KEY=minio123" \ -v /mnt/data:/data minio/minio server /data
复制 Docker Compose 示例中使用的 Dockerfile 到当前目录,用于构建包含 Scylla Manager Agent 的 ScyllaDB 镜像(确保 ScyllaDB 与 Scylla Manager 之间的正常通信)。
执行构建命令:
bashdocker build -t scylladb/scylla-with-agent .
使用刚构建的镜像创建新的 ScyllaDB 实例(用于存储应用数据),并链接到 MinIO 实例:
bashdocker run -d --name scylla --link minio1 --mount type=volume,source=scylla_db_data,target=/var/lib/scylla scylladb/scylla-with-agent --smp 1 --memory=1G
启动 ScyllaDB 实例作为 Scylla Manager 的内部数据存储:
bashdocker run -d --name scylla-manager-db --mount type=volume,source=scylla_manager_db_data,target=/var/lib/scylla scylladb/scylla --smp 1 --memory=1G
最后启动 Scylla Manager,链接到上述两个 ScyllaDB 实例:
bashdocker run -d --name scylla-manager --link scylla-manager-db --link scylla scylladb/scylla-manager:2.0.1
通过 docker exec 在 scylla-manager 容器中调用 bash,将创建的单节点集群添加到 Scylla Manager:
bashdocker exec -it scylla-manager sctool cluster add -c cluster --host=scylla --auth-token=token 1a0feeba-5b38-4cc4-949e-6bd704667552 __ / \ 集群已添加!您可以通过导出集群名称或 ID 作为环境变量将其设为默认集群: @ @ $ export SCYLLA_MANAGER_CLUSTER=1a0feeba-5b38-4cc4-949e-6bd704667552 | | $ export SCYLLA_MANAGER_CLUSTER=<名称> || |/ || || 现在可运行: |\_/| $ sctool status -c cluster \___/ $ sctool task list -c cluster
检查集群状态:
bashdocker exec -it scylla-manager sctool status -c cluster Datacenter: datacenter1 +----------+-----+----------+-----------------+ | CQL | SSL | REST | Host | +----------+-----+----------+-----------------+ | UP (0ms) | OFF | UP (0ms) | 192.168.100.100 | +----------+-----+----------+-----------------+
有关更多详情,请参见完整的 sctool 参考文档。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务