我无法从docker容器中的nodejs应用程序连接到cassandra

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

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连接。

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

任何帮助是欣赏。

好的,我find了解决scheme。

我的主机的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/