首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部署到Docker的应用程序没有与MongoDB副本集连接

部署到Docker的应用程序没有与MongoDB副本集连接
EN

Stack Overflow用户
提问于 2021-05-29 13:07:58
回答 1查看 326关注 0票数 1

我用3台机器部署了我的应用程序。

MongoDB副本集是手动配置的,它作为Ubuntu机器上的服务工作。

我正在尝试连接到我的后端应用程序到MongoDB副本集,但我的上下文截止日期超过了错误。我使用Private-ip来连接,因为机器都在同一个AWS中。端口27017在安全组中是开放的,可以被VPC网络IP使用。

在每台计算机上都正确配置了/etc/hosts

我使用Docker-Compose文件来部署堆栈。

复制件工作正常。我用手工插入了很少的文件来检查它。

这幅画将帮助读者更好地理解上下文。

缩略语

  • BE =后端
  • FE=
  • Mac 1= Machine 1
  • AZ-1 =可用性区域1

h 117VPC=虚拟私有云H 218f 219

我猜:

是因为复制-设置不是在群集网络中,这就是为什么它无法连接?

我正试图解决这个问题很长一段时间,但还没有成功。现在需要帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-02 10:18:46

我找到了解决办法。

这个问题与MongoDB副本实例的名称有关。

第一个成员的主机名是"host" : "10.0.0.223:27017"

  • The,第二个成员的主机名是"host" : "node2:27017"

  • The,第三个成员的主机名是"host" : "node3:27017"

由于这种不一致性,后端应用程序无法连接到副本集。

代码语言:javascript
复制
{
    "_id" : "replica1",
    "version" : 5,
    "term" : 5,
    "protocolVersion" : NumberLong(1),
    "writeConcernMajorityJournalDefault" : true,
    "members" : [
        {
            "_id" : 0,
            "host" : "10.0.0.223:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 1,
            "host" : "node2:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 2,
            "host" : "node3:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        }
    ],

解决方案

为了解决这个问题,我用私有IP重新配置了副本集节点。用于复制集配置的私有IP的节点。

第一个ssh到主机器。登录到mongo主节点shell并执行以下命令,以更改JSON中第二个mongo节点的主机条目。

代码语言:javascript
复制
> cfg = rs.conf()
> cfg.members[2].host = "10.0.5.242:27017" (Private IP of second mongodb instance)
> rs.reconfig(cfg)

在JSON中的第三条芒果条目也是如此。

下面是在副本集中更改主机名的链接。

https://docs.mongodb.com/manual/tutorial/change-hostnames-in-a-replica-set/

另一个解决方案:

如果您的MongoDB部署都很好,并且一切都已正确设置,但仍然无法连接到DB,请尝试使用Change the Primary DB Instance

  • ssh到主machine.
  • Login到mongo主节点shell,并执行此命令replica:PRIMARY>rs.stepDown(120)。这将使您的其他实例主实例和当前实例成为次要实例.

我经历了这个问题,经过连续3天的尝试,这个解决方案对我有效。

希望这能帮助读者解决类似的问题。

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

https://stackoverflow.com/questions/67751750

复制
相关文章

相似问题

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