Azure上的MongoDB: replSet不能获取local.system.replset配置
本文关键字:local system replset 配置 获取 不能 上的 MongoDB replSet Azure | 更新日期: 2023-09-27 18:07:45
我正在使用MongoDB工作者角色项目在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中托管RavenDB作为Worker Role,并且也有很多问题。
今天,我认为最好在目标平台上运行数据库的"建议"方式,即根据本"在Windows上安装MongoDB"指南的Windows服务。这样,您就不必处理azure特有的问题。要实现这一点,您可以:
- 使用Azure cmdlet和CsPack.exe一起创建MondoDB包。
- 类似于我在GitHub上发布的Azure上的RavenDB主从读取的解决方案。
- 在Azure上注册虚拟机(测试版),启动机器并在那里手动安装MongoDB。
但是我想托管数据库时最重要的问题是:你打算在哪里存储实际的数据库?
- Azure的CloudDrive是存储在云存储中的VHD,具有最差的IO性能。我想说,这不足以正常使用数据库。
- 临时存储,云服务本地磁盘空间,具有完美的IO,但一旦虚拟机被删除,您将丢失所有数据。这意味着你通常想要持续或至少定期备份到云存储,可能是通过CloudDrive。
- Azure VM附加磁盘-比CloudDrive有更好的IO,但仍然不如Ephemeral storage。
对于您的问题的实际排除。我建议用try-catch包装OnRoleStart,将其写入日志,启用RDP到盒子,然后连接并查看实际问题。另一个选择是使用IntelliTrace,但你需要VS Ultimate。另外,不要忘记,如果你的应用程序需要对磁盘进行写操作,Azure需要使用本地资源。