首页 > 其他分享 >Mongo集群安装-Docker环境

Mongo集群安装-Docker环境

时间:2023-01-27 18:09:10浏览次数:41  
标签:Mongo -- server cluster 集群 conf Docker data mongo

安装简介

本文主要介绍了在Docker环境下如何安装Mongo集群的过程,Mongo集群采用单分片三副本模式进行部署。

服务器:bigdata1、bigdata2、bigdata3

部署服务:config-server、shard-server、mongos

Docker镜像:mongo:4.4.14

创建目录

创建mongo配置文件目录及数据存储目录。

mkdir /data/mongo-cluster
cd /data/mongo-cluster/ | mkdir config-server shard-server mongos
cd /data/mongo-cluster/config-server | mkdir data conf
cd /data/mongo-cluster/shard-server | mkdir data conf
cd /data/mongo-cluster/mongos | mkdir data conf

导入配置

(1)生成并配置认证文件:mongo.key

# 生成文件
openssl rand -base64 756 > /data/mongo-cluster/mongo.key
chmod 400 /data/mongo-cluster/mongo.key
# 复制文件到所有文件
cp /data/mongo-cluster/mongo.key /data/mongo-cluster/config-server/conf/
cp /data/mongo-cluster/mongo.key /data/mongo-cluster/mongos/conf/
cp /data/mongo-cluster/mongo.key /data/mongo-cluster/shard-server/conf/
rm -r /data/mongo-cluster/mongo.key

(2)在目录 /data/mongo-cluster/config-server/conf 下创建文件 mongo.conf

vim /data/mongo-cluster/config-server/conf/mongo.conf

# 日志文件
#systemLog:
# destination: file
# logAppend: true
# path: /var/log/mongodb/data0802.log

# 网络设置
net:
port: 27019 #端口号
# bindIp: 127.0.0.1 #绑定ip
replication:
replSetName: configsvr
sharding:
clusterRole: configsvr
security:
authorization: enabled #是否开启认证
keyFile: /data/configdb/mongo.key #keyFile路径

(3)在目录 /data/mongo-cluster/mongos/conf 下创建文件 mongo.conf

vim /data/mongo-cluster/mongos/conf/mongo.conf

net:
port: 27017 #端口号
sharding:
configDB: configsvr/bigdata1:27019,bigdata2:27019,bigdata3:27019
security:
keyFile: /data/configdb/mongo.key #keyFile路径

(4)在目录 /data/mongo-cluster/config-server/conf 下创建文件 mongo.conf

vim /data/mongo-cluster/shard-server/conf/mongo.conf

# 日志文件
#systemLog:
# destination: file
# logAppend: true
# path: /var/log/mongodb/data0802.log

# 网络设置
net:
port: 27018 #端口号
# bindIp: 127.0.0.1 #绑定ip
replication:
replSetName: shard1
sharding:
clusterRole: shardsvr
security:
authorization: enabled #是否开启认证
keyFile: /data/configdb/mongo.key #keyFile路径

(5)将文件分发到各个节点

scp -r /data/mongo-cluster root@bigdata2:/data/
scp -r /data/mongo-cluster root@bigdata3:/data/

容器部署

在所有节点都执行以下操作。

 (1)config-server

sudo docker run -d \
--name config-server \
--net=host \
--privileged=true \
--restart=always \
-v /data/mongo-cluster/config-server/conf:/data/configdb \
-v /data/mongo-cluster/config-server/data:/data/db \
-v /etc/hosts:/etc/hosts \
-e TZ=Asia/Shanghai \
mongo:4.4.14 -f /data/configdb/mongo.conf --bind_ip_all

 (2)mongos

sudo docker run -d \
--name mongos \
--net=host \
--privileged=true \
--restart=always \
--entrypoint "mongos" \
-v /msun/data/mongo-cluster/mongos/conf:/data/configdb \
-v /msun/data/mongo-cluster/mongos/data:/data/db \
-v /etc/hosts:/etc/hosts \
mongo:4.4.14 -f /data/configdb/mongo.conf --bind_ip_all

 (3)shard-server

sudo docker run -d \
--name shard-server \
--net=host \
--privileged=true \
--restart=always \
-v /data/mongo-cluster/shard-server/conf:/data/configdb \
-v /data/mongo-cluster/shard-server/data:/data/db \
-v /etc/hosts:/etc/hosts \
-e TZ=Asia/Shanghai \
mongo:4.4.14 -f /data/configdb/mongo.conf --bind_ip_all

 初始化Mongo

在bigdata1节点上执行以下操作。

(1)初始化config-server

sudo docker exec -it config-server bash
mongo -port 27019

# 进行副本集配置
rs.initiate(
{
_id: "configsvr",
members: [
{ _id : 1, host : "bigdata1:27019" },
{ _id : 2, host : "bigdata2:27019" },
{ _id : 3, host : "bigdata3:27019" }
]
}
);

# 创建用户密码
use admin
db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})

(2)初始化shard-serve

sudo docker exec  -it shard-server bash
mongo -port 27018

# 进行副本集配置
rs.initiate(
{
_id : "shard1",
members: [
{ _id : 1, host : "bigdata1:27018" },
{ _id : 2, host : "bigdata2:27018" },
{ _id : 3, host : "bigdata3:27018" }
]
}
);

use admin
db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})

(3)为分片添加副本并测试

sudo docker exec -it mongos bash
mongo -port 27017

# 先登录(使用前面设置的root用户密码)
use admin;
db.auth("root","root");

sh.addShard("shard1/bigdata1:27018,bigdata2:27018,bigdata3:27018")
# 创建数据库
use dw;
# 为数据库启用分片
sh.enableSharding("dw");
# 为集合设置分片规则
sh.shardCollection("dw.test", { "_id": "hashed" })
# 数据验证
for (i = 1; i <= 1000; i++) {
db.getCollection("test").insert({'price': 1})
}
# 查询总数
db.getCollection("test").count()

 

标签:Mongo,--,server,cluster,集群,conf,Docker,data,mongo
From: https://blog.51cto.com/u_13477304/6024167

相关文章

  • docker运行不同版本activemq相关问题
    WARNING:Therequestedimage'splatform(linux/amd64)doesnotmatchthedetectedhostplatform(linux/arm64/v8)andnospecificplatformwasrequestedda6992c0......
  • 搭建etcd集群
    1.下载etcdETCD_VERSION='3.5.4'wgethttps://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gztar-xvfetcd-v${E......
  • MongoDB 基础(二)mongodb 与 T-SQL 对比
    SQLTerms/ConceptsMongoDBTerms/ConceptsdatabasedatabasetableCollection(集合)rowdocument(文档)columnKey(键)ValueValue(值)indexindextablejoinsembeddeddocumentsandlin......
  • MongoDB 基础(三)mongodb 中的索引使用
    MongoDB中的索引和其他数据库索引类似,也是使用B-Tree结构。MongoDB的索引是在collection级别上的,并且支持在任何列或者集合内的文档的子列中创建索引。 下面是官方给出的一......
  • 自从学习了MongoDB高可用,慢慢的喜欢上了它,之前确实冷落了
    大家好,我是哪吒,最近项目在使用MongoDB作为图片和文档的存储数据库,为啥不直接存MySQL里,还要搭个MongoDB集群,麻不麻烦?让我们一起,一探究竟,继续学习MongoDB高可用和片键策略,实现......
  • 自从学习了MongoDB高可用,慢慢的喜欢上了它,之前确实冷落了
    大家好,我是哪吒,最近项目在使用MongoDB作为图片和文档的存储数据库,为啥不直接存MySQL里,还要搭个MongoDB集群,麻不麻烦?让我们一起,一探究竟,继续学习MongoDB高可用和片键策略,实......
  • 我的大数据开发第1章:hadoop 单节点伪集群安装
    我的大数据开发第1章:hadoop单节点伪集群安装在一个节点机器上部署一个hadoop集群,可用于开发环境,简单易行。os为centos7虚拟机(hostname=hacl-node1)。本章包括以下软件的开......
  • docker安装gogs
    一、docker安装gogs拉取镜像dockerpullgogs/gogs创建目录mkdir-p/usr/local/gogs创建容器dockerrun--name=gogs-d-p10022:22-p10880:3000-v/usr/l......
  • Keepalived高可用集群部署
    KeepAlived目录KeepAlivedKeepAlived安装KeepAlived部署准备工作主备模式节点配置验证正常状态故障故障恢复1+N(一主多备)模式节点配置验证正常状态故障-1故障-2故障恢复......
  • [Docker] Storing Container Data in Google Cloud Storage
    IntroductionDockervolumesisthepreferredmethodofstoringcontainerdatalocally.VolumesupportisbuiltdirectlyintoDocker,makingitaneasytoolto......