【问题标题】:MongoDB on Azure: replSet can't get local.system.replset configAzure 上的 MongoDB:replSet 无法获取 local.system.replset 配置
【发布时间】:2013-03-29 10:24:58
【问题描述】:

我正在使用 MongoDB worker role project 在 Azure 上使用 MongoDB。我有两个独立的云服务,其中一个一切正常,但在另一个中,MongoDB 工作人员角色卡在Busy (Waiting for role to start... Calling OnRoleStart 状态。

我连接到其中一个 MongoDB 工作角色并访问 MongoDB 日志文件,发现以下错误:

[rsStart] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG)

有一些关于如何正常修复此问题的线程,但 Windows Azure 没有。我没有为 MongoDB 工作角色配置任何东西(除了 Azure 存储连接字符串),它在另一个服务中工作,所以我不知道为什么它不适用于这个服务。有什么想法吗?

【问题讨论】:

  • 跟踪同步到 Azure Blob 存储。你能看看他们,看看错误是什么?或者,您是否能够对机器进行 RDP 以查看发生了什么?最后,这两个服务是否都在同一个存储帐户上?如果是这样,请确保它们具有不同的 RS 名称

标签: c# mongodb azure


【解决方案1】:

前段时间,我尝试将 RavenDB 作为 Worker Role 在 Azure 中托管,但也遇到了很多问题。

今天,我认为最好根据"Install MongoDB on Windows" 指南在目标平台上以“建议”的方式运行数据库,即作为 Windows 服务。这样您就不必处理特定于 Azure 的问题。为此,您可以:

  1. 使用 Azure CmdLets 和 CsPack.exe 为 MondoDB 创建包。
  2. 类似于我在 GitHub 上发布的 RavenDB Master-Slave reads on Azure 的解决方案。
  3. 在 Azure 上注册虚拟机(测试版),启动机器并在其中手动安装 MongoDB。

但我想托管 DB 时最重要的问题是:您打算将实际 DB 存储在哪里?

  • Azure 的 CloudDrive 是存储在云存储中的 VHD,其 IO 性能可能是最差的。我会说,这对于正常的数据库使用来说是不够的。
  • Ephemeral storage,云服务本地磁盘空间,IO完美,但是一旦VM被删除,所有数据都会丢失。这意味着您通常希望通过 CloudDrive 持续或至少定期备份到 Cloud Storage。
  • Azure VM attached disk - 具有比 CloudDrive 更好的 IO,但仍不如 Ephemeral 存储。

至于您的问题的实际故障排除。我建议使用 try-catch 包装 OnRoleStart,将其写入日志,启用 RDP 到盒子,然后连接并就地查看实际问题。另一种选择是使用 IntelliTrace,但您需要 VS Ultimate。此外,如果您的应用需要写入磁盘,请不要忘记 Azure 需要使用本地资源。

【讨论】:

    猜你喜欢
    • 2020-06-26
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多