环境准备
- Elasticsearch 7.5需要Java 11的环境依赖
- Elasticsearch 7.5的安装包中,已经打包了一个编译好的OpenJDK(Elasticsearch 7.5.1对应版本是openjdk 13.0.1 2019-10-15)
- 如需要使用本地的Java(LTS版本),也可以修改JAVA_HOME的环境变量,同时删除安装包中已打包好的JVM目录;或增加ES的Java环境变量,并修改启动脚本
- 测试环境:腾讯云CVM
安装
- 下载安装包并解压 根据相应的操作系统版本,下载安装包
1 |
|
- 不修改任何配置,从命令行以非root用户启动Elasticsearch
1 |
|
- 检查Elasticsearch状态
1 |
|
启动常见问题及解决办法
以root用户启动报错
1 |
|
从上面的报错信息可以看到是以 root 用户启动 elasticsearch 引起的,需要新增一个用户,并把 elasticsearch-7.5.2 目录的权限赋予该用户
1 |
|
增加完用户后,切换到该用户,并进入到 elasticsearch-7.5.1 目录,再次启动 elasticsearch
bootstrap checks失败
-
开发环境
如果在es的配置中没有配置network.host来指定一个可用的IP地址的话,默认情况下,就绑定到localhost上,此时es会认为用户只是在开发环境下使用es,基于开箱即用的原则,虽然es此时也会进行bootstrap checks,来检查用户的配置是否与es设定的安全值相匹配,如下:
- 如果匹配,则不会有warnning信息,此时es正常启动;
- 如果不匹配,则会有warnning信息,但因为是开发环境,es依然会正常启动;
-
生产环境
一旦用户配置了network.host来指定一个可用的非loopback地址,那么es就会认为用户此时是在生产环境下启动es,同样会进行检查,但一旦检查不通过,直接会将前面的warnning提升为error,所以此时es会启动失败。
1 |
|
修改最大文件描述符数量
可通过命令 ulimit -n 查看当前的最大文件描述符数量
- 临时修改
1 |
|
- 永久修改 修改 /etc/security/limits.conf 配置
1 |
|
修改最大线程数量
可通过命令 ulimit -u 查看当前的最大线程数量
- 临时修改
1 |
|
- 永久修改 修改 /etc/security/limits.conf 配置
1 |
|
修改最大虚拟内存容量
可通过命令 sysctl vm.max_map_count 查看当前的最大线程数量
- 临时修改
1 |
|
- 永久修改(重启系统后才生效)
修改 /etc/sysctl.conf 配置
1 |
|
修改节点中的配置文件
- discovery.seed_hosts
如果要在其他主机上形成包含节点的群集,则必须使用discovery.seed_hosts设置提供群集中其他节点的列表,这些节点符合主要条件且可能是实时且可联系的,以便为发现过程设定种子。 此设置通常应包含群集中所有符合主节点的节点的地址。 此设置包含主机数组或逗号分隔的字符串。 每个值应采用host:port或host的形式(其中port默认为设置transport.profiles.default.port,如果未设置则返回transport.port)。 请注意,必须将IPv6主机置于括号内。 此设置的默认值为127.0.0.1,[:: 1]。
IPv6的回环地址是 0:0:0:0:0:0:0:1,简写成 ::1。 IPv4的回环地址是 127.0.0.1 。针对单机的应用,可以使用默认的配置 [“127.0.0.1”, “[::1]”] ,针对生产环境,根据实际的主机IP和端口来配置。
- cluster.initial_master_nodes
在生产模式下启动全新集群时,必须明确列出符合条件的节点的名称或IP地址,这些节点的投票应在第一次选举中计算。 使用cluster.initial_master_nodes设置设置此列表