设为首页 收藏本站
查看: 1184|回复: 0

[经验分享] mongdb 复制集+仲裁(带权限认证)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-18 09:10:30 | 显示全部楼层 |阅读模式
一、环境
1、架构图
wKioL1XRzn6SRVMYAADM1onFESo308.jpg
2、部署详细
1
2
3
10.10.17.26:27000 (primary)
10.10.17.27:27000 (secondary)
10.10.2.74:27000    (arbiter)



二、安装配置
1、安装见mongodb安装
2、撰写配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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文件
1
echo "c57a012cf2f8a8e20dd4b21a7fae48b3" >/data/mongodb/navy_db/password.key



4、设置keyfile权限,必须是600
1
chmod 600 /data/mongodb/navy_db/password.key



5、启动服务
1
ulimit -s 4096 && ulimit -m 16777216 & numactl --interleave=all  /usr/bin/mongod  -f /etc/mongod_27000.conf



PS:
在配置集群之前auth和keyFile先注释掉,待集群初始化完成,建立用户,然后打开,并重启服务让其生效
三、集群配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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:其他常用命令
1
2
3
4
5
6
7
8
9
10
#删除一个节点
rs.remove("10.10.2.74:27000")
#查看集群配置信息
rs.conf()
#查看当前谁是primary
rs.isMaster()
#查看主从延时
rs.printSlaveReplicationInfo()
#查看rs相关命令
rs.help()



rs.status()结果说明
1
2
3
4
5
6
7
8
9
10
11
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节点上操作)
1
2
3
4
5
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三个节点依次重启,让其生效
1
rs.status() 查看集群状态是否ok



PS:
1、从库默认是不可以读的,如果需要从库提供读业务,需要做一下设置
db.getMongo().setSlaveOk()
2、mongdb的客户端驱动支持这种架构,主库挂了,secondary提升为主,对于应用基本透明
1
client=MongoClient(“mongdb://navy_db_pro:123456@10.10.17.26:27000,10.10.17.27:27000/navy_db”



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-100495-1-1.html 上篇帖子: 【MongoDB】3.0 配置文件相关介绍 下篇帖子: mongodb用户权限管理 认证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表