环境需求:

在三台机器上搭建副本集,在副本集上做分片

服务器IP:

192.168.1.232/192.168.1.238/192.168.1.241

安装Mongodb

all nodes:

tar zxvf mongodb-linux-x86_64-rhel62-3.4.4.tgz

cp -rvf  mongodb-linux-x86_64-rhel62-3.4.4  /opt/mongodb_3.4.4

cd /opt/mongodb_3.4.4/

mkdir -pv conf logs data/{mongod,configsvr}

sleep 1

touch  logs/{mongo,configsvr,route}.log

配置Mongodb副本集

all nodes:

echo "port=10001

dbpath=/opt/mongodb_3.4.4/data/mongod

logpath=/opt/mongodb_3.4.4/logs/mongod.log

pidfilepath=/opt/mongodb_3.4.4/logs/mongod.pid

bind_ip=127.0.0.1,`ifconfig  | grep "inet addr:" | grep -v '127.0.0.1' | sed 's/^.*r://g'  | sed 's/Bc.*$//g'`

oplogSize=10000

fork=true

logappend=true

shardsvr=true

replSet=shard" > /opt/mongodb_3.4.4/conf/mongod.conf

/opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/mongod.conf

初始化mongodb  shard节点

192.168.1.232 node:

/opt/mongodb_3.4.4/bin/mongo  192.168.1.232:10001

use admin

config={ _id:"shard", members:[

{_id:0,host:'192.168.1.232:10001'},

{_id:1,host:'192.168.1.238:10001'},

{_id:2,host:'192.168.1.241:10001'}] };

初始化副本集配置

rs.initiate(config);

查看集群节点的状态

rs.status();

配置Mongodb Config服务器

all node:

echo "port=20001

dbpath=/opt/mongodb_3.4.4/data/configsvr

logpath=/opt/mongodb_3.4.4/logs/configsvr.log

pidfilepath=/opt/mongodb_3.4.4/logs/configsvr.pid

bind_ip=127.0.0.1,`ifconfig  | grep "inet addr:" | grep -v '127.0.0.1' | sed 's/^.*r://g'  | sed 's/Bc.*$//g'`

configsvr=true

fork=true

logappend=true

replSet=cfgsvr"  > /opt/mongodb_3.4.4/conf/configsvr.conf

/opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/configsvr.conf

初始化mongodb  config节点

192.168.1.232 node:

/opt/mongodb_3.4.4/bin/mongo 192.168.1.232:20001

use admin

config={ _id:"cfgsvr", members:[

{_id:0,host:'192.168.1.232:20001'},

{_id:1,host:'192.168.1.238:20001'},

{_id:2,host:'192.168.1.241:20001'}] };

初始化副本集配置

rs.initiate(config);

查看集群节点的状态

rs.status();

配置Mongodb Mongos路由

all node:

echo "port=27017 configdb=cfgsvr/192.168.1.232:20001,192.168.1.238:20001,192.168.1.241:20001

bind_ip=127.0.0.1,`ifconfig  | grep "inet addr:" | grep -v '127.0.0.1' | sed 's/^.*r://g'  | sed 's/Bc.*$//g'` fork = true

logpath = /opt/mongodb_3.4.4/logs/route.log

logappend=true":  >  /opt/mongodb_3.4.4/conf/mongos.conf

/opt/mongodb_3.4.4/bin/mongos -f /opt/mongodb_3.4.4/conf/mongos.conf

启用分片:

192.168.1.232 node:

/opt/mongodb_3.4.4/bin/mongo 192.168.1.232:27017

use  admin

db.runCommand({"addShard" :"shard/192.168.1.232:10001,192.168.1.238:10001,192.168.1.241:10001"})

查看分片服务器的配置

db.runCommand( { listshards : 1 } );

指定testdb库分片生效

db.runCommand( { "enablesharding": "testdb"})

###未操作

##指定数据库里需要分片的集合和片键

##db.runCommand( { shardcollection : " enablesharding.step",key: {_id: 1} } )

##这里我们设置对testdb库的step 表进行分片,根据 id 自动分片到 shard1 ,shard2 上面去。这样##设置是因为不是所有mongodb 的数据库和表都需要分片。

测试副本集数据复制功能

连接到任意节点

/opt/mongodb_3.4.4/bin/mongo 192.168.1.232:27017

use test;

db.mongotest.insert({"name":"baiyongjie"}) #插入数据

db.mongotest.insert({"age":"24"})

连接到其他节点,数据是否有进行同步

/opt/mongodb_3.4.4/bin/mongo 192.168.1.238:27017

use test

show tables;

db.mongotest.find();

配置基于Key file 认证方式(要在admin库中建立用户)

1、在mongod节点创建用户

db.createUser({

user:"root",

pwd:"baiyongjie",

roles:[{role:"root",db:"admin"}]})

db.createUser({

user:"sa",

pwd:"baiyongjie",

roles:[{role:"root",db:"admin"}]})

2、在mongos节点创建用户

db.createUser({

user:"root",

pwd:"baiyongjie",

roles:[{role:"root",db:"admin"}]})

db.createUser({

user:"sa",

pwd:"baiyongjie",

roles:[{role:"root",db:"admin"}]})

3、关闭所有数据库

all nodes:

/opt/mongodb_3.4.4/bin/mongo 127.0.0.1:27017

use admin

db.shutdownServer()

/opt/mongodb_3.4.4/bin/mongo 127.0.0.1:10001

use admin

db.shutdownServer()

/opt/mongodb_3.4.4/bin/mongo 127.0.0.1:20001

use admin

db.shutdownServer()

4、创建keyFile文件

openssl rand -base64 745 > /opt/mongodb_3.4.4/conf/keyfile

chmod 600 /opt/mongodb_3.4.4/conf/keyfile

5、将keyfile同步到其他节点

6、使用keyFile参数指定keyfile启动mongod/configsvr/mongos

在所有mongod节点中追加key文件路径

echo "keyFile=/opt/mongodb_3.4.4/conf/keyfile" >> /opt/mongodb_3.4.4/conf/mongod.conf

echo "keyFile=/opt/mongodb_3.4.4/conf/keyfile" >> /opt/mongodb_3.4.4/conf/configsvr.conf

echo "keyFile=/opt/mongodb_3.4.4/conf/keyfile" >> /opt/mongodb_3.4.4/conf/mongos.conf

7、启动 mongod/configsvr/mongos

一定要先启动配置configsvr,在启动mongod,最后启动mongos

/opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/configsvr.conf

/opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/mongod.conf

/opt/mongodb_3.4.4/bin/mongos -f /opt/mongodb_3.4.4/conf/mongos.conf

8、验证keyfile认证是否生效

验证mongod:

/opt/mongodb_3.4.4/bin/mongo   192.168.1.241:10001

db.auth("root","baiyongjie")

#/opt/mongodb_3.4.4/bin/mongo   192.168.1.241:10001 -uroot -pbaiyongjie

验证configsvr:使用rs.status()验证

/opt/mongodb_3.4.4/bin/mongo   192.168.1.241:20001

/opt/mongodb_3.4.4/bin/mongo   192.168.1.241:20001 -uroot -p

验证mongos:使用root账号

/opt/mongodb_3.4.4/bin/mongo   127.0.0.1:27017

/opt/mongodb_3.4.4/bin/mongo   127.0.0.1:27017  -uroot -pbaiyongjie

验证mongos:使用sa账号

查看已有的账号

9、测试集群读写是否正常

在其他服务器上测试数据是否同步

db.mongotest.find()

OK! 至此副本集+分片+Keyfile认证搭建完成。

3.4.4版本相比2.6版本认证方法需要修改为SCRAM-SHA-1

所以需要修改Mongodb 的认证方式

1、首先我这边通过数据库版本查看发现是这样的。

> use admin

switched to db admin

> db.system.version.find()

{ "_id" : "featureCompatibilityVersion", "version" : "3.4" }

{ "_id" : "authSchema", "currentVersion" : 5 }

2、开启MongoDBServiceNoAuth服务,

使用db.dropUser('username')命令删除之前所有原有的用户,再执行版本更改命令。

>db.dropUser('admin')

>db.dropUser('root')

>db.dropUser('sa')

>db.system.version.update({"_id":"authSchema"},{$set:{"currentVersion":3}})

3、创建用户

db.createUser({

user:"sa",pwd:"baiyongjie",

roles:[{"role":"root","db":"admin"}]})

db.createUser({user:"root",

pwd:"baiyongjie",

roles:[{"role":"root","db":"admin"}]})

db.createUser({user:"admin",

pwd:"baiyongjie",

roles:[{"role":"root","db":"admin"}]})

转载于:https://blog.51cto.com/startuppp/1949006

Mongodb 副本集+分片集群搭建相关推荐

  1. MongoDB 3.2.7 for rhel6.4 副本集-分片集群部署

    今天,一同事反映,他安装部署mongodb副本集--分片集群,初始化分片时遇到问题:初始化分片必须使用主机名(也就是必须有相当于DNS服务的解析),这样以来,mongo副本集--分片集群就 会出现DN ...

  2. mongodb副本集+分片集群部署 step by step

    mongodb副本集+分片集群部署step by step 本文只讲述mongodb副本集+分片集群的部署,关于mongdb shading & replica set原理优点等不在本文讨论范 ...

  3. mongoDB研究笔记:分片集群的工作机制

    上面的(http://www.cnblogs.com/guoyuanwei/p/3565088.html)介绍了部署了一个默认的分片集群,对mongoDB的分片集群有了大概的认识,到目前为止我们还没有 ...

  4. MongoDB 分片(sharding)+副本集(replSet)集群搭建

    文章目录 MongoDB安装 Windows平台安装 1.下载 2.安装 3.启动MongoDB服务 4.进入MongoDB后台 Linux平台安装MongoDB 1.下载 2.安装 3.创建数据库目 ...

  5. MongoDb分片集群认证

    本文主要基于已经搭建好的未认证集群,结合上篇Mongodb副本集分片集群模式环境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html), Mong ...

  6. mongodb分布式集群搭建手记

    一.架构简介 目标 单机搭建mongodb分布式集群(副本集 + 分片集群),演示mongodb分布式集群的安装部署.简单操作. 说明 在同一个vm启动由两个分片组成的分布式集群,每个分片都是一个PS ...

  7. MongoDB DBA 实践6-----MongoDB的分片集群部署

    一.分片 MongoDB使用分片技术来支持大数据集和高吞吐量操作. 1.分片目的 对于单台数据库服务器,庞大的数据量及高吞吐量的应用程序对它而言无疑是个巨大的挑战.频繁的CRUD操作能够耗尽服务器的C ...

  8. mongodb linux下集群搭建

    mongodb的集群结构如上图 网上有个mongo3.0的集群例子: mongodb分布式集群搭建手记 - 美码师 - 博客园一.架构简介 目标 单机搭建mongodb分布式集群(副本集 + 分片集群 ...

  9. 【clickhouse】clickhouse 副本与分片 分片详解

    1.概述 转载:[clickhouse]clickhouse 副本与分片 分片详解 clickhouse 中每个服务器节点都可以被称为一个 shard(分片). 假设有 N 台服务器,每个服务器上都有 ...

最新文章

  1. List集合去重的一种方法
  2. Java内存模型与线程(思维导图)
  3. [原创] Robot framework 基于关键字、BDD驱动的自动化测试框架
  4. 微信公众平台 图片 java_Java微信公众平台之素材管理
  5. Outlook另类小技巧 批量处理图片大小
  6. 200919阶段一C++STL容器
  7. 计算机控制技术与自动化的关系,计算机控制技术东南大学自动化学院.ppt
  8. 使用JPA标准@ViewScoped通过分页,过滤和排序进行Primefaces DataTable延迟加载
  9. C语言--输入一个日期,输出当前日期是这一年的第几天(完整代码)
  10. spring--事务原理
  11. mysqldump 工具使用详解——参数选项
  12. 关于C语言常量需要注意的点
  13. Android仿IOS屏幕亮度调节-自定义view系列(5)
  14. 闲谈IPv6-从ICMP的视角形而上地分析IPv6
  15. BDTC 2017 | 聚焦AI,十位资深专家分享金融大数据最佳实践
  16. mysql怎么打开db文件_myMySQL数据库的db文件怎么打开? MySQL数据库使用教程
  17. 【寻找最佳小程序】09期:轻芒杂志——杂志感设计,美美地阅读各领域杂志...
  18. 如何截取网易云音乐的歌曲
  19. 什么是R型直流电源变压器?
  20. android 模拟器 派派,派派怎么在电脑上玩?派派电脑版使用教程

热门文章

  1. python怎么后退_使python迭代器向后退?
  2. springweb 导入导出csv_诺基亚Nokia8110通讯录如何导入?这里有妙招
  3. php 页面生成外部链接,php 获取网页外部链接正则表达式
  4. 芯片设计抽象层及其设计风格
  5. 通过举例谈谈阻塞赋值与非阻塞赋值的区别
  6. 【Verilog HDL】参数(Parameter)的作用案例
  7. 《基于压缩传感的匹配追踪重建算法研究》读书笔记
  8. React 头像插件 react-avatar-editor 的使用
  9. PHP和java比较
  10. 一个云主机绑定多个域名