首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ElasticSearch生产环境中的部署和配置

1. 安装部署

当前ES最低要求jdk8。可以到Oracle JDK官网下载。生产环境下建议在Linux系统中,通过tar或者docker方式部署,下文中以Linux环境中通过tar包方式部署进行说明。

ES默认要求使用非root用户启动,为了不和系统中其他服务冲突,建议新建用户。以下的配置过程是在系统中增加elasticsearch用户,并通过该用户登录系统进行配置。

下载tar格式的JDK和ES安装包(当前版本为elasticsearch-6.2.4)并解压。为用户配置环境变量JAVA_HOME并在当前shell中生效。

执行 cd elasticsearch-6.2.4 && ./bin/elasticsearch 在前台启动ES服务, 如果需要后台启动,可以执行 ./elasticsearch -d 命令。

2. 常规配置

ES的配置主要分为操作系统相关的配置和ES服务自身的配置两部分,本文将根据自身的实践经验进行说明,正如《ElasticSearch权威指南》中所说,ElaticSearch中并不存在一些能够大幅度提高性能的Magic Configuration,通过正确的常规配置就可以满足大部分生产环境的需求。当然,根据具体情况不同,在具体配置和使用中还是有不同的技巧可用的。

ES的部分配置项可以在启动的过程中通过增加参数-E=的方式实现,但是为了部署和后期维护方便,建议尽可能将配置项写入配置文件elasticsearch.yml中。

2.1 ES的配置

1. 配置文件位置:ES配置文件的位置位于$ES_HOME/conf目录下,可以通过环境变量ES_PATH_CONF指定该位置。之前的版本中通过在启动参数中添加path.conf参数指定配置文件目录的做法在当前版本中已不再适用。

2. 配置文件格式:ES配置文件为YAML格式,可以在其中通过${...}的方式使用系统环境变量,以下具体配置项中会有说明。至于"Prompting for settings"的配置方式仅在个人开发环境中使用过,在生产环境中从未使用过这种形式的配置。

3. 关键配置项:

1)path.data, path.logs: ES的数据存放目录和ES的日志存放目录,建议为path.data配置多个单独的磁盘挂载目录,以增大I/O,如 path.data: /mnt/disk1/elasticsearch,/mnt/disk2/elasticsearch 其中/mnt/disk1和/mnt/disk2分别挂载不同硬盘。

2)cluster.name: ES节点通过改配置项确定加入哪一个集群,所以同一集群中的节点,该配置必须一致。

3)node.name: 该配置项默认为一个UUID,为便于区分节点,建议配置为系统的HOSTNAME,当一台服务器中启动多个实例时,可以配置为 node.name: $-1,通过不同实例id来区分。

4)network.host: ES进程启动过程中通过该配置项检查是否为生产环境,如果不进行配置、使用localhost或者127.0.0.1,ES启动过程中会认为是在开发环境中启动进程,不会对一些配置参数进行检查。在生产环境中,该配置项的值对外提供服务的IP,如果配置过/etc/hosts文件,并且和系统的hostname对应,可以配置为 network.host: $,以便使全局配置文件保持一致,便于部署。在多网卡且未进行网卡绑定的情况下,如果不需要限定提供服务的IP,可以配置 network.host: 0.0.0.0。

7) node.master, node.data: 节点角色,当node.master为true时,提供master管理服务,当node.data为true时,提供数据索引、存储服务,可以同时为true,当同时为false时,提供client服务,可以作为外部访问的节点。在ES 5.x版本中建议配置该节点,在该版本的集群中,如果单个搜索请求涉及的索引数量较多,会出现请求节点抛出异常,节点ES进程结束的现象,如果是master或data节点提供对外访问,则会出现集群不稳定或需要恢复数据的情况,如果是client节点异常退出则不会影响集群稳定性,尤其是在client配置了HA的情况下,也不会影响对外服务。

8)对于ES对外提供服务的端口,不建议调整其配置。

9)gateway.recover_after_time, gateway.recover_after_nodes, gateway.recover_after_data_nodes, gateway.recover_after_master_nodes: 用于集群恢复的配置,如果配置了这些参数,在集群启动或重启的过程中,当master数量、data节点数量、集群节点总数三个配置中任一条件不满足配置时,集群为red状态,不能进行数据恢复,也不能提供搜索服务。当同时满足这些条件且达不到以下expected的配置时,需要等待recover_after_time所配置的时间,然后启动数据恢复。该nodes参数越大,重启过程中启动数据恢复需要的节点数量越多,需要进行的数据复制和重建越少,集群所需恢复时间也就越少,但是如果该参数配置过大,在集群部分节点无法提供服务的情况下,会造成集群不可用的情况,在不能停机的情况下需要通过REST API设置该参数。

10)gateway.expected_nodes, gateway.expected_data_nodes, gateway.expected_master_nodes, 通上一个参数一样,对集群重启和恢复有影响,当集群中节点数量满足这些配置时,不需要等待,立刻进行数据恢复。所以expected配置的值要求大于after的值,个人尚未尝试过expected

11)bootstrap.memory_lock: 和jvm.optins中的-Xms -Xmx以及部分操作系统参数一起,影响ES进程占用的内存,在生产环境中该项配置为true。

12)以上配置项都位于elasticsearch.yml文件中,jvm.optins文件中-Xms和-Xmx参数影响ES进程占用的内存,对于大多数系统可以配置为26g,最大不要超过30g。

2.2 操作系统的配置

1. 增加用户可用系统资源: 对于CentOS或者RHEL系统,在/etc/security/limits.conf文件中增加 elasticsearch - nofile 65536, elasticsearch - nproc 4096。

2. 关闭交换分区:执行 sudo swapoff -a,注释掉/etc/fstab中有swap的一行,或者在/etc/sysctl.conf中添加 vm.swappiness=1。

3. 虚拟内存的配置:执行 sysctl -w vm.max_map_count=262144,并在/etc/sysctl.conf中添加 vm.max_map_count=262144。

3. ES在启动过程中会根据不同的配置情况进行检查,具体情况会在之后进行整理。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180519G1JKUP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券