配置SystemLink Enterprise访问一个或多个远程MongoDB数据库,以增强可扩展性和容错能力。

必须在以下条件下迁移现有的MongoDB数据。
  • 您将升级2023年10月之前的SystemLink Enterprise版本。
  • global.mongodb.install设置为true

有关迁移条件的详细信息,请参考发行说明。

  1. 如果是第一次安装SystemLink Enterprise,请配置下表中列出的数据库。
  2. 打开systemlink-secrets.yaml
  3. 为每个数据库设置密码。
    备注 要对所有数据库使用同一组凭据,可将每个数据库的password字段留空。
    表 16. MongoDB实例的配置参数
    服务 数据库 用户 密码
    alarmservice nialarm nialarm alarmservice.secrets.mongodb.servicePassword
    assetservice niapm niapm assetservice.secrets.mongodb.servicePassword
    comments comments nicomments comments.secrets.mongodb.servicePassword
    dataframeservice nidataframe nidataframe dataframeservice.secrets.mongodb.servicePassword
    fileingestion files files fileingestion.secrets.mongodb.servicePassword
    filescdc (optional) files files fileingestioncdc.secrets.mongodb.password
    feedservice nifeeds nifeeds feedservice.secrets.mongodb.servicePassword
    nbexecservice ninbexec ninbexec nbexecservice.secrets.mongodb.servicePassword
    notification ninotification ninotification notification.secrets.mongodb.servicePassword
    repository nirepo nirepo repository.secrets.mongodb.servicePassword
    routinescheduletrigger niroutinescheduletrigger niroutinescheduletrigger routinescheduletrigger.secrets.mongodb.servicePassword
    routineservice niroutines niroutines routineservice.secrets.mongodb.servicePassword
    saltmaster minions minions saltmaster.secrets.mongodb.minionsPassword
    saltmaster pillars pillars saltmaster.secrets.mongodb.pillarsPassword
    specificationmanagement (optional) specifications nispecificationmanagement specificationmanagement.secrets.mongodb.servicePassword
    systems nisystemsmanagement nisystems systems.secrets.mongodb.servicePassword
    systemsstate nisystemsstate nisystemsstate systemsstate.secrets.mongodb.servicePassword
    tags tags tags tags.secrets.mongodb.servicePassword
    taghistorian taghistorian taghistorian taghistorian.secrets.mongodb.servicePassword
    userdata niuserdata niuserdata userdata.secrets.mongodb.servicePassword
    userservices keyservices keyservice userservices.secrets.mongodb.keyServicePassword
    userservices users userservice userservices.secrets.mongodb.userServicePassword
    webappservices webapps webapps webappservices.secrets.mongodb.servicePassword
    workorder (optional) workorders niworkorder workorder.secrets.mongodb.servicePassword
  4. 请联系NI技术支持确定以下内容。
    • 用于部署的MongoDB实例数量。
    • 须连接至特定实例的一项或多项服务。
  5. 为您的部署配置一个或多个MongoDB连接字符串。有关格式化连接字符串的详细信息,请参考下表。
    表 17. 基于部署步骤的配置步骤
    部署类型 配置步骤
    部署包含一个MongoDB实例。
    1. 打开systemlink-secrets.yaml文件。
    2. 使用相应连接字符串的值设置global.secrets.mongodb.connection_string
    该字符串将每个服务连接到该实例。
    部署包含多个MongoDB实例。

    针对MongoDB实例配置参数表中的每个服务,配置连接字符串。

    1. 打开systemlink-values.yaml文件。
    2. 使用待服务连接的MongoDB实例相应值设置<service_name>.mongodb.connection_string
    3. <service_name>替换为MongoDB实例配置参数表中服务列的值。

    例如,要配置警报服务连接字符串,请设置alarmservice.mongodb.connection_string值。对于表中出现多次的服务,例如userservices,只需设置一次连接字符串。

    备注 部署时,SystemLink会动态替换尖括号中的占位符,例如<username><password><database>,因此,无需手动替换这些占位符。除非另有说明,否则请按原样输入字符串。
    表 18. 基于MongoDB类型的连接字符串
    MongoDB类型 连接字符串
    MongoDB Atlas mongodb+srv://<username>:<password>@my-atlas-cluster.mongodb.net/<database>
    MongoDB社区 mongodb://<username>:<password>@my-mongodb-cluster-0,my-mongodb-cluster-1,my-mongodb-cluster-2/<database>?replicaSet=rs0
    MongoDB社区,以及一组用户名和密码 mongodb://myusername:mypassword@my-mongodb-cluster-0,my-mongodb-cluster-1,my-mongodb-cluster-2/<database>?replicaSet=rs0

    遵循下列规定:

    • myusername 是MongoDB实例的用户名。
    • mypassword 是MongoDB实例的密码。
  6. 打开systemlink-values.yaml
  7. globals.mongodb.install设置为false

选择MongoDB部署

大多数SystemLink服务使用MongoDB作为主数据库。您可以在安装SystemLink Enterprise的同一Kubernetes集群中使用MongoDB实例,也可以使用外部实例。自SystemLink Enterprise 2023年10月起,服务支持使用单个独立的MongoDB实例。

使用下表选择最适合您的MongoDB部署。
表 19. 选择MongoDB部署
部署 适用场合 详细信息
MongoDB Atlas 希望简化数据库配置、操作、备份和还原时。 NI建议使用以下规则进行部署。
  • 使用专用的集群。
  • 确保每个副本具有4个CPU内核和32 GB内存。
  • 确保实例具有512 GB的存储空间。
  • 如果Kubernetes集群在云中运行,请将实例部署在同一云提供商的区域。
备注 您可以使用Atlas的功能来初始化较小的实例并根据需要进行自动扩展。设置限制以防止成本超出预算。
独立的MongoDB实例,例如MongoDB Enterprise Advanced 希望控制数据库及额外的企业级控制时。

NI建议使用以下规则进行部署。

  • 使用专用的集群。
  • 确保每个副本具有4个CPU内核和32 GB内存。
  • 确保实例具有512 GB的存储空间。
Helm chart中的MongoDB,例如Bitnami MongoDB chart
  • 希望数据库与SystemLink Enterprise安装在同一个Kubernetes集群中。
  • 您的组织可以轻松管理MongoDB实例。

您可以使用taint和toleration在现有Kubernetes工作程序节点或专用工作程序节点上运行该实例。

NI建议在部署时使用以下自定义设置。您可以调整请求和限制以适应Kubernetes工作程序节点上的其他Pod。
resources:
  requests:
    cpu: 4
    memory: 32Gi
  limits:
    memory: 32Gi

persistence:
  enabled: true
  accessModes:
    - ReadWriteOnce
  size: 512Gi
  annotations: {}