【问题标题】:I can't connect to cassandra from nodejs app in docker container我无法从 docker 容器中的 nodejs 应用程序连接到 cassandra
【发布时间】:2017-09-08 10:42:20
【问题描述】:

我在使用“桥”网络的 docker 容器(节点:7.8.0)中有一个 nodejs 应用程序。我使用 cassandra 驱动程序连接 cassandra 服务器,但在初始化连接时会引发超时异常:

Error: The host 172.16.210.101:9042 did not reply before timeout 12000 ms
    at OperationTimedOutError.DriverError (node_modules/cassandra-driver      /lib/errors.js:14:19)
    at new OperationTimedOutError (node_modules/cassandra-driver/lib/errors.js:104:33)
    at Connection.onTimeout (node_modules/cassandra-driver/lib/connection.js:645:20)
    at Timeout._onTimeout (node_modules/cassandra-driver/lib/connection.js:620:10)
    at ontimeout (timers.js:386:14)
    at tryOnTimeout (timers.js:250:5)
    at Timer.listOnTimeout (timers.js:214:5)

从容器内部,我可以 ping cassandra 服务器并进行 telnet 连接。

使用“主机”网络工作,并在“标准”环境中执行应用程序。

感谢您的帮助。

【问题讨论】:

  • 你能显示你的 docker 命令吗?
  • 我使用 sudo docker run -it --rm --name project -p 8080:8080 -v "$PWD":/usr/src/app -w /usr/src/应用节点:7.8.0 bash script.sh,其中 script.sh 执行 npm installnpm start

标签: node.js docker cassandra


【解决方案1】:

好的,我找到了解决办法。

我的主机的MTU是1450,docker0默认使用1500,会报错。

所以,我更改了 docker 的 MTU,它就可以工作了。

我使用的是 debian 主机,并按照以下步骤操作:

复制服务文件:

cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service

然后,像这样编辑“ExecStart”行:

ExecStart=/usr/bin/dockerd -H fd:// --mtu=1400

最后重启docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

来源: https://rahulait.wordpress.com/2016/02/28/modifying-default-mtu-for-docker-containers/

【讨论】:

    猜你喜欢
    • 2017-12-20
    • 2019-05-24
    • 2017-10-05
    • 1970-01-01
    • 2017-04-11
    • 2020-12-23
    • 2019-07-30
    • 1970-01-01
    • 2017-08-10
    相关资源
    最近更新 更多