我正在构建一个分片的MongoDB集群,我想自动管理它。为了实现这一点,我构建了一个分片数据库的正常设置:
- 配置数据库的3个副本
- 分片“a”的3个副本(最初只有一个,但随着节点大小的增加,分片的数量增加)
- mongodb访问点“mongos”的3个副本
为了连接config db和mongos示例,我使用了以下命令:
mongos --configdb "cfg/<ip_of_config_server_1>:<port_of_config_instance>,cfg/<ip_of_config_server_2>:<port_of_config_instance>,cfg/<ip_of_config_server_3>:<port_of_config_instance>" --fork --logpath <some_path> --port <some_port>
现在我的问题是,如果一个配置服务器从集群中删除(或关闭),另一个被添加,我需要更新mongos示例。
我只是不知道如何在不关闭mongos示例并重新运行此命令的情况下做到这一点,从而导致停机。
你们中有谁知道解决这种情况的方法或最佳实践吗?
1条答案
按热度按时间brccelvz1#
当您的客户端连接到
mongos
时,您还可以在连接字符串中放置多个mongos
主机(在您的情况下为3个),用逗号分隔。客户端在相应的mongos
示例上运行每个命令。因此,您可以逐个重新启动mongos
,而不会中断服务。当你有
如果一台主机关闭(假设为
ip_of_config_server_1
),则只要config_server_2
或config_server_3
启动,群集就保持完全工作。通常,当服务器出现故障时,您不会将其删除。您可以修复问题并重新启动它。或者当它发生物理故障时,替换的硬件将获得相同的主机名/IP,即
--configdb
不会更改。只是一个提示,我建议使用configuration file而不是命令行选项。在我看来,配置文件更容易处理和维护。