ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

docker搭建mongodb分片集群

2021-04-30 23:51:20  阅读:459  来源: 互联网

标签:10.0 00 mongo -- mongodb 分片 docker keyfile id


准备好mongodb镜像,网络,keyfile文件,在基础镜像mongo的基础上创建包含keyfile文件的镜像mongo:v1

目标是搭建一个6节点的分片集群,该集群由两个副本集构成,包括:一个配置服务器副本集(三节点),一个分片副本集(三节点),一个mongos

创建配置服务器副本集节点:

docker run -d --name mongo-cfg01 --network 10.0.0.0/24 --ip 10.0.0.211 -v /root/keyfile:/etc/keyfile -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123.com mongo:v1 mongod --configsvr --replSet "cluster01" --bind_ip_all --keyFile /etc/keyfile
docker run -d --name mongo-cfg02 --network 10.0.0.0/24 --ip 10.0.0.212 -v /root/keyfile:/etc/keyfile -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123.com mongo:v1 mongod --configsvr --replSet "cluster01" --bind_ip_all --keyFile /etc/keyfile
docker run -d --name mongo-cfg03 --network 10.0.0.0/24 --ip 10.0.0.213 -v /root/keyfile:/etc/keyfile -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123.com mongo:v1 mongod --configsvr --replSet "cluster01" --bind_ip_all --keyFile /etc/keyfile

进入任一节点,比如,mongo-cfg01

连接数据库

mongo --port 27019 -u admin

初始化配置服务器副本集

rs.initiate(
  {
    _id: "cluster01",
    configsvr: true,
    members: [
      { _id : 0, host : "10.0.0.211:27019" },
      { _id : 1, host : "10.0.0.212:27019" },
      { _id : 2, host : "10.0.0.213:27019" }
    ]
  }
)

结果:

{
        "ok" : 1,
        "$gleStats" : {
                "lastOpTime" : Timestamp(1619790210, 1),
                "electionId" : ObjectId("000000000000000000000000")
        },
        "lastCommittedOpTime" : Timestamp(0, 0)
}

然后,使用rs.conf(),rs.status()等等查看副本集状态

创建分片副本集:

docker run -d --name mongo-rep01 --network 10.0.0.0/24 --ip 10.0.0.221 -v /root/keyfile:/etc/keyfile -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123.com mongo:v1 mongod --shardsvr --replSet "cluster01" --bind_ip_all --keyFile /etc/keyfile
docker run -d --name mongo-rep02 --network 10.0.0.0/24 --ip 10.0.0.222 -v /root/keyfile:/etc/keyfile -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123.com mongo:v1 mongod --shardsvr --replSet "cluster01" --bind_ip_all --keyFile /etc/keyfile
docker run -d --name mongo-rep03 --network 10.0.0.0/24 --ip 10.0.0.223 -v /root/keyfile:/etc/keyfile -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123.com mongo:v1 mongod --shardsvr --replSet "cluster01" --bind_ip_all --keyFile /etc/keyfile

进入任一节点,比如:mongo-rep01,连接数据库

mongo --port 27018 -u admin

初始化分片副本集

rs.initiate(
  {
    _id : "cluster01",
    members: [
      { _id : 0, host : "10.0.0.221:27018" },
      { _id : 1, host : "10.0.0.222:27018" },
      { _id : 2, host : "10.0.0.223:27018" }
    ]
  }
)

结果:

{ "ok" : 1 }

为集群启动一个mongos

mongos --configdb cfg/10.0.0.211:27019,10.0.0.212:27019,10.0.0.213:27019 --keyFile /etc/keyfile

结果滚动显示如下内容:

{"t":{"$date":"2021-04-30T15:00:27.378+00:00"},"s":"I",  "c":"SH_REFR",  "id":24105,   "ctx":"ConfigServerCatalogCacheLoader-1","msg":"Collection has found to be unsharded after refresh","attr":{"namespace":"config.system.sessions","durationMillis":0}}
{"t":{"$date":"2021-04-30T15:00:27.379+00:00"},"s":"I",  "c":"CONTROL",  "id":20714,   "ctx":"LogicalSessionCacheRefresh","msg":"Failed to refresh session cache, will try again at the next refresh interval","attr":{"error":"NamespaceNotSharded: Collection config.system.sessions is not sharded."}}
{"t":{"$date":"2021-04-30T15:00:27.379+00:00"},"s":"I",  "c":"SH_REFR",  "id":24105,   "ctx":"ConfigServerCatalogCacheLoader-1","msg":"Collection has found to be unsharded after refresh","attr":{"namespace":"config.system.sessions","durationMillis":0}}
{"t":{"$date":"2021-04-30T15:00:27.380+00:00"},"s":"I",  "c":"CONTROL",  "id":20712,   "ctx":"LogicalSessionCacheReap","msg":"Sessions collection is not set up; waiting until next sessions reap interval","attr":{"error":"NamespaceNotSharded: Collection config.system.sessions is not sharded."}}
{"t":{"$date":"2021-04-30T15:00:35.473+00:00"},"s":"I",  "c":"SHARDING", "id":20997,   "ctx":"Uptime-reporter","msg":"Refreshed RWC defaults","attr":{"newDefaults":{}}}
{"t":{"$date":"2021-04-30T15:00:45.994+00:00"},"s":"I",  "c":"SHARDING", "id":20997,   "ctx":"Uptime-reporter","msg":"Refreshed RWC defaults","attr":{"newDefaults":{}}}
{"t":{"$date":"2021-04-30T15:00:57.478+00:00"},"s":"I",  "c":"SHARDING", "id":20997,   "ctx":"Uptime-reporter","msg":"Refreshed RWC defaults","attr":{"newDefaults":{}}}

添加分片集到集群

通过mongo连接到运行mongos的节点,连接数据库,并执行如下命令添加分片集到集群:

sh.addShard( "cluster01/10.0.0.221:27018,10.0.0.222:27018,10.0.0.223:27018")

结果:

mongos> sh.addShard( "cluster01/10.0.0.221:27018,10.0.0.222:27018,10.0.0.223:27018")
{
        "shardAdded" : "cluster01",
        "ok" : 1,
        "operationTime" : Timestamp(1619794806, 3),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1619794806, 3),
                "signature" : {
                        "hash" : BinData(0,"LfNdXcSRkS5TyA1rh9qJrdZzOt0="),
                        "keyId" : NumberLong("6956960684298993673")
                }
        }
}

查看分片集状态:

mongos> sh.status()
--- Sharding Status --- 
  sharding version: {
        "_id" : 1,
        "minCompatibleVersion" : 5,
        "currentVersion" : 6,
        "clusterId" : ObjectId("608c16e2c27b8b7491ff6915")
  }
  shards:
        {  "_id" : "cluster01",  "host" : "cluster01/10.0.0.221:27018,10.0.0.222:27018,10.0.0.223:27018",  "state" : 1 }
  active mongoses:
        "4.4.5" : 1
  autosplit:
        Currently enabled: yes
  balancer:
        Currently enabled:  yes
        Currently running:  no
        Failed balancer rounds in last 5 attempts:  0
        Migration Results for the last 24 hours: 
                No recent migrations
  databases:
        {  "_id" : "config",  "primary" : "config",  "partitioned" : true }
                config.system.sessions
                        shard key: { "_id" : 1 }
                        unique: false
                        balancing: true
                        chunks:
                                cluster01       1024
                        too many chunks to print, use verbose if you want to force print


标签:10.0,00,mongo,--,mongodb,分片,docker,keyfile,id
来源: https://blog.51cto.com/u_3823536/2748183

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有