• k8s 部署 mongodb 三种模式


    部署模式简介

    部署 MongoDB 一般有三种方式

    模式架构优点缺点
    standalone 独立模式单节点容易部署无容灾方案
    relicaset 主从模式常用一主两从高可用,自动进行故障切换恢复部署和应用都比较复杂
    sharded 分片模式常用 分片数为4,配置服务器的副本为 3 ,数据节点副本为 2支持水平扩展,可忍受非常大的数据集,并提供高吞吐量d操作概念比较苦涩难懂

    主从模式:同一份数据被保存在N台机器上,每台机器上都有一份数据。
    分片模式:一份数据被分开保存在N台机器上,N个机器上的数据组合起来是一份数据。

    本文使用 bitnami chart 进行 MongoDB 的部署

    引入 bitnami

    helm repo add bitnami https://charts.bitnami.com/bitnami
    
    • 1

     

    独立模式

    官方文档: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"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    architecture:默认就是独立模式
    service.nodePorts.mongodb:开启外部访问

    部署命令

    helm install mongodb bitnami/mongodb -f values.yaml -n [命名空间]
    
    • 1

     

    主从模式

    官方文档: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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    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 [命名空间]
    
    • 1

     

    分片模式

    官方部署文档:https://github.com/bitnami/charts/tree/master/bitnami/mongodb-sharded
    官方原理文档:https://www.mongodb.com/docs/manual/sharding/

    配置项默认配置推荐配置
    mongos路由11
    config配置服务器13
    shards分片数14
    replica副本数22

    新增配置文件 values.yaml

    global:
      storageClass: "nfs-client"
    auth:
      rootPassword: "5gTU4o7g5g"
    
    ##### 可不配置 #######
    shards: 4
    configsvr: 
      replicaCount: 3
    shardsvr: 
      dataNode: 
        replicaCount: 2
    ##### 可不配置 #######
    
    service:
      type: "NodePort"
      nodePorts:
        mongodb: "30019"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    shards、configsvr、shardsvr:可以不配置,按默认值也可以
    service.type:外部访问方式,选择 NodePort
    service.nodePorts.mongodb:开发端口

    部署命令

    helm install mongodb bitnami/mongodb-sharded -f values.yaml -n [命名空间]
    
    • 1

    默认部署结构
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    优化部署结构
    在这里插入图片描述

    在这里插入图片描述

     

    navicat 链接

    • standalone 独立模式
      在这里插入图片描述

    • relicaset 主从模式
      在这里插入图片描述

    • sharded 分片模式
      在这里插入图片描述

     

    springboot 连接

    pom 文件添加依赖

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-data-mongodbartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    application.yml 示例
    有账号密码时,必须添加 authSource=admin

    data:
      mongodb:
        uri: mongodb://root:123456@192.168.140.01:30020/datasource?authSource=admin
    
    • 1
    • 2
    • 3

    官方示例

    mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
    
    • 1

    options 属性简介
    在这里插入图片描述

    官方 Replica Set 示例

    mongodb://db0.example.com:27017,db1.example.com:27017,db2.example.com:27017/?replicaSet=myRepl
    
    • 1

    官方文档:https://www.mongodb.com/docs/manual/reference/connection-string/

     

    Java driver 连接

    不做详细介绍,有需要可看官网

    官方文档 https://mongodb.github.io/mongo-java-driver/3.4/driver/getting-started/installation/

     
     

    storageClass 参考文档
    搭建本地存储可以参考 k8s 安装本地 storageClass
    搭建NFS存储可以参考 K8S 集群使用 NFS 做 storageclass

  • 相关阅读:
    迁移学习
    什么是域名解析?如何进行域名解析设置?
    【每日一题】做菜顺序
    你的DDPG/RDPG为何不收敛?
    【Java UI】HarmonyOs如何集成Hawk
    Python 全栈系列179 单主机使用Docker搭建Mongo分片式集群2
    Spring 事务相关
    【微信小程序毕业设计源代码】最近开发的60个java+python微信小程序源码+毕业设计选题推荐
    9种常用的数据分析方法
    LeetCode 2312. 卖木头块
  • 原文地址:https://blog.csdn.net/weixin_42555971/article/details/126243336