mongodb实验环境搭建记录

背景

mongodb 是一个非常通用的文档型数据库,在后端开发过程中经常被用到。为了能够更好地掌握 mongodb,我们需要一套快速可使用的环境,用于开发、测试等。

基本形态

  • docker
  • k8s

调研

通过在 dockerhub 上搜索 mongodb,发现有大量的镜像提供者。看到 mongo 官方的镜像 和 bitnami 提供的镜像 使用量最大,考虑到 bitnami 生态更加完善,因此选择 bitnami/mongodb 作为镜像。

搭建过程

docker

拉镜像

1
docker pull bitnami/mongodb:6.0

直接通过 docker 运行

1
2
# 创建网桥
docker network create mongonet --driver bridge
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker run -d \
-e ALLOW_EMPTY_PASSWORD=yes \
-e MONGODB_EXTRA_FLAGS='--wiredTigerCacheSizeGB=2' \
-e MONGODB_ENABLE_JOURNAL=true \
-e MONGODB_ROOT_PASSWORD=password123 \
-e MONGODB_USERNAME=testuser \
-e MONGODB_PASSWORD=123456 \
-e MONGODB_DATABASE=testdb \
-e MONGODB_REPLICA_SET_MODE=primary \
-e MONGODB_REPLICA_SET_NAME=testreplicaset \
-e MONGODB_PORT_NUMBER=27017 \
-v /data/mongotest:/bitnami/mongodb \
-v /data/mongotest/init:/docker-entrypoint-initdb.d \
--name mongomaster \
--network mongonet \
-p 27017:27017 \
bitnami/mongodb:6.0

配置 docker-compose.yaml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: '3.3'

networks:
mongonet:
driver: bridge

services:
mongodb:
image: docker.io/bitnami/mongodb:6.0
ports:
- '27017:27017'
volumes:
- '/data/mongotest:/bitnami/postgresql'
- '/data/mongotest/init:/docker-entrypoint-initdb.d'
environment:
- 'ALLOW_EMPTY_PASSWORD=yes'
- 'MONGODB_EXTRA_FLAGS="--wiredTigerCacheSizeGB=2"'
- 'MONGODB_ENABLE_JOURNAL=true'
- 'MONGODB_ROOT_PASSWORD=password123'
- 'MONGODB_USERNAME=testuser'
- 'MONGODB_PASSWORD=123456'
- 'MONGODB_DATABASE=testdb'
- 'MONGODB_REPLICA_SET_MODE=primary'
- 'MONGODB_REPLICA_SET_NAME=testreplicaset'
- 'MONGODB_PORT_NUMBER=27017'
networks:
- mongonet

  • 做mongodb从库搭建的实验
  • 做mongodb集群搭建实验

k8s

charts 同样选择 bitnami 的库。

helm 下载及安装可以查看 postgresql实验环境搭建

查看 charts

1
2
helm fetch bitnami/mongodb --untar
# 看情况修改需要的参数

修改mongodb密码等基本信息

1
2
3
4
5
6
7
8
# vim values.yaml
auth:
enabled: true
rootUser: root
rootPassword: "123456"
usernames: ["testuser"]
passwords: ["123456"]
databases: ["testdb"]

更详细的配置,可以参考 bitnami 的 github

部署

1
helm install mongodb .

修改 service

1
2
3
kubectl edit svc mongodb

# 修改 Cluster 为 LoadBalancer/NodePort

测试

1
mongo mongodb://root:123456@xxx.xxx.xx.xx:27017/?authSource=admin

二进制

二进制也可以安装,可以在网上查下资料,姑且不做操作了。下面安装 mongo 是为了使用 client。

1
2
3
4
5
6
7
8
9
10
# 设置 mongodb 源
cat <<eof > /etc/yum.repos.d/mongodb-org-5.0.repo
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7Server/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
eof

1
2
# 安装稳定版
yum install -y mongodb-org
1
2
# 当然也可以指定版本安装
sudo yum install -y mongodb-org-6.0.0 mongodb-org-server-6.0.0 mongodb-org-shell-6.0.0 mongodb-org-mongos-6.0.0 mongodb-org-tools-6.0.0

后续

  • 增加 mongodb 的维护教程
  • 增加 mongodb 的原理教程
  • 增加 mongodb 监控的添加

更详细的 mongodb 参数可以查看中文文档


Take up one idea. Make that one idea your life - think of it, dream of it, live on that idea. Let the brain, muscles, nerves, every part of your body, be full of that idea, and just leave every other idea alone. This is the way to success.
Swami Vivekananda