-
- Elasticsearch集群环境搭建
- 下载
- Elasticsearch集群环境搭建
Elasticsearch的官方下载网址为https://www.elastic.co/cn/downloads/elasticsearch,可以看到有适合Windows、Linux和MacOS等不同操作系统的版本,如下图示:
其中WINDOWS、LINUX和MACOS是Elasticsearch的压缩包,下载后解压缩到电脑上就可以使用,DEB包和RPM包是已经编译好适合于Linux环境的安装包,MSI是Windwos环境下的安装包,Docker是Docker容器环境的安装包。请根据自己的操作系统环境,下载适合的文件,笔者电脑是Linux Ubuntu,下载的就是适合Linux的压缩包。
-
-
- 目录介绍
-
下载完成后将其解压缩,可以看到Elasticsearch如下的目录结构:
Eleasticsearch目录介绍 | |
bin | 可执行文件的存放目录,包含关键命令如下: elasticsearch:Elasticsearch的启动命令,Linux下加”-d”参数以服务的形式后台运行。 elasticsearch-certutil:用于生成与Elastic Stack一起使用的证书 elasticsearch-migrate:用于将基于文件的用户和角色,迁移到native realm elasticsearch-node:该命令可以在当前节点关闭的时候,在该节点执行某些不安全的操作, 此命令可以用于调整当前节点在集群中的角色,并且可以在灾难发生后用于恢复某些数据。 elasticsearch-saml-metadata:该命令用于生成SAML 2.0服务提供者(SP)元数据文件。 elasticsearch-setup-passwords:用于给x-pack内置用户(如elastic、kibana、logstash_system、beats_system等)设置密码,此命令仅在初始配置Elasticsearch安全功能期间使用。 elasticsearch-shard:该命令用于在Lucene索引或translog的分片拷贝发生损坏、且无法自动恢复分片时,用于删除分片的损坏部分,然后恢复对未受影响的段中任何剩余数据的访问,使用该命令前必须停止Elasticsearch。 elasticsearch-syskeygen:该命令用于在elasticsearch配置目录中创建系统密钥文件,可以使用生成的系统密钥文件对敏感数据进行对称加密。 elasticsearch-users:该命令用于管理基于文件的用户身份验证,它可以添加和删除用户、分配用户角色以及管理密码。
详细的功能及使用,后续的章节会谈到。 |
config | 配置文件的存放目录,包括elasticsearch.yml和jvm.options等关键配置文件。 |
data | 默认的数据存放目录(注:该目录默认不存在,当Elasticsearch通过默认的配置参数启后,该目录才会被创建)。 |
jdk | 存放的是适合当前Elasticsearch版本的jdk,避免用户使用不兼容的JDK版本或者单独下载JDK,真正做到解压缩后就可以使用,不过也增加了下载包体的大小,达到了325M,该目录在7.x中才引入。 |
lib | 引用的相关库的存放目录,elasticsearch.jar本身也放于该目录。 |
logs | 默认的日志存放目录。 |
modules | 功能模块的存放目录,如aggs、reindex、geoip、xpack、eval,详细如下所示:
详细的功能及使用,后续的章节会谈到。 |
plugins | 插件是Elasticsearch中非常重要的模块,让Elasticsearch的功能可以灵活定制,更方便使用, 每个插件都将包含在一个子目录中,默认不包含任何插件,用户自己的情况进行下载,插件的下载方式,通过命令: bin/elasticsearch-plugin install [plugin_name]
Elasticsearch分类以下几大类: API扩展插件:API扩展插件通过添加新的API或功能,扩展Elasticsearch的搜索或映射等功能; 告警插件:告警插件提供了索引监视功能,并在警报阈值时触发警报; 分析插件:分析插件提供新的字段分析器(Analyzers)、分词器(tokenizer)、分词过滤器(token filters)或字符过滤器来扩展Elasticsearch的功能; 发现插件:插件提供了对Amazon EC2、Microsoft Azure Classic、GCE(Google Compute Engine)和Kubernate的搭建了搜索服务的节点的发现功能; 数据预处理插件:提供从附件(如PPT、XLS和PDT)中抽取数据、GeoIP信息处理、用户客户端信息提取等; 管理功能插件:插件提供了对Elasticsearch执行管理的功能或者交互功能的UI,如X-PACK; 映射插件:映射插件允许向Elasticsearch增加新的字段数据类型,如mapper-size插件提供_size元字段,当启用该字段时,索引原始_source字段的字节大小; 安全插件:为Elasticsearch增加了一层安全层,可以轻松地为其弹性堆栈添加企业级安全性,让Elasticsearch更加安全; 数据快照或数据还原插件:用于支持将数据存放到云存储或者分布式文件系统中,或者从云存储或者分布式文件系统进行数据恢复,支持包持Amazon S3、Microsoft Azure、HDFS、Google云存储以及Openstack等 存储插件:提供了除基于Lucene默认存储的额外存储方式的更多选择;
详细的功能及使用,后续的章节会谈到。 |
-
-
- 核心配置文件介绍
-
Elasticsearch核心配置文件 | |
config/elasticsearch.yml | 该文件是Elasticsearch的核心配置文件,里面涉及到集群名称、节点名称、日志存放路径、数据存放路径、所使用的IP地址和端口号、master节点、是否允许跨域访问等。 |
config/jvm.options | 配置Elasticsearch使用的JVM参数,如堆的大小、单个线程的大小、所使用的垃圾收集的方式、是否开启JMX、GC日志的收集等。 |
-
-
-
- elasticsearch.yml
-
-
Elasticsearch.yml的默认配置
# ======================== Elasticsearch Configuration ========================= # 注:Elasticsearch使用很多合理的默认配置,该配置文件只列出了集群及当前节点配置需要调整的参数 # # 更多的配置选项参看: # https://www.elastic.co/guide/en/elasticsearch/reference/index.html # # ------------------------ Cluster(集群) ------------------------- # 集群名称配置,默认是elasticsearch # cluster.name: my-application # # -------------------------- Node(节点) -------------------------- # 配置节点名称,默认为随机名称 # node.name: node-1 # # 当前节点的自定属性: # node.rack: r1 # # ------------------------- Paths(路径) -------------------------- # 指定es的数据存储目录,默认为$es_home/data目录 # path.data: /path/to/data # # 指定es的日志存储目录,默认为$es_home/logs目录 # path.logs: /path/to/logs # # ------------------------- Memory(内存) ------------------------- # # 锁定物理内存地址,防止es的内存被交换出去,避免使用swap交换分区,因为当系统进行内存交换的时候, # es的性能表现会很差。当network.host配置为非127.0.0.1时,需要在Linux的/etc/security/limits.conf增 # 加允许应用对内存锁定的配置: # * soft memlock unlimited # * hard memlock unlimited # bootstrap.memory_lock: true # # 确保ES_HEAP_SIZE参数设置为系统可用内存的一半左右,且执行ES进程的用户具有使用这些内存的权限 # # ------------------------ Network(网络) ------------------------- # # 为es设置绑定的ip,默认是127.0.0.1,设置为0.0.0.0允许绑定到该服务器的所有IP地址都可以访问 # network.host: 192.168.0.1 # # 为es设置监听端口,默认是9200,transport.tcp.port的值为http.port加上100 # http.port: 9200 # # 更多关于网络的配置,参看: # <www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html> # # ------------------------ Discovery(发现) ------------------------ # # 初使服务器列表,当此节点时启动时会执行发现动作,如需要配置端口,则需要配置transport.tcp.port的值 # 默认列表为 ["127.0.0.1", "[::1]"] # #discovery.seed_hosts: ["host1", "host2"] # # 用于在集群启动时,选择master节点的节点,该值在network.host的值不为127.0.0.1时,且只有一个节点时,其值必须要填写: # #cluster.initial_master_nodes: ["node-1", "node-2"] # # ------------------------ Gateway(网关) ------------------------- # # 设置集群中需要指定个节点启动后,才进行数据恢复处理,其默认值是1 # gateway.recover_after_nodes: 3 # # 更多信息: # <www.elastic.co/guide/en/elasticsearch/reference/current/modules-gateway.html> # # ------------------------ Various ------------------------- # # 设置是否允许删除多个索引库,默认true表示必须需要显式指定索引库名称 # action.destructive_requires_name: true |
-
-
-
- jvm.options
-
-
jvm.options的默认配置
## JVM配置
################################################################ ## 重要: JVM堆大小 ################################################################ ## ## 为了使Elasticsearch避免频繁的发生Full GC,最大堆和最小堆的值,, ## 要设置为一样,如下设置为4G。Xms表示初使化堆的大小,Xms表示最大 ## 的大小 ## -Xms4g ## -Xmx4g ## 更多参看: ## https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html ## ################################################################
# 堆的默认值为1G -Xms1g -Xmx1g
################################################################ ## 专业人员设置 ################################################################ ## ## 以下是JVM垃圾回收相关的设置,建意不懂JVM垃圾回收的人员不要随意 ## 修改配置 ## ################################################################
## 垃圾回收配置 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly
## 垃圾回收G1GC策略的配置,仅在JDK10及以上的版本支持 # 使用G1GC策略,将以下行的注释去掉 # 10-:-XX:-UseConcMarkSweepGC # 10-:-XX:-UseCMSInitiatingOccupancyOnly # 10-:-XX:+UseG1GC # 10-:-XX:InitiatingHeapOccupancyPercent=75
# 显式设置每个线程堆栈的大小 -Xss1m
## heap dumps
# 当Java堆分配失败时,在当前工作目录中创建JVM的堆转储 -XX:+HeapDumpOnOutOfMemoryError
# 为堆转储指定备用路径,并确保该目录是存在的并且有足够的空间 -XX:HeapDumpPath=data
# 为JVM致命错误日志指定备用路径 -XX:ErrorFile=logs/hs_err_pid%p.log
...... |
在该配置文件中,主要的关注配置为JVM堆和单个线程堆栈大小的配置
# 堆的默认值为1G -Xms1g -Xmx1g # 显式设置每个线程堆栈的大小 -Xss1m |