nom*_*mad 4 cassandra docker scylla
我是 Scylla 的新手,我正在按照此页面的说明在容器中尝试它: https: //hub.docker.com/r/scylladb/scylla/。
\n以下命令运行良好。
\ndocker run --name some-scylla --hostname some-scylla -d scylladb/scylla
我看到容器正在运行。
\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\ne6c4e19ff1bd scylladb/scylla "/docker-entrypoint.\xe2\x80\xa6" 14 seconds ago Up 13 seconds 22/tcp, 7000-7001/tcp, 9042/tcp, 9160/tcp, 9180/tcp, 10000/tcp some-scylla\n
Run Code Online (Sandbox Code Playgroud)\n但是,我无法使用nodetool
or cqlsh
。我得到以下输出。
$ docker exec -it some-scylla nodetool status\nUsing /etc/scylla/scylla.yaml as the config file\nnodetool: Unable to connect to Scylla API server: java.net.ConnectException: Connection refused (Connection refused)\nSee \'nodetool help\' or \'nodetool help <command>\'.\n
Run Code Online (Sandbox Code Playgroud)\n和
\n$ docker exec -it some-scylla cqlsh\nConnection error: (\'Unable to connect to any servers\', {\'172.17.0.2\': error(111, "Tried connecting to [(\'172.17.0.2\', 9042)]. Last error: Connection refused")})\n
Run Code Online (Sandbox Code Playgroud)\n有任何想法吗?
\n更新
\n查看docker logs some-scylla
日志中我看到一些错误,最后一个如下。
2021-10-03 07:51:04,771 INFO spawned: \'scylla\' with pid 167\nScylla version 4.4.4-0.20210801.69daa9fd0 with build-id eb11cddd30e88ef39c32c847e70181b5cf786355 starting ...\ncommand used: "/usr/bin/scylla --log-to-syslog 0 --log-to-stdout 1 --default-log-level info --network-stack posix --developer-mode=1 --overprovisioned --listen-address 172.17.0.2 --rpc-address 172.17.0.2 --seed-provider-parameters seeds=172.17.0.2 --blocked-reactor-notify-ms 999999999"\nparsed command line options: [log-to-syslog: 0, log-to-stdout: 1, default-log-level: info, network-stack: posix, developer-mode: 1, overprovisioned, listen-address: 172.17.0.2, rpc-address: 172.17.0.2, seed-provider-parameters: seeds=172.17.0.2, blocked-reactor-notify-ms: 999999999]\nERROR 2021-10-03 07:51:05,203 [shard 6] seastar - Could not setup Async I/O: Resource temporarily unavailable. The most common cause is not enough request capacity in /proc/sys/fs/aio-max-nr. Try increasing that number or reducing the amount of logical CPUs available for your application\n2021-10-03 07:51:05,316 INFO exited: scylla (exit status 1; not expected)\n2021-10-03 07:51:06,318 INFO gave up: scylla entered FATAL state, too many start retries too quickly\n
Run Code Online (Sandbox Code Playgroud)\n更新2
\n上面链接的 docker hub 页面描述了错误的原因。我必须启动指定 CPU 数量的容器,--smp 1
如下所示。
docker run --name some-scylla --hostname some-scylla -d scylladb/scylla --smp 1\n
Run Code Online (Sandbox Code Playgroud)\n根据上面的页面:
\n\n\n此命令将以开发人员模式启动 Scylla 单节点集群\n(请参阅
\n--developer-mode 1
),受限于单个 CPU 核心(请参阅--smp
)。\n生产级配置需要调整一些内核参数\n以便限制可用核心的数量(使用--smp 1
) \n最简单的方法。多核需要为\n 设置适当的值
\n/proc/sys/fs/aio-max-nr
。在许多非生产系统上,它将\等于 65K。...
小智 6
正如您所发现的,为了能够使用额外的 CPU 核心,您需要增加fs.aio-max-nr
内核参数。
您可以以 root 身份运行:
# sysctl -w fs.aio-max-nr=65535
Run Code Online (Sandbox Code Playgroud)
对于大多数系统来说这应该足够了。如果您仍然有任何错误阻止它使用所有 CPU 核心,请进一步增加其值。
请注意,上述配置不是持久的。编辑/etc/sysctl.conf
以使其在重新启动后保持不变。
归档时间: |
|
查看次数: |
1517 次 |
最近记录: |