mongodb集群快速搭建
2016-05-29 13:24
609 查看
记录这个纯属方便自己以后使用。。mongodb官方最新版本3.2.6,某些功能都加以改进并且性能提升很大,下面操作只是快速搭建mongodb复制集以及shard分片等一共分为如下几步骤启动某个节点主master进行设置单个节点账号和密码配置mongodb复制集配置mongos-shard分片设置mongos路由账号和密码并启用验证架构图如下目录规划创建shard2.conf配置文件如下shard3配置文件如下confisvr.conf配置文件如下mongos.conf配置文件如下注:以上配置文件分别拷贝到另外2台节点上启动第一台节点主mongod第二台节点mongodb-02机器配置复制集,mongo–port20002>useadmin第三台节点mongodb-03机器配置复制集,登陆mongo–port20003>useadminmongos路由设置账户来进行管理快速执行命令创建账号命令如下
mkdir/data/{config,shard1,shard2,shard3,mongos,logs,configsvr,keyfile}-pv touch/data/keyfile/security touch/data/logs/shard{1..3}.log touch/data/logs/{configsvr,mongos}.log touch/data/config/shard{1..3}.conf touch/data/config/{configsvr,mongos}.conf由于操作系统是Ubuntu14.0464位的,所以mongodb软件也是Ubuntu的
wget设置mongo环境变量https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1404-3.2.6.tgztarfxzmongodb-linux-x86_64-ubuntu1404-3.2.6.tgz-C/usr/local/ mv/usr/local/mongodb-linux-x86_64-ubuntu1404-3.2.6/usr/local/mongodb
echo"exportPATH=$PATH:/usr/local/mongodb/bin">>/etc/profile source/etc/profile第一个节点配置文件如shard1、shard2、shard3、configsvr、mongos配置文件shard1.conf配置文件如下
root@mongodb-01:/data/config#mongod-f/data/config/shard1.conf abouttoforkchildprocess,waitinguntilserverisreadyforconnections. forkedprocess:10686 childprocessstartedsuccessfully,parentexiting登陆进去,创建账号
root@mongodb-01:/data/config#mongo--port20001 >useadmin db.createUser({ user:"administrator", pwd:"123456", roles:[{role:"root",db:"admin"}] }); >db.auth("administrator","123456") 1注:第二个节点和第三个节点设置单个mongod账号一样,操作下吧,示例如下启动第2台节点主mongod
root@mongodb-02:/data/config#mongod-f/data/config/shard2.conf abouttoforkchildprocess,waitinguntilserverisreadyforconnections. forkedprocess:10986 childprocessstartedsuccessfully,parentexiting登陆进去,创建账号
root@mongodb-02:/data/config#mongo--port20002 >useadmin db.createUser({ user:"administrator", pwd:"123456", roles:[{role:"root",db:"admin"}] }); >db.auth("administrator","123456") 1启动第3台节点主mongod
root@mongodb-03:/data/config#mongod-f/data/config/shard3.conf abouttoforkchildprocess,waitinguntilserverisreadyforconnections. forkedprocess:11982 childprocessstartedsuccessfully,parentexiting登陆进去,创建账号
root@mongodb-03:/data/config#mongo--port20003 >useadmin db.createUser({ user:"administrator", pwd:"123456", roles:[{role:"root",db:"admin"}] }); >db.auth("administrator","123456") 1生成keyfile文件,文件权限600
opensslrand-base64741>/data/keyfile/security、 chmod600/data/keyfile/security注:生成security文件拷贝到其他节点上,注意文件权限600切记关闭每个节点上主mongod,并打开第一个节点的shard1.conf配置文件中security去掉注释,以及第二节点上shard2.conf和第三个节点shard3.conf配置文件去掉注释即可关闭mongod命令
pkillmongod再次启动mongod
第一台机器上执行命令如下 mongod-f/data/config/shard1.conf 第2台机器上执行命令如下 mongod-f/data/config/shard2.conf 第3台机器上执行命令如下 mongod-f/data/config/shard3.conf登陆每个主节点上mongod,进行show或者其他命令的时候回提示没有认证,认证后就可以查看了,这里就不演示了
如果以上操作成功后,关闭mongod,之前去掉security选项注释现在打开注释即可,并且去掉shard配置文件中复制集注释选项去掉即可,避免影响下面复制集操作
启动每个节点上shard、confisvr以及mongos即可命令如下mongod-f/data/config/shard1.conf mongod-f/data/config/shard2.conf mongod-f/data/config/shard3.conf mongod-f/data/config/configsvr.conf mongos-f/data/config/mongos.conf注:启动后使用netstat-ntpl或者ps-ef|grepmongo查看即可第一台节点mongodb-01机器配置复制集,mongo–port20001登陆操作
>useadmin
switchedtodbadmin
>config={_id:"shard1",members:[{_id:0,host:"mongodb-01:20001"},{_id:1,host:"mongodb-02:20001"},{_id:2,host:"mongodb-03:20001",arbiterOnly:true}]}
switchedtodbadmin
>config={_id:"shard2",members:[{_id:0,host:"mongodb-02:20002"},{_id:1,host:"mongodb-03:20002"},{_id:2,host:"mongodb-01:20002",arbiterOnly:true}]}
switchedtodbadmin
>config={_id:"shard3",members:[{_id:0,host:"mongodb-03:20003"},{_id:1,host:"mongodb-01:20003"},{_id:2,host:"mongodb-02:20003",arbiterOnly:true}]}
注:以上就是每个节点上配置rs复制集,可以使用rs.status(),查看每个节点上rs复制集相关状态信息等
######################################################################
登陆任意节点上进行mongo路由配置,mongo--port20000
mongos>useadmin
switchedtodbadmin
mongos>db.runCommand({addshard:”shard1/mongodb-01:20001,mongodb-02:20001,mongodb-03:20001”});
{“shardAdded”:“shard1”,“ok”:1}
mongos>db.runCommand({addshard:”shard2/mongodb-01:20002,mongodb-02:20002,mongodb-03:20002”});
{“shardAdded”:“shard2”,“ok”:1}
mongos>db.runCommand({addshard:”shard3/mongodb-01:20003,mongodb-02:20003,mongodb-03:20003”});
{“shardAdded”:“shard3”,“ok”:1}查看shard状态命令
db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]});实际操作如下,创建userAdminAnyDatabase角色账号
mongos>db.createUser({...user:"admin",...pwd:"123456",...roles:[{role:"userAdminAnyDatabase",db:"admin"}]...});Successfullyaddeduser:{"user":"admin","roles":[{"role":"userAdminAnyDatabase","db":"admin"}]}mongos>db.auth("admin","123456")1快速创建root角色账号命令如下
db.createUser({user:"sa",pwd:"123456",roles:[{role:"root",db:"admin"}]});实际操作如下,创建成功
mongos>db.createUser({...user:"sa",...pwd:"123456",...roles:[{role:"root",db:"admin"}]...});Successfullyaddeduser:{"user":"sa","roles":[{"role":"root","db":"admin"}]}mongos>db.auth("sa","123456")1注:userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限,root:只在admin数据库中可用。超级账号,超级权限,其实创建一个userAdminAnyDatabase角色就可以,然后可以创建N个用户角色。如何验证mongos账号?还记得之前使用openssl命令生成的security文件吗?现在关闭mongod以及mongos命令如下,并且打开每个节点上配置文件关于security选项注释去掉即可
netstat-ntpl|grepmongo|awk'{print$NF}'|awk-F'/''{print$1}'|xargskill启动每个节点上shard、confisvr以及mongos
mongod-f/data/config/shard1.conf mongod-f/data/config/shard2.conf mongod-f/data/config/shard3.conf mongod-f/data/config/configsvr.conf mongos-f/data/config/mongos.conf登陆任意节点上mongos进行认证即可,这里就不演示了,可以参考其他mongo3.2集群认证文章,其实也就是登陆是否有权限进行查看以及其他操作,没认证会有提示信息。。。本文出自“村里的男孩”博客,请务必保留此出处http://noodle.blog.51cto.com/2925423/1784206
相关文章推荐
- [MongoDB]增删改查
- MongoDB的学习(一)-MongoDB的基本概念
- 玩转mongodb(一):初识mongodb
- Mongodb 研究学习
- 夺命雷公狗mongodb之----mongodb---1---的下载,安装,连接
- mongoDb的基本使用
- windows下mongodb安装与使用
- MongoDB的介绍与部署
- MongoDB快速入门学习笔记4 MongoDB的文档查询操作
- [MongoDB]入门操作
- flask + MongoDB 学习笔记(3):Register & Hashpassword & Login & Logout
- flask + MongoDB 学习笔记 (-1): 个人用记录
- flask + MongoDB 学习笔记: Exceptions, Errors and Solutions
- mongodb
- MongoDB的学习(零)-简介与安装
- mongodb: 关于Mongoose的geoNear方法的使用
- centos6.5 安装mongodb 服务端
- Ubuntu 14.04安装MongoDB
- mongodb 自学笔记
- MongoDB学习资源