配置replica set的常见问题

总有人问起配置ReplicaSet不成功,总结了一下基本上的可能性就几种,检查步骤如下:

假设三台机器的IP分别是

A: 192.168.1.2 a.test.com
B:192.168.1.3 b.test.com
C: 192.168.1.4 c.test.com

1. mongod有在运行吗?

虽然这是个很低级的问题,但是还是要不厌其烦地说一句,请先检查是否真的运行了mongod。

# ps awx | grep mongod
 7393 ?        Sl    42:32 /usr/bin/mongod -f /etc/mongod.conf <--正在运行的mongod进程
24663 pts/1    S+     0:00 grep mongod

2. bind_ip不正确

如果是从YUM源安装,CentOS默认bind_ip配置为127.0.0.1,所以是绝对不可能从其他机器连上的。验证办法为:

netstat -pln | grep mongod

如果绑定地址为:0.0.0.0:27017或192.168.1.2(局域网IP):27017则没有问题。

如需修改,编辑/etc/mongod.conf中

bind_ip=192.168.1.2

再重启mongod即可。

注意:在生产环境下不建议使用bind_ip=0.0.0.0,因为这样极易向公网暴露mongodb服务,造成不安全隐患。这也是为什么默认bind_ip是127.0.0.1的原因——让配置人员必须关注一下这个配置。

3. 防火墙未打开端口

经过以上步骤后,在正常情况下在任意一台机器上应该可以连接其他两台机器的27017端口。比如在A上时

mongo 192.168.1.3
mongo 192.168.1.4

应该都是可以顺利连接的,如果不行,那应该检查一下防火墙是否有在运作并阻止了你的访问。

这是一个关于iptables的基本操作问题,请查阅iptables相关使用方法,在此不再赘述。

4. 使用域名添加成员时请注意

跟步骤3一样的原因,因为任意两台实例必须能够互相连接,所以如果使用域名,应该确保使用到的域名在各个结点上都能够正常解析。在本例中三个实例都必须能够正常解析a/b/c.test.com到对应的机器

ping a.test.com
ping b.test.com
ping c.test.com

同时可见为什么不允许使用localhost/127.0.0.1作为地址添加进去,因为大家都会把localhost/127.0.0.1解析为自己,导致混乱。

5. keyfile配置问题

replica set成员必须使用同一个keyfile,内容可以随自己意愿。注意这个文件可以放在任意地方,但是权限必须是600,所属用户必须是启动mongod的用户

比如如果用service启动mongod,则该文件应该属于mongod:mongod;如果是用root用户启动,则该文件应该属于root:root。配置错误的情况下是会在日志中看到一个错误的。

以上是近期遇到的常见情况,随时补充。

时间: 2024-11-10 07:09:35

配置replica set的常见问题的相关文章

[MongoDB] 安装MongoDB配置Replica Set

url:http://blog.csdn.net/hf81970/article/details/19643639 MongoDB的环境主要包括StandAlone,Replication和Sharding. StandAlone:单机环境,一般开发测试的时候用. Replication:主从结构,一个Primary,多个Secondary,可能会有Arbitry. Primary挂掉之后,会选举出一个Secondary作为Primary,与zookeeper类似. Arbitry上面不存数据,

配置虚拟机时,常见问题

常见问题: 0. 现象:有同学按照要求把网络配置好以后,主机还是无法Ping通虚拟机,在虚拟机中ping 192.168.1.2 网关的时候报网络不可用 原因:虚拟机的网卡的MAC已经更改,但设置未更改. 解决:在虚拟机菜单:应用程序->系统设置-〉网络-〉设备Tab页-〉编辑按钮-〉硬件设备Tab页  点击[探测]按钮获取正确MAC地址,然后保存,激活. 1.现象:有同学启动虚拟机的时候选择了复制,结果在启动linux的时候被询问是否要重新配置的时候选择了Skip忽略,导致无法启动数据库. 原

ubuntu 配置 jdk的一些常见问题

首先下好压缩包.我用的是tar.gz 然后在/usr下解压,用mv或rename修改下文件夹名字,省得名字太长,然后再配置环境变量. so easy. 然而,  接下来你肯定会用 source /etc/profile 编译一下环境变量. 可能出现问题1:source命令找不到,解决方法:用 sudo su 切换成root,然后再用source去编译.ok.还不行,那就可能安装过程系统安装的时候可能有点问题了.好像这样用过一次,重新打开shell,source 就可以在user的权限下用了,因为

IIS配置过程中的常见问题

解析Json需要设置Mime IIS6.0 1.打开IIS添加Mime项 关联扩展名:*.json内容类型(MIME):application/x-JavaScript      2.添加映射: 位置在IIS对应站点右键属性:”主目录”-”应用程序设置”-”配置”-”映射”-”添加”,会打开”添加/编辑应用程序扩展名映射” 扩展名:.json运行文件:C:\WINDOWS\system32\inetsrv\asp.dll动作:GET,POST IIS7.x 1.打开IIS添加Mime项 关联扩展

centos关于vsftpd的配置、配置说明及常见问题

一.安装vsftpd 安装yum install -y vsftpd 开机启动 chkconfig vsftpd on 启动 service vsftpd start 加入防火墙 vi /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT 重启防火墙 service iptables restart 二.修改配置文件 1.基础配置 #不允许匿名访

iOS下OpenCV开发配置的两个常见问题(sign和link)

先上可以运行官方推荐的<OpenCV for iOS samples>的demo链接:https://github.com/Itseez/opencv_for_ios_book_samples.git 一.关于真机开发的限制: iOS下进行OpenCV开发,如果涉及到摄像头,需要使用真机运行,所以需要添加开发者账号,如果是免费的,每周可以运行7次(如果资金有限就多注册几个可用账号吧)general-add an account. 二.照着官方说明做却没成功 如果自己建立的项目,按照OpenCV

Java Web:配置Tomcat出现的常见问题及其解决方案

最近开始了Java EE 开发,在配置Tomcat的过程中出现了一些问题,我参考了网上的一些教程,又根据自己出错的特殊地方做了一些总结,分享给需要的读者.  首先,如果你刚开始接触Java EE开发,不清楚怎么搭建开发环境,你可以参考如下的文章链接:http://www.jizhuomi.com/software/357.html:作者写的很细,有些配置方法虽然不规范,但是很简单实用. 下面就可能的运行报错,具体介绍: (1)8080等端口被占用,无法运行: 解决方法:若使用.exe安装包安装T

Java配置微服务项目常见问题

一.检查电脑环境 1)首先确认电脑java和tomcat是否安装和配置:Java开发环境配置基础教程(IDEA Windows篇) 2)安装 git 3)确认正确安装了 IDEA 开发工具,并配置 IDEA 相关参数,例如 git 地址,java sdk 地址等. 4)确认apllo配置文件,在 C:\opt\settings\server.properties 文件中 填写:env=DEV 二.检查项目 1)通过 gitlab 下载代码:确认注册或开通了 gitlab(http://gitla

MongoDB 维护Replica Set

在每个MongoDB(版本 3.2.9) Instance中,都有一个本地数据库(local),用于存储 Replication 进程的信息和本地数据.local 数据库的特性是:位于local数据库中的数据和集合不会被 Replication 进程复制到其他MongoDB instance上.如果实例上有些collection 和 data不计划被复制到其他MongoDB Instance,可以将这些collection 和 data 存储在local 数据库中. MongoDB shell提