• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

docker mongodb分片集群

武飞扬头像
大熊程序猿
帮助1

  1.  
    #docker创建网络
  2.  
    docker network create --subnet= 172.32.0.0/24 mongo-br
  3.  
     
  4.  
    #mongodb集群、分片概述
  5.  
    #mongodb分片集群由下面几个组建组成:
  6.  
     
  7.  
    #shard 官方建议采用副本集,提供数据冗余和高可用,主要存储业务数据
  8.  
    #mongos 是应用程序的接口,通过它,应用程序与整个集群是透明的,故一般每个应用服务器对应一个实例,可以跟应用部署到一台服务器上。它主要读取或缓存配置服务器中元数据,提供查询路由到每个分片的功能
  9.  
    #configure servers 官方建议采用副本集,存储集群的元数据。很重要,能够影响集群的使用
  10.  
     
  11.  
    docker pull mongo:4.2.0
  12.  
    #创建配置服务复制集
  13.  
    docker run -d --net mongo-br --ip 172.32.0.3 --name configsvr0 -v /home/mongodb/data/cs/configsvr0:/data/configdb mongo:4.2.0 --configsvr --replSet "rs_configsvr" --bind_ip_all
  14.  
    docker run -d --net mongo-br --ip 172.32.0.4 --name configsvr1 -v /home/mongodb/data/cs/configsvr1:/data/configdb mongo:4.2.0 --configsvr --replSet "rs_configsvr" --bind_ip_all
  15.  
    docker run -d --net mongo-br --ip 172.32.0.5 --name configsvr2 -v /home/mongodb/data/cs/configsvr2:/data/configdb mongo:4.2.0 --configsvr --replSet "rs_configsvr" --bind_ip_all
  16.  
     
  17.  
     
  18.  
    #通过docker inspect 容器名去获取在容器里的ip地址:
  19.  
    docker inspect configsvr0 | grep IPAddress
  20.  
    docker inspect configsvr1 | grep IPAddress
  21.  
    docker inspect configsvr2 | grep IPAddress
  22.  
     
  23.  
    #由于–configsvr 的默认端口为 27019。所以配置服务的地址为
  24.  
    •configsvr0: 172.32.0.3:27019
  25.  
    •configsvr1: 172.32.0.4:27019
  26.  
    •configsvr2: 172.32.0.5:27019
  27.  
     
  28.  
    #初始化配置服务复制集:
  29.  
    docker exec -it configsvr0 bash
  30.  
    mongo --host 172.32.0.3 --port 27019
  31.  
     
  32.  
    rs.initiate(
  33.  
    {
  34.  
    _id: "rs_configsvr",
  35.  
    configsvr: true,
  36.  
    members: [
  37.  
    { _id : 0, host : "172.32.0.3:27019" },
  38.  
    { _id : 1, host : "172.32.0.4:27019" },
  39.  
    { _id : 2, host : "172.32.0.5:27019" }
  40.  
    ]
  41.  
    })
  42.  
     
  43.  
     
  44.  
    #创建分片复制集
  45.  
    docker run --name shardsvr00 -d --net mongo-br --ip 172.32.0.6 -v /home/mongodb/data/sh/shardsvr00:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr0" --bind_ip_all
  46.  
    docker run --name shardsvr01 -d --net mongo-br --ip 172.32.0.7 -v /home/mongodb/data/sh/shardsvr01:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr0" --bind_ip_all
  47.  
    docker run --name shardsvr02 -d --net mongo-br --ip 172.32.0.8 -v /home/mongodb/data/sh/shardsvr02:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr0" --bind_ip_all
  48.  
     
  49.  
    docker run --name shardsvr10 -d --net mongo-br --ip 172.32.0.9 -v /home/mongodb/data/sh/shardsvr10:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr1" --bind_ip_all
  50.  
    docker run --name shardsvr11 -d --net mongo-br --ip 172.32.0.10 -v /home/mongodb/data/sh/shardsvr11:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr1" --bind_ip_all
  51.  
    docker run --name shardsvr12 -d --net mongo-br --ip 172.32.0.11 -v /home/mongodb/data/sh/shardsvr12:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr1" --bind_ip_all
  52.  
     
  53.  
    #继续通过 docker inspect 找出实例的ip
  54.  
    docker inspect shardsvr00 | grep IPAddress
  55.  
    docker inspect shardsvr01 | grep IPAddress
  56.  
    docker inspect shardsvr02 | grep IPAddress
  57.  
    docker inspect shardsvr10 | grep IPAddress
  58.  
    docker inspect shardsvr11 | grep IPAddress
  59.  
    docker inspect shardsvr12 | grep IPAddress
  60.  
     
  61.  
    #由于–shardsvr 的默认端口为 27018。所以地址为
  62.  
    •shardsvr00: 172.32.0.6:27018
  63.  
    •shardsvr01: 172.32.0.7:27018
  64.  
    •shardsvr02: 172.32.0.8:27018
  65.  
     
  66.  
    •shardsvr10: 172.32.0.9:27018
  67.  
    •shardsvr11: 172.32.0.10:27018
  68.  
    •shardsvr12: 172.32.0.11:27018
  69.  
     
  70.  
    docker exec -it shardsvr00 bash
  71.  
    mongo --host 172.32.0.6 --port 27018
  72.  
     
  73.  
    rs.initiate(
  74.  
    {
  75.  
    _id : "rs_shardsvr0",
  76.  
    members: [
  77.  
    { _id : 0, host : "172.32.0.6:27018" },
  78.  
    { _id : 1, host : "172.32.0.7:27018" },
  79.  
    { _id : 2, host : "172.32.0.8:27018" }
  80.  
    ]
  81.  
    })
  82.  
     
  83.  
     
  84.  
    #输出 { "ok" : 1 }
  85.  
    docker exec -it shardsvr10 bash
  86.  
    mongo --host 172.32.0.9 --port 27018
  87.  
     
  88.  
    rs.initiate(
  89.  
    {
  90.  
    _id : "rs_shardsvr1",
  91.  
    members: [
  92.  
    { _id : 0, host : "172.32.0.9:27018" },
  93.  
    { _id : 1, host : "172.32.0.10:27018" },
  94.  
    { _id : 2, host : "172.32.0.11:27018" }
  95.  
    ]
  96.  
    })
  97.  
     
  98.  
     
  99.  
    #输出 { "ok" : 1 }
  100.  
     
  101.  
    #创建mongos,连接mongos到分片集群
  102.  
    #由于镜像的默认入口是 mongod,所以要通过 --entrypoint "mongos" 将其改为 mongos:
  103.  
     
  104.  
    docker run --name mongos0 -d --net mongo-br --ip 172.32.0.12 -p 27017:27017 --entrypoint "mongos" mongo:4.2.0 --configdb rs_configsvr/172.32.0.3:27019,172.32.0.4:27019,172.32.0.5:27019 --bind_ip_all
  105.  
    docker inspect mongos0 | grep IPAddress
  106.  
    #地址为:172.32.0.12:27017
  107.  
    #注:映射到宿主机便于外面客户端访问
  108.  
     
  109.  
    #添加分片到集群
  110.  
    docker exec -it mongos0 bash
  111.  
    mongo --host 172.32.0.12 --port 27017
  112.  
     
  113.  
    sh.addShard("rs_shardsvr0/172.32.0.6:27018,172.32.0.7:27018,172.32.0.8:27018")
  114.  
     
  115.  
    sh.addShard("rs_shardsvr1/172.32.0.9:27018,172.32.0.10:27018,172.32.0.11:27018")
  116.  
     
  117.  
    #数据库 启用 分片
  118.  
    docker exec -it mongos0 bash
  119.  
    mongo --host 172.32.0.12 --port 27017
  120.  
    use admin
  121.  
    db.runCommand({"enablesharding":"sharedemodb"})
  122.  
    sh.shardCollection("sharedemodb.student",{"age":1}) #必须有最少一个集合,在工具里才会显示
学新通

学新通

  1.  
    #数据库 启用 分片
  2.  
    docker exec -it mongos0 bash
  3.  
    mongo --host 172.31.0.12 --port 27017
  4.  
    use admin
  5.  
    db.runCommand({"enablesharding":"sharedemodb"})
  6.  
    sh.shardCollection("sharedemodb.student",{"age":1}) #必须有最少一个集合,在工具里才会显示

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgaccic
系列文章
更多 icon
同类精品
更多 icon
继续加载