ScyllaDB是一款高性能NoSQL数据库系统,完全兼容Apache Cassandra。该数据库以开源形式发布,遵循GNU Affero通用公共许可证第3版(AGPLv3)和Apache许可证,可免费使用和修改。
ScyllaDB的核心设计目标是提供极高的吞吐量和低延迟,适用于需要处理大规模数据集的场景。通过Docker镜像,用户可快速部署单节点或多节点ScyllaDB集群,简化开发、测试和生产环境的搭建流程。
cqlsh、nodetool),可无缝迁移现有Cassandra应用。aio-max-nr)以优化性能。通过以下命令启动单节点ScyllaDB集群(开发者模式),限制使用1个CPU核心:
bashdocker run --name some-scylla --hostname some-scylla -d scylladb/scylla --smp 1
说明:
--smp 1:限制CPU核心数(生产环境需根据内核参数调整,详见下文)。--developer-mode 1),放松对XFS文件系统等配置的检查,适合测试。启动基础ScyllaDB节点(默认启用开发者模式):
bashdocker run --name some-scylla --hostname some-scylla -d scylladb/scylla
nodetool查看节点状态bashdocker exec -it some-scylla nodetool status
示例输出:
Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 172.17.0.2 125.51 KB 256 100.0% c9155121-786d-44f8-8667-a8b915b95665 rack1
cqlsh连接数据库bashdocker exec -it some-scylla cqlsh
示例输出:
Connected to Test Cluster at 172.17.0.2:9042. [cqlsh 5.0.1 | Cassandra 2.1.8 | CQL spec 3.2.1 | Native protocol v3] Use HELP for help. cqlsh>
以现有节点为种子,启动第二个节点:
bash# 获取第一个节点的IP SEED_IP=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' some-scylla) # 启动第二个节点,指定种子节点 docker run --name some-scylla2 --hostname some-scylla2 -d scylladb/scylla --seeds="$SEED_IP"
创建docker-compose.yml文件:
yamlversion: '3' services: some-scylla: image: scylladb/scylla container_name: some-scylla some-scylla2: image: scylladb/scylla container_name: some-scylla2 command: --seeds=some-scylla some-scylla3: image: scylladb/scylla container_name: some-scylla3 command: --seeds=some-scylla
启动集群:
bashdocker-compose up -d
bashdocker logs some-scylla | tail
示例输出:
INFO 2016-08-04 06:57:40,839 [shard 0] storage_service - Starting listening for CQL clients on 172.17.0.2:9042... INFO 2016-08-04 06:57:40,840 [shard 0] storage_service - Thrift server listening on 172.17.0.2:9160 ...
为提升性能并确保数据持久化,建议挂载宿主机目录作为数据卷:
bashsudo mkdir -p /var/lib/scylla/data /var/lib/scylla/commitlog /var/lib/scylla/hints /var/lib/scylla/view_hints
禁用开发者模式(生产环境),并挂载数据卷:
bashdocker run --name some-scylla --volume /var/lib/scylla:/var/lib/scylla -d scylladb/scylla --developer-mode=0
默认情况下,Scylla容器运行在过度配置模式(不启用CPU绑定优化)。为提升性能,建议通过以下参数限制资源:
--smp:限制CPU核心数--memory:限制内存使用量--cpuset:指定绑定的CPU核心示例:限制2个CPU核心、4GB内存,并绑定至物理CPU 0-1:
bashdocker run --name some-scylla -d scylladb/scylla --smp 2 --memory 4G --cpuset 0-1 --overprovisioned 0
容器内通过supervisorctl管理Scylla进程,重启命令:
bashdocker exec -it some-scylla supervisorctl restart scylla
通过docker run命令传递,用于自定义Scylla节点行为。
--seeds SEEDSbashdocker run --name some-scylla -d scylladb/scylla --seeds 192.168.0.100,192.168.0.200
--listen-address ADDR10.0.0.5
bashdocker run --name some-scylla -d scylladb/scylla --listen-address 10.0.0.5
--alternator-address ADDR--listen-address相同。--alternator-port PORTbashdocker run --name some-scylla -d scylladb/scylla --alternator-port 8000
--alternator-https-port PORT/etc/scylla/scylla.crt和/etc/scylla/scylla.key)。--alternator-write-isolation policy--broadcast-address ADDRbashdocker run --name some-scylla -d scylladb/scylla --broadcast-address 10.0.0.5
--broadcast-rpc-address ADDR--smp COUNTbashdocker run --name some-scylla -d scylladb/scylla --smp 1
--memory AMOUNTM(MB)或G(GB)为单位。bashdocker run --name some-scylla -d scylladb/scylla --memory 4G
--reserve-memory AMOUNTbashdocker run --name some-scylla -d scylladb/scylla --reserve-memory 2G
--overprovisioned ENABLE--cpuset时自动禁用。bashdocker run --name some-scylla -d scylladb/scylla --overprovisioned 0
--io-setup ENABLEscylla_io_setup脚本(I/O调优),默认1(启用)。Kubernetes等环境可禁用。bashdocker run --name some-scylla -d scylladb/scylla --io-setup 0
--cpuset CPUSET1)、范围(0-2)或列表(0,2,4)。bashdocker run --name some-scylla -d scylladb/scylla --cpuset 0-2,4
--developer-mode ENABLEbashdocker run --name some-scylla -d scylladb/scylla --developer-mode 0
--experimental ENABLEbashdocker run --name some-scylla -d scylladb/scylla --experimental 1
--disable-version-check--authenticator AUTHENTICATORAllowAllAuthenticator(无认证),可选PasswordAuthenticator(用户名/密码认证)。--authorizer AUTHORIZERAllowAllAuthorizer(无授权),可选CassandraAuthorizer(基于system_auth.permissions表授权)。通过环境变量(-e)配置JMX服务,容器启动时由/scylla-jmx-service.sh读取。
| 环境变量 | 作用 | 默认值 | 示例 |
|---|---|---|---|
SCYLLA_JMX_PORT | JMX监听端口 | -jp 7199 | -e "SCYLLA_JMX_PORT=-jp 7200" |
SCYLLA_API_PORT | Scylla API端口 | -p *** | -e "SCYLLA_API_PORT=-p ***" |
SCYLLA_JMX_ADDR | JMX绑定地址 | -ja localhost | -e "SCYLLA_JMX_ADDR=-ja 0.0.0.0" |
SCYLLA_JMX_REMOTE | 允许远程JMX访问 | 未设置(默认禁用) | -e "SCYLLA_JMX_REMOTE=-r" |
示例:开放JMX远程访问(绑定0.0.0.0,端口7199):
bashdocker run -d -e "SCYLLA_JMX_ADDR=-ja 0.0.0.0" -e "SCYLLA_JMX_REMOTE=-r" --publish 7199:7199 scylladb/scylla
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429