首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么当我试图连接到运行一个简单的mongo容器的OKD吊舱时,我会得到一个"message 1347703880是无效的。min16max: 48000000“错误?

为什么当我试图连接到运行一个简单的mongo容器的OKD吊舱时,我会得到一个"message 1347703880是无效的。min16max: 48000000“错误?
EN

Stack Overflow用户
提问于 2019-05-15 10:55:21
回答 1查看 981关注 0票数 1

我只使用基本的mongo:3.6.4官方坞映像创建了一个Mongo容器,并将其部署到我的OpenShift OKD集群中,但无法使用来自集群外部的Mongo客户机连接到这个MongoDB实例。

我可以在http://mongodb.my.domain上访问MongoDB,并成功地获得“看起来您试图在本地驱动程序端口上通过HTTP访问MongoDB”。消息。

当在吊舱上使用终端时,我可以成功地登录使用: mongo "mongodb://mongoadmin:pass@localhost“--身份验证数据库管理

但是当试图从OKD外部连接时,连接失败。

我的客户端需要通过代理才能访问OKD文件,我确实有一个.der证书文件,但我不确定这是否与问题有关。

我尝试过一些命令:

mongo "mongodb://mongoadmin:pass@mongodb.my.domain:80“-认证数据库管理

mongo -ssl "mongodb://mongoadmin:pass@mongodb.my.domain:80“--认证数据库管理

我希望能够成功地连接,但是却得到了以下错误消息:

代码语言:javascript
复制
MongoDB shell version v3.4.20
connecting to: mongodb://mongoadmin:pass@mongodb.my.domain:80
2019-05-15T11:32:25.514+0100 I NETWORK  [thread1] recv(): message len 1347703880 is invalid. Min 16 Max: 48000000
2019-05-15T11:32:25.514+0100 E QUERY    [thread1] Error: network error while attempting to run command 'isMaster' on host 'mongodb.my.domain:80'  :
connect@src/mongo/shell/mongo.js:240:13
@(connect):1:6
exception: connect failed

我不确定我是如何使用我的MongoDB客户端,还是在我的OKD集群中可能存在一些代理设置的问题。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-15 13:06:26

这里的问题是外部OpenShift路由在处理数据库连接方面不是很好。当您试图通过该路由连接到蒙古舱时,该路由将接受该连接并将您的连接传输到Mongo服务。我相信这种传输将连接封装在HTTP包装中,而Mongo不喜欢处理这个包装。OKD文件强调基于路径的路由流量应该是基于HTTP的,这将导致连接失败。

当试图连接到MongoDB数据库时,您可以看到这方面的证据,并返回“看起来您试图通过HTTP访问本机驱动程序端口上的MongoDB”。到浏览器上。用户relief.malone解释了这一点,并在他们对这个问题的回答中提出了一些解决方案/解决方案。

为了补充relief.mone的答案,我建议您从MongoDB吊舱转发到本地机器进行开发/调试。在生产中,您可以将一个应用程序部署到OKD,该应用程序通过它的内部DNS名称引用MongoDB服务,该名称将类似于以下内容:mongodb.project_namespace.svc:27017。这样,您将避免路由干扰连接。

关于端口转发这不是信息吗?的Openshift OKD文档,但是,由于oc在幕后运行kubectl命令,您可以阅读这是库伯奈特斯指南以获得更多信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56147657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档