Elasticsearch 是一个开源的分布式 RESTful 搜索和分析引擎,具有现代、快速、分布式、可扩展、容错等优点。Elasticsearch 借助了 Apache Lucene 的能力,让你拥有更强的把控力,可以索引海量数据,并进行搜索。
一. 环境准备
- 创建用户和组
Elasticsearch 5 版本开始,出于系统安全考虑设置,不再允许直接使用 root 用户启动了,会报 can not run elasticsearch as root 异常信息,所以需要将 Elasticsearch 启动在普通用户下,且为了环境隔离,最好为 Elasticsearch 单独创建一个独立的用户,譬如 elsearch,用户名可自定义。使用root用户进行以下操作
useradd elsearch
passwd elsearch 密码根据要求定义
2. 关闭防火墙
执行关闭防火墙命令和禁止firewall开机启动命令。
systemctl stop firewalld & systemctl disable firewalld
执行firewall-cmd --state命令检查防火墙是否关闭。
屏幕出现如下信息表明防火墙成功关闭。
not running
3.环境变量
服务器无网情况下,可以忽略该步骤,配置了也没用。。。
无网情况下,需要安装本地JDK,否则,ES服务启动时,会报错,尽量使用更高版本。
为 elsearch 用户配置 Elasticsearch 配置环境变量。切换到 elsearch 用户下,编辑打开用户环境变量文件:vi ~/.bashrc
ES_HOME=/usr/local/elasticsearch/elasticsearch-7.14.1
PATH=$PATH:$ES_HOME/bin
根据安装的实际情况,将上面两句追加到文件末尾
4. 资源限制
4.1.最大线程数
一般在 Linux 系统的默认情况下,系统普通用户可以创建的线程数是 1024 个,此处应确保 elsearch 用户可以创建的线程数至少为 2048 个。可用如下方式设置:
vi /etc/security/limits.d/90-nproc.conf
在打开的文件新行中追加如下内容:
elsearch soft nproc 4096
如果未修改该配置,启动时将会报形如下述内容的异常信息:
max number of threads [1024] for user [elsearch] likely too low, increase to at least [4096]
4.2 打开的文件数与线程数
vi /etc/security/limits.conf
在打开的文件新行中追加如下内容:
elsearch soft nofile 65536
elsearch hard nofile 131072
elsearch soft nproc 4096
elsearch hard nproc 4096
注意:此处的 elsearch 与上述创建的用户名对应。
如果未修改该配置,启动时将会报形如下述内容的异常信息:
node validation exception bootstrap checks failed
4.3 系统控制文件
Elasticsearch 默认使用 mmapfs 目录存储索引,而 Linux 默认对 mmap 计数限制可能太低,会导致内存异常。系统控制文件是管理系统中的各种资源控制的配置文件,ES 需要开辟一个 65536 字节以上空间的虚拟内存,但 Linux 又不允许任何用户直接开辟虚拟内存,所以通过如下方式修改:
vi /etc/sysctl.conf
在打开的文件新行中增加如下内容:
vm.max_map_count=655360
再执行 sysctl -p 命令使其生效。