ElasticSearch安装文档

基于ElasticSearch 6.8版本的安装文档,通读安装和配置英文文档后总结。

– 2019-05-30:更新ElasticSearch 7.0节点发现配置更改

安装

安装前准备

磁盘、内存要求

建议考虑SSD作为存储,同时按照1:10的比例配置内存和硬盘。对于日志分析类查询并发要求较低的场景,可以考虑采用机械硬盘作为存储,同时按照1:50的比例配置内存和硬盘。单节点存储数据建议在2TB以内,最大不要超过5TB,避免查询速度慢、系统不稳定。

集群规划

集群中节点主要有四种角色:master,data,ingest和coordinate。

  • master节点负责集群的管理,和index的管理;
  • data节点负责数据的存储查询;
  • ingest节点负责数据的管道处理;
  • coordinate节点仅负责接收请求,诸如搜索请求或批量索引请求之类的请求可能涉及保存在不同数据节点上的数据。例如,搜索请求在两个阶段中执行,这两个阶段由接收到请求的协调节点完成。

集群规模较小时,可以一个节点同时兼具多种角色,建议至少2个master节点和2个ingest节点。集群规模较大时,可以配置独立的master节点,集群对管道处理的压力比较大时,可以配置独立的ingest节点。

安装ElasticSearch

创建用户

ElasticSearch生产环境下,由于es可以上传执行脚本,故es不允许以root身份运行,需要创建专门的用户。

1
2
groupadd elastic
useradd elastic -g elastic -p elastic123

修改系统配置

修改虚拟内存限制

以root权限修改配置 /etc/sysctl.conf添加下面配置:

1
vm.max_map_count=655360

执行命令sysctl -p使配置生效

修改文件描述符限制

以root权限,编辑/etc/security/limits.conf
添加如下内容:

1
2
elastic soft nofile 65536
elastic hard nofile 131072
修改进程数限制

执行ulimit -u 65536

禁用swap

swapoff -a

上传安装包,创建数据目录

官网下载tar.gz安装包,上传到服务器/home/elastic目录下,修改权限

1
chown -R elastic:elastic elasticsearch*.tar.gz

创建存储数据和日志使用的目录,并修改权限,示例:

1
2
3
4
mkdir -p /var/log/elasticsearch
chown -R elastic:elastic /var/log/elasticsearch
mkdir -p/var/data/elasticsearch
chown -R elastic:elastic /var/data/elasticsearch

切换到elastic用户su - eastic

之后所有的步骤都在改用户下执行

修改集群配置文件

解压tar包

tar -zxvf elasticsearch*.tar.gz

修改conf/elasticsearch.yml
  1. 修改基本信息

    1
    2
    3
    cluster.name: my-cluster
    node.name: node-1
    network.host: 192.168.112.10
    • cluster.name: 集群名称,具有相同集群名称的节点,会通过发现机制组成一个集群。
    • node.name: 当前节点的名称,一个集群内需要唯一
    • network.host: 绑定的ip,后续集群内节点的发现,和外部服务连接集群,均使用该ip。0.0.0.0时暴露给外网,默认127.0.0.1,建议修改为实际集群ip
  2. 配置节点类型

    1
    2
    3
    4
    node.master: true
    node.data: true
    node.ingest: true
    cluster.remote.connect: false
    • node.master: 是否作为master节点,默认true
    • node.data: 是否作为data节点,默认true
    • node.ingest: 是否作为ingest节点,默认true
    • cluster.remote.connect: 是否允许跨集群搜索,默认true
    • node.master,node.data,node.ingest全部为false,则节点为coordinate节点
  3. 集群发现配置

    1
    2
    3
    4
    5
    discovery.zen.ping.unicast.hosts: 
    - 192.168.1.10:9300
    - 192.168.1.11
    - seeds.mydomain.com
    discovery.zen.minimum_master_nodes: 2

    discovery.zen.ping.unicast.hosts: 设置发现集群中master节点的ip,端口不设定默认扫描9300-9305端口
    discovery.zen.minimum_master_nodes设定为:(master节点数/2)+1

    该参数的含义为集群正常运行,需要正常运行的的master节点的最小值。建议设置三个master且该值为2即可

    注意:master节点的含义是“具有被选举为master资格”的节点,elasticsearch通过内部的选举机制,从node.master为true的节点中,选取一个节点作为master节点。

  4. 配置数据目录

    1
    2
    3
    path:
    logs: /var/log/elasticsearch
    data: /var/data/elasticsearch

    注意数据目录的用户权限!

7.0更新

elasticserch 7.0开始,上述配置修改为如下配置项

1
2
3
4
5
6
7
8
discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11
   - seeds.mydomain.com
cluster.initial_master_nodes:
   - master-node-a
   - master-node-b
   - master-node-c

discovery.seed_hosts:代替discovery.zen.ping.unicast.hosts

cluster.initial_master_nodes:第一次启动集群时,参与选举的master节点,内容是节点名,未设置节点名则为主机名

discovery.seed_providers取代discovery.zen.hosts_provider(这两个配置不需要使用)

修改JVM设置

配置文件位置config/jvm.options
配置格式

1
2
3
4
- -Xmx2g
- 8:-Xmx2g
- 8-:-Xmx2g
- 8-9:-Xmx2g

重要配置:

  • -Xmx2g
  • -Xms2g
  • -XX:HeapDumpPath

Xmx最大堆内存,建议设置为至少物理机一半的内存,但是不建议超过31G。
Xms最小堆内存,可以设置的与xms相同

启动ElasticSearch

执行./bin/elasticsearch -d -p pid启动

./bin/elasticsearch的参数:
-E keyvalue pair
-d 后台启动
-p 将pid写入到文件
停止时,在elasticsearch的解压目录运行pkill -F pid

3 卸载

在elasticsearch的解压目录运行pkill -F pid停止所有实例
删除数据目录即可。

扩容

运行一个新的ElasticSearch实例,参考第二章节配置,启动实例。

如果新增的节点为master节点,需要修改已有实例的2.4.2中节点发现章节中以下配置:

1
2
3
discovery.zen.ping.unicast.hosts

discovery.zen.minimum_master_nodes

ES 7.0+需要修改下述配置

1
discovery.seed_hosts

重启修改的实例

安装遇到问题

1-2 是单机下不会提示的,当使用集群时,es会认为进入生产模式,会check一些要求,更多信息参考官网文档。

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方法:
以root权限修改配置 /etc/sysctl.conf添加下面配置:
vm.max_map_count=655360
执行命令:sysctl -p
重新启动elasticsearch,即可启动成功。

max file descriptors [10240] for elasticsearch process is too low, increase to at least [65536]

解决方法:
以root权限,编辑/etc/security/limits.conf
添加如下内容:

1
2
$user soft nofile 65536
$user hard nofile 131072

failed to send join request to master

由于是复制的之前已经启动的单节点集群,data目录下已经有数据导致的,删除数据即可

参考

  1. 配置参考官网文档 :Getting Started、Set Up ElasticSearch、Modules三个模块
  2. 脑裂split-brain:介绍脑裂现象,和不同节点类型
Song wechat
扫一扫,关注微信公众号,订阅我的博客
扫码领红包,支持走一波