热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

集群搭建_Mongodb副本集+分片集群搭建

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb副本集+分片集群搭建相关的知识,希望对你有一定的参考价值。环境需求:

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb 副本集+分片集群搭建相关的知识,希望对你有一定的参考价值。


环境需求:

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


服务器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"}]})


本文出自 “startuppp” 博客,请务必保留此出处http://startuppp.blog.51cto.com/11847460/1949006


推荐阅读
  • macOS命令行创建Android模拟器
    macOS下不安装AndroidStudio使用VSCode来开发Flutter应用使用命令行创建和管理Android模拟器设备avdmanageravdmanager 是一种命令 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  •  项目地址https:github.comffmydreamWiCar界面做的很难看,美工方面实在不在行。重点是按钮触摸事件的处理,这里搬了RepeatListener项目代码,例 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了10分钟了解Android的事件分发相关的知识,希望对你有一定的参考价值。什么是事件分发?大家 ... [详细]
author-avatar
手机用户2602921813
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有