【发布时间】:2017-10-08 04:02:18
【问题描述】:
我的一些数据位于 Mongo 副本中,这些副本托管在 Kubernetes 集群中运行的 docker 容器中。我需要从在同一 VPC 和子网中运行的 AWS lambda 访问这些数据(作为带有 mongo db 的 kubernetes minions)。 lambda 以及 kubernetes minions(托管 mongo 容器)在同一个安全组下运行。我正在尝试使用 url "mongodb://mongo-rs-1-svc,mongo-rs-2-svc,mongo-rs-3-svc/res?replicaSet=mongo_rs" 连接其中 mongo-rs-x-svc是三个 Kubernetes 服务,可以访问适当的副本。当我尝试使用此 url 进行连接时,它无法解析 mongo 副本 url(例如 mongo-rs-2-svc)。相同的 URL 适用于我在同一个 kubernetes 集群中自己的 docker 容器中运行的 Web 服务。
这是我从我使用的 mongo 客户端得到的错误... {\"name\":\"MongoError\",\"message\":\"第一次连接时无法连接到服务器 [mongo-rs-1-svc:27017] [MongoError: getaddrinfo ENOTFOUND mongo-rs-1 -svc mongo-rs-1-svc:27017]\"}"。我尝试将 mongo-rs-x-svc 替换为 url 中的内部 ip 地址。在这种情况下,上述名称解析错误消失了,但出现了另一个错误 - {\"name\":\"MongoError\",\"message\":\"第一次连接时无法连接到服务器 [10.0.170.237:27017] [MongoError: 连接 5 到 10.0.170.237:27017 超时] \"}
我应该怎么做才能成功启用此访问权限?
我知道我可以使用 web 服务作为中介访问这些数据,但由于我的 lambda 在 VPC 中,我必须部署 NAT 网关,这会增加成本。有没有办法使用内部端点而不是公共 url 访问 web 服务?可能这是另一种获取数据的方式。
如果你们中的任何人对此场景有解决方案,请分享。我浏览了许多显示为类似问题或在搜索结果中的线程,但都没有针对这种情况的解决方案。
【问题讨论】:
标签: node.js mongodb amazon-web-services kubernetes aws-lambda