在学习mongo时,通常会在虚拟机中安装多个Linux系统并创建副本集。如果Linux系统没有设置固定ip,ip可能会因为某些原因改变,导致副本集启动失败。本文主要介绍如何处理这类问题。

如果只有部分ip改变,启动副本集时某个节点是primary节点。那么在primary节点中执行如下命令:

// 1
use admin

// 2
cfg = {
   _id : "rs0",
   members: [ { _id : 0, host : "192.168.79.128:27017" }, { _id : 1, host : "192.168.79.129:27017" }, { _id : 2, host : "192.168.79.130:27017" } ]
}

// 3
rs.reconfig(cfg)

192.168.79.128:27017为对应机器的ip和端口号。

如果所有系统的ip都改变了,启动时没有primary节点,则任意选择一个节点执行上面命令,不过第三步的命令改为:

rs.reconfig(cfg, {force : true})

配置副本集时也可使用主机名的方式,只需要修改/etc/hosts文件,把ip和主机名作映射:

// 192.168.79.128配置
192.168.79.129  zong1
192.168.79.130  zong2

// 192.168.79.129配置
192.168.79.128  zong
192.168.79.130  zong2

// 192.168.79.130配置
192.168.79.128  zong
192.168.79.129  zong1

这样,ip改变时只需要修改/etc/hosts文件中的ip就可以了。

最后也是推荐的方式是为每个副本集中的机器设置固定ip,这样ip就不会改变了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐