部署模式简介
部署 MongoDB 一般有三种方式
模式 | 架构 | 优点 | 缺点 |
---|---|---|---|
standalone 独立模式 | 单节点 | 容易部署 | 无容灾方案 |
relicaset 主从模式 | 常用一主两从 | 高可用,自动进行故障切换恢复 | 部署和应用都比较复杂 |
sharded 分片模式 | 常用 分片数为4,配置服务器的副本为 3 ,数据节点副本为 2 | 支持水平扩展,可忍受非常大的数据集,并提供高吞吐量d操作 | 概念比较苦涩难懂 |
主从模式:同一份数据被保存在N台机器上,每台机器上都有一份数据。
分片模式:一份数据被分开保存在N台机器上,N个机器上的数据组合起来是一份数据。
本文使用 bitnami chart 进行 MongoDB 的部署
引入 bitnami
helm repo add bitnami https://charts.bitnami.com/bitnami
独立模式
官方文档:https://github.com/bitnami/charts/tree/master/bitnami/mongodb
新增配置文件 values.yaml
global:
storageClass: "nfs-client"
metrics:
enabled: true
auth:
rootPassword: "5gTU4o7g5g"
service:
type: "NodePort"
nodePorts:
mongodb: "30017"
architecture:默认就是独立模式
service.nodePorts.mongodb:开启外部访问
部署命令
helm install mongodb bitnami/mongodb -f values.yaml -n [命名空间]
主从模式
官方文档:https://github.com/bitnami/charts/tree/master/bitnami/mongodb
新增配置文件 values.yaml
global:
storageClass: "nfs-client"
architecture: "replicaset"
auth:
rootPassword: "5gTU4o7g5g"
replicaSetKey: "mymongodb"
usernames:
- "user"
passwords:
- "123456"
databases:
- "message"
replicaCount: 2
externalAccess:
enabled: true
service:
externalTrafficPolicy: "Cluster"
type: "NodePort"
nodePorts:
- 30018
- 30019
architecture:架构设置为 replicaset
auth.replicaSetKey:更新 upgrade 时有用,可以不设置,若要设置,字符必须大于5
auth.usernames、auth.passwords、 auth.databases:用户名、密码和数据库;格式为数组,一一对应
replicaCount:副本集,按需设置
externalAccess.enabled:开启外部访问
externalAccess.service.externalTrafficPolicy:有 Local 和 Cluster 两种选项;Cluster:[集群里所有 ip] + [nodeport端口] 都访问服务,Local :只能用 [容器所在 ip] + [nodeport端口] 才能访问
externalAccess.service.type:LoadBalancer 或者 NodePort,这里使用 NodePort
externalAccess.service.nodePorts:这里是数组结构,数组大小和 replicaCount 一致
部署命令
helm install mongodb bitnami/mongodb -f values.yaml -n [命名空间]
分片模式
官方部署文档:https://github.com/bitnami/charts/tree/master/bitnami/mongodb-sharded
官方原理文档:https://www.mongodb.com/docs/manual/sharding/
配置项 | 默认配置 | 推荐配置 | |
---|---|---|---|
mongos | 路由 | 1 | 1 |
config | 配置服务器 | 1 | 3 |
shards | 分片数 | 1 | 4 |
replica | 副本数 | 2 | 2 |
新增配置文件 values.yaml
global:
storageClass: "nfs-client"
auth:
rootPassword: "5gTU4o7g5g"
##### 可不配置 #######
shards: 4
configsvr:
replicaCount: 3
shardsvr:
dataNode:
replicaCount: 2
##### 可不配置 #######
service:
type: "NodePort"
nodePorts:
mongodb: "30019"
shards、configsvr、shardsvr:可以不配置,按默认值也可以
service.type:外部访问方式,选择 NodePort
service.nodePorts.mongodb:开发端口
部署命令
helm install mongodb bitnami/mongodb-sharded -f values.yaml -n [命名空间]
默认部署结构
优化部署结构
navicat 链接
-
standalone 独立模式
-
relicaset 主从模式
-
sharded 分片模式
springboot 连接
pom 文件添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
application.yml 示例
有账号密码时,必须添加 authSource=admin
data:
mongodb:
uri: mongodb://root:123456@192.168.140.01:30020/datasource?authSource=admin
官方示例
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
options 属性简介
官方 Replica Set 示例
mongodb://db0.example.com:27017,db1.example.com:27017,db2.example.com:27017/?replicaSet=myRepl
官方文档:https://www.mongodb.com/docs/manual/reference/connection-string/
Java driver 连接
不做详细介绍,有需要可看官网
官方文档 https://mongodb.github.io/mongo-java-driver/3.4/driver/getting-started/installation/
文章来源:https://www.toymoban.com/news/detail-403790.html
storageClass 参考文档
搭建本地存储可以参考 k8s 安装本地 storageClass
搭建NFS存储可以参考 K8S 集群使用 NFS 做 storageclass文章来源地址https://www.toymoban.com/news/detail-403790.html
到了这里,关于k8s 部署 mongodb 三种模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!