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

[经验分享] mongodb集群快速搭建

[复制链接]

尚未签到

发表于 2018-10-25 13:41:10 | 显示全部楼层 |阅读模式
  记录这个纯属方便自己以后使用。。
  mongodb官方最新版本3.2.6,某些功能都加以改进并且性能提升很大,下面操作只是快速搭建mongodb复制集以及shard分片等
  一共分为如下几步骤

  •   启动某个节点主master进行设置单个节点账号和密码
  •   配置mongodb复制集
  •   配置mongos-shard分片
  •   设置mongos路由账号和密码并启用验证
  架构图如下
DSC0000.jpg DSC0001.jpg

DSC0002.jpg

  目录规划创建
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.04 64位的,所以mongodb软件也是Ubuntu的
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1404-3.2.6.tgz  
tar fxz mongodb-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
  设置mongo环境变量
echo "export PATH=$PATH:/usr/local/mongodb/bin" >> /etc/profile  
source /etc/profile
  第一个节点配置文件如shard1、shard2、shard3、configsvr、mongos配置文件
  shard1.conf配置文件如下
DSC0003.jpg

  shard2.conf配置文件如下
DSC0004.jpg

  shard3配置文件如下
DSC0005.jpg

  confisvr.conf配置文件如下
DSC0006.jpg

  mongos.conf配置文件如下
DSC0007.jpg

  注:以上配置文件分别拷贝到另外2台节点上
  启动第一台节点主mongod
root@mongodb-01:/data/config# mongod -f /data/config/shard1.conf  
about to fork child process, waiting until server is ready for connections.
  
forked process: 10686
  
child process started successfully, parent exiting
  登陆进去,创建账号
root@mongodb-01:/data/config# mongo --port 20001  
> use admin
  
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  
about to fork child process, waiting until server is ready for connections.
  
forked process: 10986
  
child process started successfully, parent exiting
  登陆进去,创建账号
root@mongodb-02:/data/config# mongo --port 20002  
> use admin
  
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  
about to fork child process, waiting until server is ready for connections.
  
forked process: 11982
  
child process started successfully, parent exiting
  登陆进去,创建账号
root@mongodb-03:/data/config# mongo --port 20003  
> use admin
  
db.createUser( {
  
user: "administrator",
  
pwd: "123456",
  
roles: [ { role: "root", db: "admin" } ]
  
});
  
> db.auth("administrator","123456")
  
1
  生成keyfile文件,文件权限600
openssl rand -base64 741 > /data/keyfile/security、  
chmod 600   /data/keyfile/security
  注:生成security文件拷贝到其他节点上,注意文件权限600切记
  关闭每个节点上主mongod,并打开第一个节点的shard1.conf配置文件中security去掉注释,以及第二节点上shard2.conf和第三个节点shard3.conf配置文件去掉注释即可
  关闭mongod命令
pkill mongod  再次启动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|grep mongo查看即可
  第一台节点 mongodb-01机器配置复制集,mongo –port 20001登陆操作
  > use admin
  switched to db admin
  > config = { _id:"shard1",members:[{_id:0,host:"mongodb-01:20001"},{_id:1,host:"mongodb-02:20001"},{_id:2,host:"mongodb-03:20001",arbiterOnly:true}]}
  
DSC0008.jpg

  第二台节点 mongodb-02机器配置复制集,mongo –port 20002
  > use admin
  switched to db admin
  > config = { _id:"shard2",members:[{_id:0,host:"mongodb-02:20002"},{_id:1,host:"mongodb-03:20002"},{_id:2,host:"mongodb-01:20002",arbiterOnly:true}]}
DSC0009.jpg

  第三台节点 mongodb-03机器配置复制集,登陆mongo –port 20003
  > use admin
  switched to db admin
  > config = { _id:"shard3",members:[{_id:0,host:"mongodb-03:20003"},{_id:1,host:"mongodb-01:20003"},{_id:2,host:"mongodb-02:20003",arbiterOnly:true}]}
DSC00010.jpg

  注:以上就是每个节点上配置rs复制集,可以使用rs.status(),查看每个节点上rs复制集相关状态信息等
  
  ######################################################################
  
  
  登陆任意节点上进行mongo路由配置,mongo --port 20000
  mongos> use admin
  switched to db admin
  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状态命令
DSC00011.jpg


  mongos路由设置账户来进行管理
  快速执行命令创建账号命令如下
db.createUser( {  
user: "admin",
  
pwd: "123456",
  
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  
});
  实际操作如下,创建userAdminAnyDatabase角色账号
mongos> db.createUser( {  
...     user: "admin",
  
...     pwd: "123456",
  
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  
... });
  
Successfully added user: {
  
    "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" } ]
  
... });
  
Successfully added user: {
  
    "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|grep mongo|awk '{print $NF}'|awk -F'/' '{print $1}'|xargs kill  启动每个节点上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集群认证文章,其实也就是登陆是否有权限进行查看以及其他操作,没认证会有提示信息。。。



运维网声明 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-626408-1-1.html 上篇帖子: MongoDB的介绍与部署 下篇帖子: MongoDB存储引擎
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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