主页 2.1 Help

生产注意事项

内核设置

Linux 设置

查看

grep vm.max_map_count /etc/sysctl.conf vm.max_map_count=262144

临时

sysctl -w vm.max_map_count=262144

永久

vim /etc/sysctl.conf vm.max_map_count=262144

elasticsearch配置文件必须可供用户读取

elasticsearch默认情况下,Elasticsearch使用 uid:gid以用户身份在容器内运行1000:0 如果您要绑定挂载本地目录或文件,则用户必须可以读取它elasticsearch。 此外,此用户必须具有对配置、数据和日志目录的写访问权限 (Elasticsearch 需要对该config目录的写访问权限,以便它可以生成密钥库)。 一个好的策略是授予0本地目录的 gid 组访问权限。

mkdir esdatadir chmod g+rwx esdatadir chgrp 0 esdatadir

增加 nofile 和 nproc 的 ulimit

必须为 Elasticsearch 容器增加nofile和nproc的 ulimit 。验证 Docker 守护进程的init 系统是否将它们设置为可接受的值。

要检查 Docker 守护进程的 ulimits 默认值,请运行:

docker run --rm docker.elastic.co/elasticsearch/elasticsearch:8.13.4 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && ulimit -Su'

如果需要,请在守护进程中调整它们或按容器覆盖它们。例如,使用时docker run,设置:

--ulimit nofile=65535:65535

随机化已发布的端口

该图像公开 TCP 端口 9200 和 9300。对于生产集群,建议使用随机化发布的端口--publish-all,除非您在每个主机上固定一个容器。

手动设置堆大小

默认情况下,Elasticsearch 会根据节点的 角色和节点容器可用的总内存自动调整 JVM 堆的大小。
我们建议在大多数生产环境中使用此默认大小。如果需要,您可以通过手动设置 JVM 堆大小来覆盖默认大小。
要在生产中手动设置堆大小,请绑定安装包含所需堆大小设置的JVM 选项文件。
/usr/share/elasticsearch/config/jvm.options.d

为了进行测试,您还可以使用环境变量手动设置堆大小ES_JAVA_OPTS 。例如,要使用 1GB,请使用以下命令。

docker run -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e ENROLLMENT_TOKEN="<token>" --name es01 -p 9200:9200 --net elastic -it docker.elastic.co/elasticsearch/elasticsearch:8.13.4

该ES_JAVA_OPTS变量会覆盖所有其他 JVM 选项。我们不建议ES_JAVA_OPTS在生产中使用。

禁用所有交换文件

sudo swapoff -a

要永久禁用它,您需要编辑该/etc/fstab文件并注释掉所有包含单词 的行swap

Last modified: 04 June 2024