我无法从docker容器中的nodejs app连接到cassandra

时间:2017-04-12 14:58:29

标签: node.js docker cassandra

我在docker容器(node:7.8.0)中使用'bridge'网络有一个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连接。

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

任何帮助都表示赞赏。

1 个答案:

答案 0 :(得分: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/