MongoDB 配置组

Launchpad Blueprint: https://blueprints.launchpad.net/trove/+spec/mongodb-configuration-groups

问题描述

MongoDB guestagent 目前不支持配置组。

提议的变更

补丁集将为 MongoDB 2.6 及更高版本实现配置组。

MongoDB 2.6 及更高版本将其配置 1 存储在 YAML 格式的 ‘mongod.conf’ 文件中。为了使对配置文件所做的任何更改生效,必须重新启动数据库服务。因此,所有配置更改都需要数据库重启,并且 ‘apply_overrides’ 将被实现为无操作。

覆盖将通过用更新的文件替换当前文件来实现。旧文件将在同一目录中备份(作为 *.old),并在配置重置时恢复。

平台默认配置文件将用作我们的配置模板的基础。将提供暴露配置属性的 guest agent 接口,以便其他模块(如备份和复制)使用。

大多数配置属性将通过配置组可用。然而,有些在 Trove 环境下没有意义。

这些将包括

  • 无关选项(例如自动快照,因为 Trove 用户无法检索它们)

  • guestagent 特定的选项(例如文件路径、密码)

  • Trove 需要控制的项目(复制/集群属性)

请参阅 可用配置属性 以获取支持的选项的完整列表。

用户应该能够将配置属性指定为标准的 Python YAML 对象 - 键值对和字典。

可用配置属性

未包含在列表中的键将保留其默认值,并且不能通过 Trove 进行配置。有关更多详细信息和默认值,请参阅 1

用户可以通过 Trove API 配置的属性

  • systemLog.verbosity

  • systemLog.component.accessControl.verbosity

  • systemLog.component.command.verbosity

  • systemLog.component.control.verbosity

  • systemLog.component.geo.verbosity

  • systemLog.component.index.verbosity

  • systemLog.component.network.verbosity

  • systemLog.component.query.verbosity

  • systemLog.component.replication.verbosity

  • systemLog.component.sharding.verbosity

  • systemLog.component.storage.verbosity

  • systemLog.component.storage.journal.verbosity

  • systemLog.component.write.verbosity

  • systemLog.quiet

  • systemLog.traceAllExceptions

  • systemLog.logAppend

  • systemLog.logRotate

  • systemLog.timeStampFormat

  • net.maxIncomingConnections

  • net.wireObjectCheck

  • net.unixDomainSocket.enabled

  • net.ipv6

  • net.http.enabled

  • net.http.JSONPEnabled

  • net.http.RESTInterfaceEnabled

  • security.sasl.hostName

  • security.sasl.serviceName

  • security.sasl.saslauthdSocketPath

  • security.javascriptEnabled

  • operationProfiling.slowOpThresholdMs

  • operationProfiling.mode

  • storage.indexBuildRetry

  • storage.journal.enabled

  • storage.directoryPerDB

  • storage.syncPeriodSecs

  • storage.engine

  • storage.mmapv1.nsSize

  • storage.mmapv1.quota.enforced

  • storage.mmapv1.quota.maxFilesPerDB

  • storage.mmapv1.smallFiles

  • storage.mmapv1.journal.debugFlags

  • storage.mmapv1.journal.commitIntervalMs

  • storage.wiredTiger.engineConfig.cacheSizeGB

  • storage.wiredTiger.engineConfig.statisticsLogDelaySecs

  • storage.wiredTiger.engineConfig.journalCompressor

  • storage.wiredTiger.engineConfig.directoryForIndexes

  • storage.wiredTiger.collectionConfig.blockCompressor

  • storage.wiredTiger.indexConfig.prefixCompression

  • replication.oplogSizeMB

  • replication.secondaryIndexPrefetch

  • sharding.clusterRole

  • auditLog.format

  • auditLog.filter

  • snmp.subagent

  • snmp.master

  • replication.localPingThresholdMs

  • sharding.autoSplit

  • sharding.configDB

  • sharding.chunkSize

  • setParameter

不可配置的属性,具有更新后的默认值

  • systemLog.path (由 guestagent 控制)

  • systemLog.destination file

  • processManagement.pidFilePath (由 guestagent 控制)

  • processManagement.fork True

  • security.keyFile (由复制控制)

  • security.clusterAuthMode (keyFile)

  • security.authorization True

  • storage.dbPath (由 guestagent 控制)

  • replication.replSetName (由复制控制)

  • sharding.archiveMovedChunks False

  • auditLog.destination file

  • auditLog.path (由 guestagent 控制)

配置

数据库

公共 API

公共 API 安全

Python API

无 (合并后添加的空部分)

CLI (python-troveclient)

无 (合并后添加的空部分)

内部 API

CLI (python-troveclient)

这项工作将启用以下客户端命令

  • configuration-attach

  • configuration-create

  • configuration-default

  • configuration-delete

  • configuration-detach

  • configuration-instances

  • configuration-list

  • configuration-parameter-list

  • configuration-parameter-show

  • configuration-patch

  • configuration-show

  • configuration-update

Guest Agent

  • 更新设施,用于处理 operating_system 模块中的 YAML 配置文件。

  • managerservice 模块中实现 API 以 update_overrides

  • 当前的配置模板将更新为目标平台的默认版本,更改将在 可用配置属性 中注明。

将更新以下现有文件

guestagent/datastore/experimental/mongodb/manager.py
guestagent/datastore/experimental/mongodb/service.py
templates/mongodb/config.template

备选方案

实现

负责人

Petr Malik <pmalik@tesora.com>

里程碑

Liberty

工作项

  1. 实现处理(读取/写入/更新)MongoDB YAML 配置文件的功能。

  2. 实现与配置相关的 manager API 调用。

    def update_overrides(self, context, overrides, remove=False)
    def apply_overrides(self, context, overrides) [no-op]
    

升级影响

依赖项

测试

将添加单元测试以验证已实现的功能和非平凡的代码路径。将添加相关的集成测试。

文档影响

数据存储文档应更新以反映启用的功能。