
scylladb/scyllaScyllaDB是一款高性能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




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