插件即服务
2.19 版本引入
为扩展核心功能,OpenSearch 使用了插件,这些插件有以下几点限制:
- 它们与集群在同一个 JVM 中运行,共享存储、内存和状态。
- 它们需要严格的版本兼容性。
- 它们被限制在单个租户中。
为解决这些挑战,您可以使用*远程元数据 SDK 客户端*,该客户端通过外部数据存储(如远程 OpenSearch 集群或云存储服务)实现无状态 OpenSearch 插件。使用该客户端可以提高可伸缩性,使插件更适应大型工作负载。有关该客户端的更多信息,请参阅 SDK 客户端仓库。
远程元数据存储
远程元数据存储允许 OpenSearch 插件通过使用外部存储解决方案,以无状态方式运行,而不依赖于本地 JVM 或集群资源。插件可以将元数据存储在远程位置,例如其他 OpenSearch 集群或云存储服务,而不是将其存储在 OpenSearch 集群中。这种方法提高了可伸缩性,减少了资源争用,并使插件能够独立于核心 OpenSearch 集群运行。
远程元数据存储提供以下优势:
- 可伸缩性:将元数据存储卸载到外部系统可减少 OpenSearch 集群的内存和 CPU 使用率。
- 多租户支持:基于租户的存储分离使云提供商能够提供更灵活的插件解决方案,使用租户 ID 逻辑分离资源。
支持的存储后端
远程元数据存储可配置为使用以下外部后端:
- 远程 OpenSearch 集群
- Amazon DynamoDB
启用多租户
要启用插件中的多租户,请更新以下静态设置。更新后,重启集群以使更改生效。有关更新设置的更多信息,请参阅 配置 OpenSearch。
多租户设置
下表列出了多租户设置。
设置 | 数据类型 | 描述 |
---|---|---|
multi_tenancy_enabled | 布尔型 | 为插件启用多租户。 |
远程元数据存储设置
下表列出了与远程元数据存储配置相关的设置。
设置 | 数据类型 | 描述 |
---|---|---|
remote_metadata_type | 字符串 | 远程元数据存储类型。有效值为 - RemoteOpenSearch :与 OpenSearch Java 客户端兼容的远程 OpenSearch 集群。- AWSDynamoDB :Amazon DynamoDB,具有到 OpenSearch 的零 ETL 复制。- AWSOpenSearchService :使用 AWS SDK v2 的 Amazon OpenSearch Service。 |
remote_metadata_endpoint | 字符串 | 远程元数据端点 URL。 |
remote_metadata_region | 字符串 | 存储元数据的 AWS 区域。 |
remote_metadata_service_name | 字符串 | 远程元数据服务名称。 |
示例
以下配置通过远程 OpenSearch 集群启用多租户:
plugins.<plugin_name>.multi_tenancy_enabled: true
plugins.<plugin_name>.remote_metadata_type: "opensearch"
plugins.<plugin_name>.remote_metadata_endpoint: "https://remote-store.example.com"
plugins.<plugin_name>.remote_metadata_region: "us-west-2"
plugins.<plugin_name>.remote_metadata_service_name: "remote-store-service"
支持的插件
OpenSearch 支持以下插件的多租户。
ML Commons
ML Commons 插件支持以下组件的多租户:
以下示例为 ML Commons 插件配置多租户:
plugins.ml_commons.multi_tenancy_enabled: true
plugins.ml_commons.remote_metadata_type: AWSDynamoDB
plugins.ml_commons.remote_metadata_endpoint: <REMOTE_ENDPOINT>
plugins.ml_commons.remote_metadata_region: <AWS_REGION>
plugins.ml_commons.remote_metadata_service_name: <SERVICE_NAME>
Flow Framework
以下示例为 Flow Framework 插件配置多租户:
plugins.flow_framework.multi_tenancy_enabled: true
plugins.flow_framework.remote_metadata_type: AWSDynamoDB
plugins.flow_framework.remote_metadata_endpoint: <REMOTE_ENDPOINT>
plugins.flow_framework.remote_metadata_region: <AWS_REGION>
plugins.flow_framework.remote_metadata_service_name: <SERVICE_NAME>