Link Search Menu Expand Document Documentation Menu

安装 OpenSearch

本节提供关于如何在主机上安装 OpenSearch 的信息,包括要打开的端口以及要在主机上配置的重要设置

有关操作系统兼容性,请参阅兼容的操作系统

文件系统建议

在生产工作流中,避免将网络文件系统用于节点存储。将网络文件系统用于节点存储可能会因为网络条件(如延迟或有限吞吐量)或读写速度等因素导致集群性能问题。在可能的情况下,应使用安装在主机上的固态硬盘 (SSD) 进行节点存储。

Java 兼容性

适用于 Linux 的 OpenSearch 发行版在 jdk 目录中附带了一个兼容的 Adoptium JDK 版本的 Java。要查找 JDK 版本,请运行 ./jdk/bin/java -version。例如,OpenSearch 1.0.0 tarball 附带 Java 15.0.1+9 (非 LTS),OpenSearch 1.3.0 附带 Java 11.0.14.1+1 (LTS),OpenSearch 2.0.0 附带 Java 17.0.2+8 (LTS)。OpenSearch 已通过所有兼容的 Java 版本进行测试。

OpenSearch 版本 兼容的 Java 版本 捆绑的 Java 版本
1.0–1.2.x 11, 15 15.0.1+9
1.3.x 8, 11, 14 11.0.25+9
2.0.0–2.11.x 11, 17 17.0.2+8
2.12.0+ 11, 17, 21 21.0.5+11

要使用不同的 Java 安装,请将 OPENSEARCH_JAVA_HOMEJAVA_HOME 环境变量设置为 Java 安装位置。例如

export OPENSEARCH_JAVA_HOME=/path/to/opensearch-3.1.0/jdk

网络要求

OpenSearch 组件需要打开以下端口。

端口号 OpenSearch 组件
443 AWS OpenSearch Service 中使用传输加密 (TLS) 的 OpenSearch Dashboards
5601 OpenSearch Dashboards
9200 OpenSearch REST API
9300 节点通信和传输(内部),跨集群搜索
9600 性能分析器

重要设置

对于生产工作负载,请确保 Linux 设置 vm.max_map_count 至少设置为 262144。即使您使用 Docker 镜像,也请在主机上设置此值。要检查当前值,请运行此命令

cat /proc/sys/vm/max_map_count

要增加该值,请将以下行添加到 /etc/sysctl.conf

vm.max_map_count=262144

然后运行 sudo sysctl -p 重新加载。

对于 Windows 工作负载,您可以通过运行以下命令设置 vm.max_map_count

wsl -d docker-desktop
sysctl -w vm.max_map_count=262144

示例 docker-compose.yml 文件还包含几个关键设置

  • bootstrap.memory_lock=true

    禁用交换(以及 memlock)。交换会显著降低性能和稳定性,因此您应确保在生产集群上禁用它。

    启用 bootstrap.memory_lock 设置将导致 JVM 保留其所需的任何内存。Java SE Hotspot VM 垃圾回收调优指南中记载了默认 1 GB(千兆字节)的类元数据原生内存保留。结合 Java 堆,这可能导致内存少于这些要求的虚拟机出现原生内存不足的错误。为防止错误,请使用 -XX:CompressedClassSpaceSize-XX:MaxMetaspaceSize 限制保留内存大小,并设置 Java 堆大小以确保您有足够的系统内存。

  • OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m

    设置 Java 堆的大小(建议为系统 RAM 的一半)。

OpenSearch 默认将堆内存分配设置为 -Xms1g -Xmx1g,这优先于使用百分比表示法(-XX:MinRAMPercentage-XX:MaxRAMPercentage)指定的配置。例如,如果您设置 OPENSEARCH_JAVA_OPTS=-XX:MinRAMPercentage=30 -XX:MaxRAMPercentage=70,预定义的 -Xms1g -Xmx1g 值将覆盖这些设置。当使用 OPENSEARCH_JAVA_OPTS 定义内存分配时,请确保使用 -Xms-Xmx 表示法。

  • nofile 65536

    为 OpenSearch 用户设置 65536 个打开文件的限制。

  • port 9600

    允许您通过端口 9600 访问性能分析器。

不要在多个位置声明相同的 JVM 选项,因为这可能导致意外行为或 OpenSearch 服务启动失败。如果您使用环境变量(例如 OPENSEARCH_JAVA_OPTS=-Xms3g -Xmx3g)声明 JVM 选项,则应注释掉 config/jvm.options 中对该 JVM 选项的任何引用。反之,如果您在 config/jvm.options 中定义 JVM 选项,则不应使用环境变量定义这些 JVM 选项。

重要系统属性

OpenSearch 有许多系统属性,如下表所示,您可以在 config/jvm.optionsOPENSEARCH_JAVA_OPTS 中使用 -D 命令行参数表示法指定这些属性。

属性 描述
opensearch.xcontent.string.length.max=<value> 默认情况下,OpenSearch 对 JSON/YAML/CBOR/Smile 字符串字段的最大长度没有限制。为保护您的集群免受潜在的分布式拒绝服务 (DDoS) 或内存问题的影响,您可以将 opensearch.xcontent.string.length.max 系统属性设置为一个合理的限制(最大值为 2,147,483,647),例如,-Dopensearch.xcontent.string.length.max=5000000
opensearch.xcontent.fast_double_writer=[true|false] 默认情况下,OpenSearch 使用 Java 运行时环境提供的默认实现序列化浮点数。将此值设置为 true 以使用 Schubfach 算法,该算法速度更快,但可能导致精度上微小差异。默认值为 false
opensearch.xcontent.name.length.max=<value> 默认情况下,OpenSearch 对 JSON/YAML/CBOR/Smile 字段名称的最大长度没有限制。为保护您的集群免受潜在的 DDoS 或内存问题的影响,您可以将 opensearch.xcontent.name.length.max 系统属性设置为一个合理的限制(最大值为 2,147,483,647),例如,-Dopensearch.xcontent.name.length.max=50000
opensearch.xcontent.depth.max=<value> 默认情况下,OpenSearch 对 JSON/YAML/CBOR/Smile 文档的最大嵌套深度没有限制。为保护您的集群免受潜在的 DDoS 或内存问题的影响,您可以将 opensearch.xcontent.depth.max 系统属性设置为一个合理的限制(最大值为 2,147,483,647),例如,-Dopensearch.xcontent.depth.max=1000
opensearch.xcontent.codepoint.max=<value> 默认情况下,OpenSearch 对 YAML 文档的最大大小(以代码点为单位)施加了 52428800 的限制。为了保护您的集群免受潜在的 DDoS 或内存问题的影响,您可以将 opensearch.xcontent.codepoint.max 系统属性更改为一个合理的限制(最大值为 2,147,483,647)。例如,-Dopensearch.xcontent.codepoint.max=5000000

相关文章

剩余 350 字符

有问题?

想要贡献吗?