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 配置文件。
在 manager 和 service 模块中实现 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
工作项¶
实现处理(读取/写入/更新)MongoDB YAML 配置文件的功能。
实现与配置相关的 manager API 调用。
def update_overrides(self, context, overrides, remove=False) def apply_overrides(self, context, overrides) [no-op]
升级影响¶
无
依赖项¶
无
测试¶
将添加单元测试以验证已实现的功能和非平凡的代码路径。将添加相关的集成测试。
文档影响¶
数据存储文档应更新以反映启用的功能。
参考资料¶
- 1(1,2)
MongoDB 配置文档:http://docs.mongodb.org/manual/reference/configuration-options/