您好,欢迎访问一九零五行业门户网

mongdb复制集+仲裁(带权限认证)

一、 环境 1、架构图 650) this.width=650; src=http://www.68idc.cn/help/uploads/allimg/151111/120f554m-0.jpg title=111111111.png alt=wkiol1xrzn6srvmyaadm1onfeso308.jpg /> 2、部署详细 10.10.17.26:27000(primary)10.10.17.27:27000(seco
一、环境
1、架构图
650) this.width=650; src=http://www.68idc.cn/help/uploads/allimg/151111/120f554m-0.jpg title=111111111.png alt=wkiol1xrzn6srvmyaadm1onfeso308.jpg>
2、部署详细
10.10.17.26:27000 (primary)10.10.17.27:27000 (secondary)10.10.2.74:27000 (arbiter)
3、软件版本
mongdb :2.6.11系统:centos 6.6
二、安装配置
1、安装见mongodb安装
2、撰写配置文件
vi /etc/mongod_27000.conflogpath=/data/mongodb/navy_db/log/mongod.log #mongodb日志文件logappend=true #追加方式写日志文件fork=true #后台运行port=27000 #mongodb端口dbpath=/data/mongodb/navy_db/dbpidfilepath=/data/mongodb/navy_db/log/mongod.pidbind_ip=0.0.0.0rest = true #开启web访问journal = true #启用日志选项,mongodb的数据操作将会写入到journal文件夹的文件里oplogsize=2048 #同步操作记录文件大小(mb)replset=dbset #副本集名称,同一个副本集,名称必须一致auth=true #开启验证keyfile=/data/mongodb/navy_db/password.key #key认证
3、生成keyfile文件
echo c57a012cf2f8a8e20dd4b21a7fae48b3 >/data/mongodb/navy_db/password.key
4、设置keyfile权限,必须是600
chmod 600 /data/mongodb/navy_db/password.key
5、启动服务
ulimit -s 4096 && ulimit -m 16777216 & numactl --interleave=all /usr/bin/mongod -f /etc/mongod_27000.conf
ps:
在配置集群之前auth和keyfile先注释掉,待集群初始化完成,建立用户(从库上不需要建用户,当集群初始化完成会从主库上同步过来的,如果从库建了用户,集群初始化会报错,提示从库已有数据),然后打开,并重启服务让其生效
三、集群配置
#use到adminuse admin创建配置(dbset是集群名称,必须和配置文件中replset的值一样)config = { _id:dbset, members:[... ... {_id:1,host:10.10.11.34:27000},... ... {_id:2,host:10.10.16.6:27000}]... ... }#初始化集群 rs.initiate(config);#添加仲裁节点rs.addarb(10.10.2.74:27000)#查看集群状态 rs.status()
ps:其他常用命令
#删除一个节点rs.remove(10.10.2.74:27000)#查看集群配置信息rs.conf()#查看当前谁是primaryrs.ismaster()#查看主从延时rs.printslavereplicationinfo()#查看rs相关命令rs.help()
rs.status()结果说明
1. startup:刚加入到复制集中,配置还未加载2. startup2:配置已加载完,初始化状态3. recovering:正在恢复,不适用读4. arbiter: 仲裁者5. down:节点不可到达6. unknown:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构,脑裂7. removed:移除复制集8. rollback:数据回滚,在回滚结束时,转移到recovering或secondary状态9. fatal:出错。查看日志grep “replset fatal”找出错原因,重新做同步10. primary:主节点11. secondary:备份节点
四、建立用户(只能在primary节点上操作)
use admindb.adduser('admin','123456') #建立管理员账号use navy_db #如果navy_db存在就进入库,如果不存在就建立navy_db库,空库show dbs是看不到的db.adduser('navy_db_pro','123456') #建立navy_db的读写账号db.adduser('navy_db_sel','123456',true) #建立navy_db的只读账号
五、重启集群
把auth和keyfile的注释去掉,arbiter、secondary、primary三个节点依次重启,让其生效
rs.status() 查看集群状态是否ok
ps:
1、从库默认是不可以读的,如果需要从库提供读业务,需要做一下设置
db.getmongo().setslaveok()
2、mongdb的客户端驱动支持这种架构,主库挂了,secondary提升为主,对于应用基本透明
client=mongoclient(“mongdb://navy_db_pro:123456@10.10.17.26:27000,10.10.17.27:27000/navy_db”
其它类似信息

推荐信息