无法连接到 Scylla API 服务器:java.net.ConnectException:MAC OS 上的连接被拒绝(连接被拒绝)

问题描述 投票:0回答:1

我是 Scylla DB 的新手,我只是使用文档中给出的命令创建节点。 发生的情况是,当我创建两个节点时,无论它们被称为什么,它们都会连接到 Scylla DB 服务器,但是当涉及到第三个节点时,我会遇到此错误。 例如 使用
成功创建Node_X后

docker run --name Node_X -d scylladb/scylla:5.2.0 --overprovisioned 1 --smp 1
我使用

检查了 Node_X 的节点工具状态
docker exec -it Node_X nodetool status 

并且得到了

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens       Owns    Host ID                               Rack
UN  172.17.0.3  1.03 MB    256          ?       57765ee9-bb4b-4287-a7c1-b47878e22926  rack1
UN  172.17.0.2  256 KB     256          ?       bce9e5b7-e5ab-47aa-88d3-3413fd6e4980  rack1

Node_Y 也是如此,它是使用命令

docker run --name Node_Y -d scylladb/scylla:5.2.0 --seeds="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' Node_X)" --overprovisioned 1 --smp 1
创建的,运行得非常好。成功给出其节点工具状态。

但是当涉及到 Node_Z(第三个节点)时,它会给出错误。 为了创建我使用了这个命令

docker run --name Node_Z -d scylladb/scylla:5.2.0 --seeds="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' Node_X)" --overprovisioned 1 --smp 1

对于状态检查使用此命令

docker exec -it Node_Z nodetool status

并有幸遇到错误:

nodetool: Unable to connect to Scylla API server: java.net.ConnectException: Connection refused (Connection refused)
See 'nodetool help' or 'nodetool help <command>'.

像往常一样,我记录了未连接的 Node_Z 并发现了

FATAL: Exception during startup, aborting: std::runtime_error (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)

很公平,我查阅了他们的文档,发现我们可以使用

echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
增加 aio-max-nr 的值,但在此之前我们需要找到这个文件,从这里开始,真正的问题开始了我使用这个命令来定位文件,但是幸运地又犯了一个错误

cat /proc/sys/fs/aio-max-nr
cat: /proc/sys/fs/aio-max-nr: No such file or directory

为了保存更改,我们使用它,它给出:

sysctl -p /etc/sysctl.conf
sysctl: illegal option -- p
usage: sysctl [-bdehiNnoqx] name[=value] ...
       sysctl [-bdehNnoqx] -a

使用了其他技术,例如

sudo sysctl -w fs.aio-max-nr=1048576
sysctl: unknown oid 'fs.aio-max-nr'

然后另一种技术

sudo nano /etc/sysctl.conf

fs.aio-max-nr = 1048576

之后使用了另一种技术:

docker exec -it Node_Z bash

然后进入bash后,使用以下命令更改aio-max-nr:

sudo sysctl fs.aio-max-nr=1048576
sysctl: setting key "fs.aio-max-nr", ignoring: Read-only file system

它将更改该号码,您可以使用以下方式检查:

cat /proc/sys/fs/aio-max-nr

但就我而言,值没有改变,它仍然存在:

65536

然后我发现有只读限制,所以我尝试使用以下方法将文件方法更改为读取和写入

sudo mount -o remount,rw /
mount: /: permission denied.

这是我所得到的,花了几天时间后不知道如何处理。有人说 MAC OS 使用不同的值作为

kern.aiomax
而不是
fs.aio-max-nr
kern.aiomax
无法采用与
fs.aio-max-nr=1048576
一样大的值,这是解决此错误所必需的。 专家帮助我。

设备:

MacBook Pro
Intel Chip
MAC OS VENTURA Version 13.6.4
docker scala scylla
1个回答
0
投票

只需将 ScyllaDb 降级到 4.5.0。

不要使用 5.2.0 创建 所有节点(在您的情况下为 Node_X、Node_Y、Node_Z),而是使用 4.5.0

docker run --name Node_Z -d scylladb/scylla:4.5.0 --seeds="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' Node_X)" --overprovisioned 1 --smp 1
© www.soinside.com 2019 - 2024. All rights reserved.