一、Mongodb集群( no-sql库)集群 搭建

1.mongo集群的拓扑图,先简单了解一下

2.安装 mongodb到node1,2,3节点(以下操作node1,2,3各节点上都要执行,建议使用xshell)
(1) 配置mongo的yum源
命令:vi /etc/yum.repos.d/mongodb-org.repo

按i进入编辑模式,粘贴下面的代码,后保存退出

[mongodb-org]
name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=1


(2) 进入etc/sysconfig/selinux目录下,关闭selinux(可选 )

命令:vi /etc/sysconfig/selinux
补充:selinux是什么呢?
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。

将SELINUX改为disabled

SELINUX=disabled

注意:修改完后,需要重启
命令:reboot

(3) 重启后,可选择更新一下源(时间较久)
之后在线安装mongodb
更新源的命令:yum update

在线安装mongodb的命令:yum install -y mongodb-org

(4) 修改配置文件 命令:vi /etc/mongod.conf
注释掉bindIp或者修改成当前机器的某一个ip地址。作用:让其他机器可以正常连接虚拟机中的mongodb

3. 在node1,node2,node3创建一个mongo目录(以下操作node1,2,3各节点上都要执行)

(1) 在node1,node2,node3创建一个mongo目录
命令:mkdir /opt/mongo

(2) 在mongo文件夹底下创建mongos, config, shard1,shard2,shard3五个文件夹,命令如下:

mkdir /opt/mongo/mongos
mkdir /opt/mongo/config
mkdir /opt/mongo/shard1
mkdir /opt/mongo/shard2
mkdir /opt/mongo/shard3

(3) 在五个文件夹中分别对应三个子目录用来存 data,log, run

mkdir /opt/mongo/mongos/data
mkdir /opt/mongo/config/data
mkdir /opt/mongo/shard1/data
mkdir /opt/mongo/shard2/data
mkdir /opt/mongo/shard3/datamkdir /opt/mongo/mongos/log
mkdir /opt/mongo/config/log
mkdir /opt/mongo/shard1/log
mkdir /opt/mongo/shard2/log
mkdir /opt/mongo/shard3/logmkdir /opt/mongo/mongos/run
mkdir /opt/mongo/config/run
mkdir /opt/mongo/shard1/run
mkdir /opt/mongo/shard2/run
mkdir /opt/mongo/shard3/run 

4.在node1,node2,node3先创建config server(以下操作node1,2,3各节点上都要执行)

(1) 分别在多台机器上创建mongo config server对应的目录
命令:mkdir -p /opt/mongo/config/{log,data,run}

(2) 分别在多台机器上修改config server的配置文件,粘贴以下代码内容后保存
命令:vi /opt/mongo/config/mongod.conf

systemLog:destination: filelogAppend: truepath: /opt/mongo/config/log/mongod.log
storage:dbPath: /opt/mongo/config/datajournal:enabled: true
processManagement:fork: truepidFilePath: /opt/mongo/config/run/mongod.pid
net:port: 24000
replication:replSetName: config
sharding:clusterRole: configsvr

(3) 启动所有的mongo config server服务
命令:mongod --config /opt/mongo/config/mongod.conf

若执行命令过程中遇到下面的问题(解决方案如下)

手动设置变量,这需要在环境变量配置文件里添加一行。

命令: vi /etc/profile

export LC_ALL=C

刷新环境变量,命令:source /etc/profile
再执行mongod --config /opt/mongo/config/mongod.conf命令即可

5.测试登录node1,2,3中一台的config server, 以创建配置并激活
以登录node1中的mongo config server为例):
命令 :mongo --port 24000

6. 运行配置(这里一个节点上执行就可)
(1) 在刚刚登陆的节点中执行以下命令
注意:members数组中改为自己节点的ip,_id: config 必须与前面的 config server配置文件中的 replSetName: config 一致

config = {_id : "config",members : [{_id : 0, host : "192.168.28.201:24000" },{_id : 1, host : "192.168.28.202:24000" },{_id : 2, host : "192.168.28.203:24000" }]
}


(2) 初始化副本集配置
命令:rs.initiate(config)


(3) 查看分区状态
命令:rs.status()

7. 给node1,2,3 各创建第一个分片和副本集(以下操作node1,2,3各节点上都要执行)
(1) 修改mongo shard1 server的配置文件
命令:mkdir -p /opt/mongo/shard1/{log,data,run}

(2) 分别在多台机器上修改shard1 server的配置文件,粘贴以下配置并保存
命令:vi /opt/mongo/shard1/mongod.conf

systemLog:destination: filelogAppend: truepath: /opt/mongo/shard1/log/mongod.log
storage:dbPath: /opt/mongo/shard1/datajournal:enabled: true
processManagement:fork: truepidFilePath: /opt/mongo/shard1/run/mongod.pid
net:port: 25001
replication:replSetName: shard1
sharding:clusterRole: shardsvr

(3) 启动所有的shard1 server
命令:mongod --config /opt/mongo/shard1/mongod.conf

(4) 登陆任意一台shard1服务器(希望哪一台机器是主,就登录到那一台机器上,这里是准备将node1设为shard1的主节点),初始化副本集(以下内容在一个节点上执行)
命令:mongo --port 25001

(5) 在(4)中登陆的节点上使用admin数据库
命令:use admin

(6) 定义副本集配置,执行下面的内容
注意:members数组中改为自己节点的ip,shard1 名字与上面的要一样,副本集中各节点的顺序, 第一个节点是主节点

config = {_id : "shard1",members : [{_id : 0, host : "192.168.28.201:25001" },{_id : 1, host : "192.168.28.202:25001" },{_id : 2, host : "192.168.28.203:25001" }]
}

(7) 初始化副本集配置
命令:rs.initiate(config)

(8) 查看分区状态
命令:rs.status()

8. 给node1,2,3 各创建第二个分片和副本集(以下操作node1,2,3各节点上都要执行)
(1) 修改mongo shard2 server的配置文件
命令: mkdir -p /opt/mongo/shard2/{log,data,run}

(2) 分别在多台机器上修改shard2 server的配置文件,粘贴以下内容后保存
命令:vi /opt/mongo/shard2/mongod.conf

systemLog:destination: filelogAppend: truepath: /opt/mongo/shard2/log/mongod.log
storage:dbPath: /opt/mongo/shard2/datajournal:enabled: true
processManagement:fork: truepidFilePath: /opt/mongo/shard2/run/mongod.pid
net:port: 25002
replication:replSetName: shard2
sharding:clusterRole: shardsvr

(3) 启动所有的shard2 server
命令:mongod --config /opt/mongo/shard2/mongod.conf

(4) 登陆任意一台shard2服务器(希望哪一台机器是主,就登录到那一台机器上,这里是准备将node2设为shard2的主节点),初始化副本集(以下操作在单节点上执行)
命令:mongo --port 25002

(5) 使用admin数据库
命令:use admin

(6) 定义副本集配置,注意改为自己节点的ip

config = {_id : "shard2",members : [{_id : 0, host : "192.168.28.202:25002" },{_id : 1, host : "192.168.28.201:25002" },{_id : 2, host : "192.168.28.203:25002" }]
}

(7) 初始化副本集配置
命令:rs.initiate(config)

(8) 查看分区状态
命令:rs.status()

9. 给node1,2,3 各创建第三个分片和副本集(以下操作node1,2,3各节点上都要执行)
(1) 修改mongo shard3 server的配置文件
命令: mkdir -p /opt/mongo/shard3/{log,data,run}

(2) 分别在多台机器上修改shard3 server的配置文件,粘贴以下内容后保存
命令:vi /opt/mongo/shard3/mongod.conf

systemLog:destination: filelogAppend: truepath: /opt/mongo/shard3/log/mongod.log
storage:dbPath: /opt/mongo/shard3/datajournal:enabled: true
processManagement:fork: truepidFilePath: /opt/mongo/shard3/run/mongod.pid
net:port: 25003
replication:replSetName: shard3
sharding:clusterRole: shardsvr

(3) 启动所有的shard3 server
命令:mongod --config /opt/mongo/shard3/mongod.conf

(4) 登陆任意一台shard3服务器(希望哪一台机器是主,就登录到那一台机器上,这里是准备将node3设为shard3的主节点),初始化副本集(以下操作在单节点上执行)
命令:mongo --port 25003

(5) 使用admin数据库
命令:use admin

(6) 定义副本集配置,注意改为自己节点的ip

config = {_id : "shard3",members : [{_id : 0, host : "192.168.28.203:25003" },{_id : 1, host : "192.168.28.201:25003" },{_id : 2, host : "192.168.28.202:25003" }]
}

(7) 初始化副本集配置
命令:rs.initiate(config)

(8) 查看分区状态
命令:rs.status()

10.安装配置 mongos 进程, 给node1, 2,3各创建目录(以下操作node1,2,3各节点上都要执行)
(1) 创建 mongos 进程所在的目录
命令:mkdir -p /opt/mongo/mongos/{log,data,run}

(2)添加mongs的配置文件,粘贴以下内容并保存(注意改为自己的ip)
命令:vi /opt/mongo/mongos/mongod.conf

systemLog:destination: filelogAppend: truepath: /opt/mongo/mongos/log/mongod.log
processManagement:fork: truepidFilePath: /opt/mongo/mongos/run/mongod.pid
net:port: 23000
sharding:configDB: config/192.168.28.201:24000,192.168.28.202:24000,192.168.28.203:24000

(3) 启动所有的路由服务器
命令:mongos --config /opt/mongo/mongos/mongod.conf

(4) 登录其中的一台路由节点,手动启用分片(以下操作选用一台节点,我用node3)
命令:mongo --port 23000

(5) 添加分片到mongos(注意修改自己节点的ip)

sh.addShard("shard1/192.168.28.201:25001,192.168.28.202:25001,192.168.28.203:25001")
sh.addShard("shard2/192.168.28.202:25002,192.168.28.201:25002,192.168.28.203.25002")
sh.addShard("shard3/192.168.28.203:25003,192.168.28.201:25003,192.168.28.202:25003")

11.设置slave可读(在命令行中生效一次),如果配置从接到可读,那么是连接客户端指定的
命令(在node3中执行一次即可):rs.slaveOk()

12.使用node1,node2,node3 联接 mongos 客户端, 来操作mongo集群,并在其中创建库并开启分片功能
(1) 创建库
命令:use mybike
(2) 创建 bikes集合
命令:db.createCollection("bikes")
(3) 切换到admin库,再指定某个库启用分片
命令:use admin
(4 对mybike这个数据库开启分片功能
命令:db.runCommand({"enablesharding":"mybike"})
(5) 对mybike数据库下的bikes集合按id的hash进行分片
命令:db.runCommand({"shardcollection":"mybike.bikes","key":{_id:'hashed'}})
(6) 又切换回 mybike库
命令:use mybike
(7) 切换到 mybike库,向bikes集合中插入数据

db.bikes.insert(   {"status": 1, "loc": [28.189153,112.960318],"qrcode":""}   )
db.bikes.insert(   { "status": 1, "loc": [28.189155,112.960318],"qrcode":""}   )
db.bikes.insert(   {"status": 1, "loc": [28.189159,112.960318],"qrcode":""}   )
db.bikes.insert(   {"status": 1, "loc": [28.189163,112.960318],"qrcode":""}   )
db.bikes.insert(   { "status": 1, "loc": [28.189170,112.960318],"qrcode":""}   )
db.bikes.insert(   {"status": 1, "loc": [28.189393,112.943868],"qrcode":""}   )
db.bikes.insert(   { "status": 1, "loc": [28.197871,112.957641],"qrcode":""}   )
db.bikes.insert(   {"status": 1, "loc": [28.201437,112.960336],"qrcode":""}   )
db.bikes.insert(   {"status": 1, "loc": [28.201487,112.960336],"qrcode":""}   )
db.bikes.insert(   {"status": 1, "loc": [28.20392,112.958953],"qrcode":""}   )
db.bikes.insert(  {"status" : 1, "loc" : [ 28.204381, 112.959887 ], "qrcode" : ""} )
db.bikes.insert(  {  "status" : 1, "loc" : [ 28.204391, 112.959885 ], "qrcode" : ""   } )
db.bikes.insert(  {  "status" : 1, "loc" : [ 28.204481, 112.959789 ], "qrcode" : ""   } )
db.bikes.insert(  {   "status" : 1, "loc" : [ 28.204181, 112.959671 ], "qrcode" : ""  } )
db.bikes.insert(  {  "status" : 1, "loc" : [ 28.204881, 112.959556 ], "qrcode" : ""   } )
db.bikes.insert(  { "status" : 1, "loc" : [ 28.204681, 112.959874 ], "qrcode" : ""    } )
db.bikes.insert(  { "status" : 1, "loc" : [ 28.204201, 112.959867 ], "qrcode" : ""    } )
db.bikes.insert(  {   "status" : 1, "loc" : [ 28.2043941, 112.959854 ], "qrcode" : ""  } )

(8) 在mongos 进程中查询得到的结果是所有分片要满足条件的结果
登陆命令:mongo --port 23000
查看所有库:show dbs
使用mybike库:use mybike
查看mybike库里面集合:show collections
查询集合里面数据:db.bikes.find()

centos7下详细搭建Mongodb集群相关推荐

  1. 【超详细】手把手教你搭建MongoDB集群搭建

    MongoDB集群搭建 MongoDB集群简介 mongodb 集群搭建的方式有三种: 主从备份(Master - Slave)模式,或者叫主从复制模式. 副本集(Replica Set)模式 分片( ...

  2. 搭建mongodb集群(副本集+分片)

    完整的搭建mongodb集群(副本集+分片)的样例... 准备四台机器,各自是bluejoe1,bluejoe2,bluejoe3,以及bluejoe0 副本集及分片策略确定例如以下: 将创建3个副本 ...

  3. CentOS7 下 MySQL 之 PXC 集群部署【Docker+多机多节点】

    背景 最近在进行 MySQL 集群搭建测试的研究中 对于业界主流方案自然不能跳过 在此,整理成完整的文章,希望道友能得到参考价值 - 对于 docker 不熟悉的小伙伴,个人建议移步文章 -- [Ce ...

  4. 在Linux上如何快速搭建MongoDB集群

    搭建MongoDB集群的一个小妙招,教你快速搭建MonggoDB集群. 一.首先确认你的集群信息 三台机器的配置服务(27018)形成复制集,分片1.2.3也在各机器都部署一个实例,它们之间形成复制集 ...

  5. Windwos下搭建MongoDB集群

    文章目录 1.下载MongoDB 2.集群描述 3.构建集群文件目录 4.新建配置文件 5.启动MongoDB服务 6.配置集群 7.集群测试 8.设置密码和开启认证 1.下载MongoDB 去Mon ...

  6. CentOS7 使用 kubeadm 搭建 kubernetes 集群(极速篇)

    序言 本人在安装 k8s 的过程中曲折不断,故写下此文,让后人可以少走弯路. 这篇文章只描述如何从0开始快速搭建 k8s 集群,想更详细了解具体遇到问题的分析过程和解决方案,可阅读另一篇文章 -- C ...

  7. CentOS7 使用 kubeadm 搭建 kubernetes 集群(踩坑篇)

    序言 本人在搭建 k8s 集群的过程中曲折不断,故写下此文,欲与"同是天涯沦落人"分享. 这篇文章会详细描述安装过程中遇到的问题,以及本人相应的解决办法,如读者只想快速搭建 k8s ...

  8. Ubuntu搭建MongoDB集群

    MongoDB是一个基于分布式文件存储的数据库,是介于关系数据库和非关系数据库之间的数据库,属于非关系数据库,非常适合爬虫爬取大量数据时进行存储. MongoDB集群旨在提高系统的稳定性,使用多个Mo ...

  9. Linux下安装搭建Memcached集群环境

    由于项目需要,需要搭建memcached集群环境,遂开始调研相关技术 网络上有不少linux下安装memcached的教程,对于我这个linux零基础的来说,想立马在linux下安装memcached ...

最新文章

  1. [置顶] mmog游戏开发之业务篇
  2. 关于java中的各种流
  3. 会议室管理前端页面_福州会议室钟联系方式
  4. Linux Kernel TCP/IP Stack — L3 Layer
  5. 数据库自动收缩带来的严重问题
  6. Javaweb中利用kaptcha生成验证码
  7. JavaScript开发区块链只需200行代码 1
  8. Kali Linux 网络扫描秘籍 第七章 Web 应用扫描(三)
  9. layui 行变灰_layui table设置某一行的字体颜色方法
  10. 使用7zip把jre集成到绿色运行程序内
  11. 准备创业或刚创业的朋友必读
  12. linux ssh客户端_Linux终端连接Linux服务器
  13. 云端深度学习框架TensorFlow读取数据IO的高效方式
  14. 计算机二级修改并应用基本简历模板,如何通过Office模板轻松快捷创建简历
  15. Unity LitJson的教程
  16. 李开复给大学生的第7封信:21世纪最需要的7种人才
  17. MacTips-MacTalk
  18. react中使用sass报错SassError: Expected newline.
  19. android 外接USB扫码器应用闪退解决方法
  20. 【pytorch】torch2trt

热门文章

  1. 使用MATLAB实现基于BP神经网络训练的手写字母识别程序
  2. docker容器日常管理(四)
  3. cadworx管道设计基础到精通教程
  4. 2022-2027年中国私募股权投资行业发展前景及投资战略咨询报告
  5. win 7系统(64位)安装包
  6. 衢州学院的计算机专业是本科还是专科,浙江本科对比:选择衢州学院还是温州大学好?...
  7. tesserocr识别图片
  8. 阿德莱德大学计算机专业学费,2020年阿德莱德大学计算机科学专业研究生申请条件及世界排名|学费介绍...
  9. 换内存条的过程(自己电脑换的整个过程记录分享)
  10. 图灵生日会——纪念阿兰图灵诞辰100周年及图灵公司七周年线下交流会