二、Elasticsearch安装及配置-Set up Elasticsearch

一、概述

本篇参考链接:
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup.html
es各个版本所支持的操作系统清单见下面链接:
https://www.elastic.co/cn/support/matrix
这里不做安装的介绍,涉及如下内容

  • 配置ES

二、Configuring Elasticsearch 配置ES

官方说默认配置已经优化的不错了,稍微改点儿就得了,而且大部分的配置可以通过
Cluster Update Settings API进行修改
ES有三个配置文件:

  • elasticsearch.yml es基础配置
  • jvm.options jvm配置
  • log4j2.properties 日志配置
    默认的配置文件路径在$ES_HOME/config,也可以通过修改ES_PATH_CONF环境变量来执行配置文件的路径,例:export ES_PATH_CONF=/path/to/my/config. ./bin/elasticsearch
    配置文件采用YAML的格式

1、各种配置:

后续用到了再详细看吧

  • 1、Setting JVM options
    官网讲,一般不用你配置,一般要调整的是heap size,堆的大小
    有几个约定的东西:
#表示JDK8启用
8:-Xmx2g
#表示JDK版本大于8启用
8-:-Xmx2g
#表示JDK版本大于介于8和9之间启用
8-9:-Xmx2g

另一种指定JVM参数的方式是添加环境变量 ES_JAVA_OPTS,例子:

export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
./bin/elasticsearch

三、Important Elasticsearch configuration 重要配置

在上生产之前,下面几个配置是需要考虑的:

1、Path settings 路径配置

path.data 和 path.log是必须配置的,而且可以配置多个路径,以path.data为例

path:
  data:
    - /mnt/elasticsearch_1
    - /mnt/elasticsearch_2
    - /mnt/elasticsearch_3

2、cluster.name 集群名称

默认为elasticsearch,用于集群的管理

3、network.host 节点的IP

用于其他节点发现或者连接

4、Discovery and cluster formation settings 集群发现配置

下面两个配置主要用于集群见发现及master的选举

  • discovery.seed_hosts
    默认配置下,会从本机找本机9300 ~ 9305端口的es实例,但是生产上一般是不同的host,这个时候就需要手工指定集群中所有可能成为master的节点,格式为host1:port1,host2:port2(逗号分隔),也可以不写port,这时候会使用transport.profiles.default.port,如果这个也没有,那么会使用默认的transport.port,如果使用IPV6,则需要用括号包起来
  • cluster.initial_master_nodes
    生产模式下,第一次启动的时候要指定可能成为master的node
    例子:
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

这个配置在搭建集群的时候详细讲解,这里不过多深入

5、Setting the heap size 设置堆内存大小

  • Xmx 和 Xms设置成物理内存的一半(50%),因为ES还会使用额外的内存做一些操作,会利用操作系统的缓存来优化文件的读取,降低网络的开销,这些都会耗费额外的内存
  • 大小不要超过JVM的瓶颈(大约32GB)
  • 不要超过zero-based compressed oops的大小
    可以设置-XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode来观察zero-based compressed oops的大小,通常26GB是最佳选择,原则上最大不超过30GB,CompressedOopsMode至少需要4G内存,所以,如果分配给ES的内存小于4GB,是不会启用Oops的

6、JVM heap dump path

可以在 jvm.options 中通过 -XX:HeapDumpPath=xxxxx来指定

7、GC logging

ES默认打开GC logging,每个日志文件64MB,最多2GB,超过2GB,覆盖原有日志

8、Temp directory

es启动的时候会在系统的临时目录下建立es专用的临时目录,但是有些linux发行版本会定时清理,这个不是我们想看到的,所以最好指定一个es的专用临时目录,可以通过 $es_tmpdir 环境变量来指定,并且设置只有启动es的用户可以访问。

9、JVM fatal error logs

JVM致命错误日志,可以通过修改 jvm.options中的-XX:ErrorFile=xxxx来指定

四、Important System Configuration 重要的系统设置

1、Configuring system settings 系统设置

  • ulimit设置
    设置linux允许打开的文件个数的限制 ulimit -n 65535
    永久修改:/etc/security/limits.conf 增加:elasticsearch - nofile 65535
    elasticsearch 为启动es的用户

2、Disable swapping 禁用swapping

这个东西会增加JVM进行GC的持续时间,机器反应慢,甚至宕机
禁用swap的几种方式

  • Disable all swap files
    临时设置:sudo swapoff -a
    永久设置:修改 /etc/fstab ,将所有含有 swap 的行注释掉
  • Configure swappiness
    将 vm.swappiness 设置为 1
  • Enable bootstrap.memory_lock 锁定es使用的内存不被swap
    在config/elasticsearch.yml中新增一行:bootstrap.memory_lock: true
    切记这个锁住的内存不能大于JVM的能力,否则会启动失败
    启动后可以用下面的命令查询状态
GET _nodes?filter_path=**.mlockall

3、File descriptors 设置

修改/etc/security/limits.conf,增加ulimit -n 65535或者将nofile 设置为65535
可以通过下面的命令查看设置

GET _nodes/stats/process?filter_path=**.max_file_descriptors

4、Virtual memory 虚拟内存设置

es默认使用mmapfs路径存储索引,系统中mmap的设置太低,需要加大

  • 临时设置:sysctl -w vm.max_map_count=262144
  • 永久设置:修改/etc/sysctl.conf,修改 vm.max_map_count

5、Number of threads 线程数量设置

修改/etc/security/limits.conf,将nproc设置为4096 (这个值是es推荐的)

6、DNS cache settings

7、JNA temporary directory not mounted with noexec

五、Bootstrap Checks 启动前的检查

一旦设置了transport.host(不是localhost或者127.0.0.1),es认为你启用了生产模式,生产模式就会启用Bootstrap Checks,如果不符合,则拒绝启动

  • Single-node discovery
    将 discovery.type 修改为 single-node即可,这种情况下,不会进行检查
  • Force the bootstrap checks 强制检查
    如果设置了single-node discovery,但是又想检查,可以设置给ES_JAVA_OPTS环境变量增加一条:-Des.enforce.bootstrap.checks=true

1、heap size check

会检查 -Xms与-Xmx是否一致,不一致巴拉巴拉会产生一堆问题等等

2、File descriptors check

3、Memory lock check

在做Full GC的时候,JVM会检查所有的heap,如果这些heap的一部分被swap出去,则需要在GC的时候先swap回来,这样会增加系统间的文件传输的开销,所以会检查bootstrap.memory_lock

4、Maximum number of theads check

5、Max file size check

6、Maximum size virtual memory check

7、Maximum map count check

8、Client JVM check

9、Use serial collector check

杜绝使用 serial collector,使用CMS,并发垃圾回收机制

10、System call filter check

11、OnError and OnOutOfMemoryError checks

12、Early-access check

13、G1GC check

14、All permission check

15、Discovery configuration check

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355