广告
返回顶部
首页 > 资讯 > 操作系统 >mongodb linux下集群搭建过程
  • 871
分享到

mongodb linux下集群搭建过程

2024-04-02 19:04:59 871人浏览 泡泡鱼
摘要

mongoDB的集群结构如上图 网上有个monGo3.0的集群例子: https://www.jb51.net/article/191388.htm router提供入口,mong

mongoDB集群结构如上图

网上有个monGo3.0的集群例子:

https://www.jb51.net/article/191388.htm

router提供入口,mongo客户端通过router连入集群(本例只配置一个route集群)

Config Servers辅助记录数据分片(一个集群)

Shard为数据分片集群(本例中配置两个,用于验证分片),

本例中,为每个集群(shard config)三个mongo实例

config与shard为同一个类型的进程mongod

route则为mongos进程

下载mongo二进制压缩包

Https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.6.tgz

解压可以看到

用openssl生成一个key,用于mongo集群内部数据通迅

openssl rand -base64 123 > keyfile

mongod配置为件(config与shard通用)

mongo_node.conf:

storage:
    engine: wiredTiger
    directoryPerDB: true
    journal:
        enabled: true
 
systemLog:
    destination: file
    logAppend: true
operationProfiling:
  slowOpThresholdMs: 10000
replication:
    oplogSizeMB: 10240
proceSSManagement:
    fork: true
security:
    authorization: "disabled"

mongos的配置文件(即图中的route)

mongos.conf:

systemLog:
    destination: file
    logAppend: true
 
processManagement:
    fork: true

启动config集群(3个mongod进程)


WORK_DIR=/home/???/go/mongodb/mongo_test
 
KEYFILE=$WORK_DIR/key/keyfile
cat $KEYFILE
CONFFILE=$WORK_DIR/conf/mongo_node.conf
cat $CONFFILE
MONGOD=mongod
echo $MONGOD
$MONGOD --port 26001 --bind_ip_all --configsvr --replSet configReplSet --keyFile $KEYFILE --dbpath $WORK_DIR/config_cluster/conf_n1/data --pidfilepath $WORK_DIR/config_cluster/conf_n1/db.pid --logpath $WORK_DIR/config_cluster/conf_n1/db.log --config $CONFFILE 
$MONGOD --port 26002 --bind_ip_all --configsvr --replSet configReplSet --keyFile $KEYFILE --dbpath $WORK_DIR/config_cluster/conf_n2/data --pidfilepath $WORK_DIR/config_cluster/conf_n2/db.pid --logpath $WORK_DIR/config_cluster/conf_n2/db.log --config $CONFFILE 
$MONGOD --port 26003 --bind_ip_all --configsvr --replSet configReplSet --keyFile $KEYFILE --dbpath $WORK_DIR/config_cluster/conf_n3/data --pidfilepath $WORK_DIR/config_cluster/conf_n3/db.pid --logpath $WORK_DIR/config_cluster/conf_n3/db.log --config $CONFFILE

启动成功后

用命令mongo --port 26001 --host 127.0.0.1

如下图,进入mongo的shell

在shell中输入如下js代码 设置config集群

cfg={
    _id:"configReplSet", 
    configsvr: true,
    members:[
        {_id:0, host:'127.0.0.1:26001'},
        {_id:1, host:'127.0.0.1:26002'}, 
        {_id:2, host:'127.0.0.1:26003'}
    ]};
rs.initiate(cfg);

三个config mongo进程会自动选出一个primary,过一会再进入shell就会发现 shell提示变成primary

顺便给config添加一个admin用户,(一个集群只要在primary进程添加一次,会自动同步给secondary)

use admin
db.createUser({
    user:'admin',pwd:'123456',
    roles:[
        {role:'clusterAdmin',db:'admin'},
        {role:'userAdminAnyDatabase',db:'admin'},
        {role:'dbAdminAnyDatabase',db:'admin'},
        {role:'readWriteAnyDatabase',db:'admin'}
]})

同样之后shard也做同样的添加用户操作,便于后继观察数据

启动shard

WORK_DIR=/home/???/go/mongodb/mongo_test
 
KEYFILE=$WORK_DIR/key/keyfile
cat $KEYFILE
CONFFILE=$WORK_DIR/conf/mongo_node.conf
cat $CONFFILE
MONGOD=mongod
echo $MONGOD
echo "start shard1 replicaset"
$MONGOD --port 27001 --bind_ip_all --shardsvr --replSet shard1 --keyFile $KEYFILE --dbpath $WORK_DIR/shard1/sh1_n1/data --pidfilepath $WORK_DIR/shard1/sh1_n1/db.pid --logpath $WORK_DIR/shard1/sh1_n1/db.log --config $CONFFILE
$MONGOD --port 27002 --bind_ip_all --shardsvr --replSet shard1 --keyFile $KEYFILE --dbpath $WORK_DIR/shard1/sh1_n2/data --pidfilepath $WORK_DIR/shard1/sh1_n2/db.pid --logpath $WORK_DIR/shard1/sh1_n2/db.log --config $CONFFILE
$MONGOD --port 27003 --bind_ip_all --shardsvr --replSet shard1 --keyFile $KEYFILE --dbpath $WORK_DIR/shard1/sh1_n3/data --pidfilepath $WORK_DIR/shard1/sh1_n3/db.pid --logpath $WORK_DIR/shard1/sh1_n3/db.log --config $CONFFILE

用mongo --port 27001 --host 127.0.0.1进入mongo shell


cfg={
    _id:"shard1", 
    members:[
        {_id:0, host:'127.0.0.1:27001'},
        {_id:1, host:'127.0.0.1:27002'},
        {_id:2, host:'127.0.0.1:27003'}
    ]};
 
rs.initiate(cfg);

同样用之前的添加用户的js

并用同样的方法启动shard2集群,用于实验数据分片

对应的目录与分片名改成shard2

启动route

WORK_DIR=/home/???/go/mongodb/mongo_test
 
KEYFILE=$WORK_DIR/key/keyfile
cat $KEYFILE
CONFFILE=$WORK_DIR/conf/mongos.conf
cat $CONFFILE
MONGOS=mongos
echo $MONGOS
echo "start mongos route instances"
$MONGOS --port=25001 --bind_ip_all --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile $KEYFILE --pidfilepath $WORK_DIR/route/r_n1/db.pid --logpath $WORK_DIR/route/r_n1/db.log --config $CONFFILE
$MONGOS --port 25002 --bind_ip_all --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile $KEYFILE --pidfilepath $WORK_DIR/route/r_n2/db.pid --logpath $WORK_DIR/route/r_n2/db.log --config $CONFFILE
$MONGOS --port 25003 --bind_ip_all --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile $KEYFILE --pidfilepath $WORK_DIR/route/r_n3/db.pid --logpath $WORK_DIR/route/r_n3/db.log --config $CONFFILE

路由添加分片

用mongo --port 25001 --host 127.0.0.1 -u admin -p 123456进入shell

或者这样也可 mongo mongodb://admin:123456@127.0.0.1:25001

在mongo shell分别执行以下两行js

sh.addShard("shard1/127.0.0.1:27001")
sh.addShard("shard2/127.0.0.1:27011")

创建一个mongo database与collection

并设置分片

use test
 
sh.enableSharding("test")
db.createCollection("test_shard")
sh.shardCollection("test.test_shard", {_id:"hashed"}, false, { numInitialChunks: 4} )

在mongo shell用以下js添加数据,可以修改循环次数避免测试时间过长


var cnt = 0;
for(var i=0; i<1000; i++){
    var dl = [];
    for(var j=0; j<100; j++){
        dl.push({
                "bookId" : "BBK-" + i + "-" + j,
                "type" : "Revision",
                "version" : "IricSoneVB0001",
                "title" : "Jackson's Life",
                "subCount" : 10,
                "location" : "China CN Shenzhen Futian District",
                "author" : {
                      "name" : 50,
                      "email" : "RichardFoo@yahoo.com",
                      "gender" : "female"
                },
                "createTime" : new Date()
            });
      }
      cnt += dl.length;
      db.test_shard.insertMany(dl);
      print("insert ", cnt);
}

windows下安装mongodb,利用自带的compass客户端观察两个shard集群

会发现数据分流到两个集群了

也可以直接连route观察数据

补充:

把js存到文件里给shell执行会比较方便

执行js命令如下:

mongo mongodb://admin:123456@127.0.0.1:25001 ./test.js

示例js代码:

print('=========WECOME==========');
 
conn = new Mongo("mongodb://admin:123456@192.168.2.129:25001");
db = conn.getDB("testjs")
sh.enableSharding("testjs")
db.createCollection("testjs_col")
sh.shardCollection("testjs.testjs_col", {_id:"hashed"}, false, { numInitialChunks: 4} )
    var dl = [];
    for(var j=0; j<10; j++){
        dl.push({
                "bookId" : "BBK-" + 0 + "-" + j,
                "type" : "Revision",
                "version" : "IricSoneVB0001",
                "title" : "Jackson's Life",
                "subCount" : 10,
                "location" : "China CN Shenzhen Futian District",
                "author" : {
                      "name" : 50,
                      "email" : "RichardFoo@yahoo.com",
                      "gender" : "female"
                },
                "createTime" : new Date()
            });
    }
    db.testjs_col.insertMany(dl);
cursor = db.testjs_col.find();
printJSON(cursor.toArray());

到此这篇关于mongodb linux下集群搭建的文章就介绍到这了,更多相关mongodb集群搭建内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: mongodb linux下集群搭建过程

本文链接: https://www.lsjlt.com/news/139879.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mongodb linux下集群搭建过程
    mongodb的集群结构如上图 网上有个mongo3.0的集群例子: https://www.jb51.net/article/191388.htm router提供入口,mong...
    99+
    2022-11-13
  • linux下mongodb集群搭建过程的示例分析
    小编给大家分享一下linux下mongodb集群搭建过程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mongodb的集群结构如上图网上有个mongo3...
    99+
    2023-06-29
  • mongodb集群搭建
    mongodb集群搭建 小码农叔叔 2019-06-17 22:51:33 4086 收藏 7 分类专栏: mongodb 版权 集群方式有三种:Replica Set、Sharding、Master-Slaver三种方式 常用的主要是副...
    99+
    2014-09-28
    mongodb集群搭建
  • mongodb 分片集群搭建
    环境介绍:...
    99+
    2022-10-18
  • greenplum集群的搭建过程
    本篇内容主要讲解“greenplum集群的搭建过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“greenplum集群的搭建过程”吧!环境说明本次环境一共四台虚拟机,一台为master,三台为s...
    99+
    2023-06-02
  • MongoDB高可用集群搭建
    MongoDB高可用集群搭建   MongoDB副本集搭建 准备三台服务器:   10.175.120.131(主节点)   10.175.121.134(副本节点)   10.175...
    99+
    2015-11-17
    MongoDB高可用集群搭建
  • MongoDB搭建集群的方法
    小编给大家分享一下MongoDB搭建集群的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!为什么使用集群架构?主从:故障转移:...
    99+
    2022-10-18
  • MongoDB 副本集的搭建过程
    目录1、创建节点目录2、创建配置文件,配置文件内容如下:3、启动三个实例4、初始化集群5、登录到实例上,使用rs.conf查看实例状态。7、登录到其中一台节点上,添加默认账号即可8、...
    99+
    2022-11-11
  • Nacos集群搭建过程详解
    目录1.集群结构图2.搭建集群2.1.初始化数据库2.2.下载nacos2.3.配置Nacos2.4.启动2.5.nginx反向代理2.6.优化1.集群结构图 官方给出的Nacos集...
    99+
    2022-11-13
  • mongodb中怎么搭建shard_replica集群
    本篇文章为大家展示了mongodb中怎么搭建shard_replica集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。参考官方文档,大致步骤第一步:创建Confi...
    99+
    2022-10-18
  • mongodb分片集群怎么搭建
    要搭建一个MongoDB分片集群,您需要遵循以下步骤: 安装MongoDB:在每个节点上安装MongoDB。您可以从MongoD...
    99+
    2023-10-26
    mongodb
  • windows下搭建Consul集群
    Consul 是 HashiCorp 公司的一个用于实现分布式系统的服务发现与配置工具。Consul内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、...
    99+
    2022-11-13
  • zookeeper集群搭建超详细过程
    目录一、准备三台虚拟机,并列出对应的IP地址和主机名,如下图所示二、环境准备(下面的步骤每一台虚拟机都需要做!!)1.关闭防火墙2. 配置操作系统3. 设置本机IP地址与MAC地址三...
    99+
    2022-11-13
  • MGR集群搭建及配置过程
      MGR全称MySQL Group Replication(Mysql组复制),是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩...
    99+
    2022-11-13
  • Linux系统下CentOS 7怎么搭建集群
    这篇文章主要介绍“Linux系统下CentOS 7怎么搭建集群”,在日常操作中,相信很多人在Linux系统下CentOS 7怎么搭建集群问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统下CentO...
    99+
    2023-06-13
  • 搭建高可用MongoDB集群(分片)
    MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423MongoDB(replica set)请参考:https://blog.51cto.com/kali...
    99+
    2022-10-18
  • MongoDB中怎么搭建分片集群
    本篇文章为大家展示了MongoDB中怎么搭建分片集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MongoDB分片集群基本组件介绍mongos:数据库集群请求的入...
    99+
    2022-10-18
  • Linux RabbitMQ 集群搭建流程图解
    1.整体步骤 最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitM...
    99+
    2022-06-04
    Linux RabbitMQ 集群搭建
  • greenplum安装部署-CentOS7.9下Greenplum6.19集群搭建详细过程
    前言 官方文档:VMware Tanzu™ Greenplum® 6.20 Documentation | Tanzu Greenplum Docs(可以参考) 一,安装说明 1.1环境说明 1、首先确定部署的环境,确定下服务器的端口,一般...
    99+
    2023-10-23
    linux centos 运维 数据库
  • Redis 5.02官方集群的搭建过程
    这篇文章主要介绍“Redis 5.02官方集群的搭建过程”,在日常操作中,相信很多人在Redis 5.02官方集群的搭建过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Re...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作