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

一、环境

1、架构图

2、部署详细

10.10.17.26:27000 (primary)
10.10.17.27:27000 (secondary)
10.10.2.74:27000    (arbiter)

二、安装配置

1、安装见mongodb安装

2、撰写配置文件

vi /etc/mongod_27000.conf
logpath=/data/mongodb/navy_db/log/mongod.log #mongodb日志文件
logappend=true   #追加方式写日志文件
fork=true        #后台运行
port=27000       #mongodb端口
dbpath=/data/mongodb/navy_db/db
pidfilepath=/data/mongodb/navy_db/log/mongod.pid
bind_ip=0.0.0.0
rest = 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到admin
use 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()
#查看当前谁是primary
rs.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 admin
db.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:[email protected]:27000,10.10.17.27:27000/navy_db”
时间: 2024-10-16 05:18:07

mongdb 复制集+仲裁(带权限认证)的相关文章

mongdb 复制集

步骤: 一.启动三台进程 1../bin/mongod --dbpath=/home/work/app/mongodb/mongodb-linux-x86_64-amazon-3.2.7/data/r0 --logpath=/home/work/logs/mongodb/r0.log --fork --port=27017 --replSet=rs1 2../bin/mongod --dbpath=/home/work/app/mongodb/mongodb-linux-x86_64-amazo

MongoDB复制集(实现选举复制、故障切换、升级oplog大小、认证复制)

什么是复制集? 复制集(replica sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断服务进行恢复. 复制集的优势 让数据更安全. 高数据可用性. 灾难恢复. 无停机维护(如备份.索引重建.故障转移) 读缩放(额外的副本读取) 副本集对应用程序是透明的. 复制集概述 MongoDB复制集是额外的数据副本,复制集提供了冗余和增加数据可用性. MongoDB的复制集至少需要两个节点,其中主节点负责处理客户端请求,从节点负责

MongDB开启权限认证

在生产环境中MongoDB已经使用有一段时间了,但对于MongoDB的数据存储一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),最近在酷壳网看了一篇技术文章(https://coolshell.cn/?s=从+MONGODB+"赎金事件"+看安全问题&from=timeline&isappinstalled=0)介绍的mongodb未开启权限认证导致数据被黑客窃取,要比特币赎回的事件,考虑到数据安全的原因特地花了一点时间研究了一下,我现在用的版本是Mon

MongoDB实战指南(七):MongoDB复制集之复制集工作机制

http://www.cnblogs.com/longshiyVip/p/5097336.html 概述了复制集,整体上对复制集有了个概念,但是复制集最重要的功能之——自动故障转移是怎么实现的呢?数据同步又是如何实现的?带着这两个问题,下面展开分析. 一. 数据同步 先利用mongo客户端登录到复制集的primary节点上. >mongo --port 40000 查看实例上所有数据库 rs0:PRIMARY> show dbs local 0.09375GB 可以看到只有一个local数据库

mongodb之replSet复制集 + auth

### 开启auth认证的mongodb的复制集 ### 注意点 - 服务器节点之前时间要同步 - 开启防火墙的一定要允许通过 - 开启selinux的也要进行设置 - 建立双击互信模式最好不过 ### 提前要做的事情 生产高端大气上档次的keyFile文件 [[email protected] journal]# openssl rand -base64 753 3LC/EZGPOLXdVBQInqeKVglqNNWo2Et93ib51BQJZRAUB2gRUovi4b6ZkAeNAQxc v

MongoDB复制集

MongoDB目前的高可用架构主要有主从.复制集.以及分片,单纯的主从技术几乎被淘汰,整个稳定性以及可靠性方面复制集要比主从好,所以现在更多的会去使用复制集.在接下来的实践过程中,我们将通过多实例的方法实现复制集.以及会解析搭建过程中遇到的困难问题. 一.基础环境与规划 操作系统:CentOS 6.7 MongoDB版本:3.4.5 实例部署情况: 主机IP 数据目录 日志文件 端口 127.0.0.1 /data/mongoDB/data/m17 /data/mongoDB/logs/mong

MongoDB复制选举原理及复制集管理

MongoDB复制集的选举原理 MongoDB复制的原理 MongoDB的复制是基于操作日志oplog,相当于MySQL中的二进制日志,只记录发生改变的记录.复制是将主节点的oplog日志同步并应用到其他从节点的过程. MongoDB选举的原理 MongoDB的节点分为三种类型,分别为标准节点(host).被动节点(passive)和仲裁节点(arbiter) 只有标准节点才有可能被选举为活跃节点(主节点),拥有选举权.被动节点有完整副本,不可能成为活跃节点,具有选举权.仲裁节点不复制数据,不可

MongoDB复制集管理优化

本文章将介绍MongoDB复制集的基本配置和管理,分别包括配置从节点可以读取数据.查看复制集状态.更改oplog大小.配置带认证的复制集 复制集的选举原理 复制是基于操作日志oplog,相当于Mysql中的二进制日志,只记录发生改变的记录.复制是将主节点的oplog日志同步并应用到其他从节点的过程. 选举的原理 节点的类型分为标准(host)节点.被动(passive)节点和仲裁(arbiter)节点. 标准节点可能被选举为活跃(primary)节点,有选举权. 被动节点有完整副本,不可能成为活

MongoDB复制集及管理

MongoDB复制集及管理 MongoDB复制集概述 什么是复制集 复制集是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复. 复制集的优点如下: 1).让数据更安全:2).高数据可用性:3).灾难恢复:4).无停机恢复(如备份.索引重建.故障转移):5).读缩放(额外的副本读取):6).副本集对应用程序是透明的: 复制集工作原理 MongoDB的复制集至少需要两个节点.其中一个是主节点(Primary),负责处理客户