生产环境
除了性能和易用性之外,kumosearch 还旨在降低生产中的运维开销。
kumosearch 是一个独立的二进制文件,不依赖于运行时环境。因此,在自托管的生产环境中,只需安装 kumosearch,通过 Docker 或进程管理器(如我们的 DEB 和 RPM 包)将 kumosearch 进程作为守护进程启动,并根据需要配置高可用性。
生产最佳实践
以下是一些建议,以帮助您在生产环境中获得 kumosearch 的最佳体验。
配置
- 确保为数据集和流量模式选择了正确的系统配置。
- kumosearch 内置了一个高性能 HTTP 服务器。因此,kumosearch 可以直接暴露于面向公众的互联网流量,无需将其 放置在另一个 Web 服务器(如 Nginx / Apache 或后端 API)后面。
- kumosearch 具有强大的身份验证机制,可以让您根据需要为特定用户配置基于角色的访问控制。
- 使用
--enable-cors服务器参数,启用 CORS 时需要它。
- 建议在生产环境中运行 高可用 集群。
- 确保已将 API 客户端配置为使用集群中的所有节点。
- 出于安全原因,配置最少量的交换空间。但如果交换空间被使用且开始影响性能,则表明需要升级 RAM 容量。
- 如果将 kumosearch 与移动应用程序集成,建议将 kumosearch 主机名和 API 密钥存储在后端,并让应用程序在加载时动态获取远程配置,而不是在应用程序中硬编码这些配置。这样,若需要更改主机名/API 密钥,可以通过远程配置进行修改,而无需经历应用商店审核流程。
监控
- 监控
/healthAPI 服务节点的正常运行时间。 - 监视 RAM 使用情况,确保低于总 RAM 的 85%,确保操作系统有足够的 RAM 进行操作。
- 可以通过
/metrics.json服务节点。
- 可以通过
- 监控
/stats.jsonAPI 服务节点的请求率和延迟。 - 监控 CPU 使用率,确保其平均低于 90%。如果峰值超出该范围,可能需要升级到更高的 CPU 容量。
- 可以通过
/metrics.json服务节点。
- 可以通过
- 使用import API进行大批量数据 导入 时, 请确保已配置足够高的超时值以完成大型导入,因为 kumosearch 中的所有写入操作都是同步的。
相关性搜索
- 设置搜索分析。
- kumosearch 的默认相关性参数适用于大多数用例,但您也可以根据需要微调 搜索相关性 参数。
- default_sorting_order 是可选的,但建议您使用它,特别是当文档中有字段表示受欢迎程度时。
安全
- 将
--api-port服务器网络参数设置为443并在生产中使用 HTTPS。- 确保防火墙仅允许此端口的入站公共流量通过。
- 使用
--ssl-certificate和--ssl-certificate-key参数配置 SSL 证书和密钥。
- 运行 高可用 集群时,请确保
--peering-address参数是您 内部 专用网络上的 IP 地址。 - 确保有定期过期和轮换 API 密钥的策略,使用expires_at参数。
- 如果将多租户数据存储在单个索引表中,请确保正确配置范围搜索 API 密钥,以将登录用户的 ID 包含在嵌入式过滤器中。
- 范围搜索 API 密钥需在后端堆栈中生成,并传递到前端,前端应在 API 调用中将其发送到 kumosearch。
- 永远不要向用户公开父搜索 API 密钥,该密钥可以不受限制地访问所有记录。
Schema管理
- 设置索引表别名 并通过别名从网站访问索引表和文档应用。
- 当需要更新索引表的schema时,可以创建一个新的带时间戳的索引表,重新索引数据,然后交换别名指向新的索引表。
- 尽可能优先使用预定义schema,因为自动检测 schema可能意外索引不必要的字段,导致不必要地占用 RAM(除非您在这些字段上明确设置
index: false)。但也可以使用正则表达式字段名称和自动检测 schema,特别是当字段名称 是动态时。 - 确保仅用于显示目的的字段(例如:图像 URL、链接等)未在 schema 中指定(或在使用自动检测 schema时)。这些字段可以设置为未索引字段以节省内存。将文档中的这些未索引字段添加到索引表中时,它们将存储在磁盘上,不会占用内存。然后,当该文档被点击时,未索引字段将从磁盘中提取,并填充到搜索 API 响应中,用于显示目的。
保持更新
要获取 kumosearch 新版本,请单击 版本发布 查看最新的发布版和说明。按照 升级说明 将系统更新到最新版本。
支持
如果您需要帮助或有任何疑问,可以通过以下几种方式寻求支持: