如何搭建 ElasticSearch 集群?

  《为何要搭建 ElasticSearch 集群,而不用单机 ElasticSearch?》一文中,介绍了为何要使用 ElasticSearch 集群,那么如何搭建集群呢?以下简单总结下搭建集群的步骤。

一、集群服务器配置信息

  在三台服务器上搭建集群,每台服务器作为一个节点,信息如下表所示。

节点名称 服务器配置 IP地址 普通用户
node-1 4C/8GB/100GB 10.201.42.9 estestuser
node-2 4C/8GB/100GB 10.201.42.19 estestuser
node-3 4C/8GB/100GB 10.201.42.37 estestuser
二、安装 JDK

  Elasticsearch 是基于 Java 开发的一个 Java 程序,运行在 JVM(java 虚拟机)中,所以第一步要安装 JDK,安装 JDK 的方法见以下 2 篇博客:

  本文在三台服务器上安装的 JDK 版本均如下所示:

[estestuser@vm-10-201-42-9 ~]$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
三、下载 ElasticSearch 安装包并解压

  到 ES 的官网 https://www.elastic.co/cn/elasticsearch/ 可以下载最新版本,本文安装的是 7.1.1 版本。
  将 elasticsearch-7.1.1-linux-x86_64.tar.gz 文件分别上传到三台服务器的用户目录下,并解压:

[estestuser@vm-10-201-42-9 ~]$ tar -zxvf elasticsearch-7.1.1-linux-x86_64.tar.gz
四、创建用于存放数据与日志的目录

  数据文件会随着系统的运行飞速增长,所以默认的日志文件与数据文件的路径不能满足我们的需求,那么手动创建日志与数据文件路径,可以使用 NFS 等,方便以后的管理与扩展。因为测试服务器资源有限,所以分别在三台服务器的 /home/estestuser 路径下创建 ES 数据文件夹 esdata 和日志文件夹 eslogs。

[estestuser@vm-10-201-42-19 ~]$ pwd
/home/estestuser
[estestuser@vm-10-201-42-9 ~]$ mkdir esdata
[estestuser@vm-10-201-42-9 ~]$ mkdir eslogs
[estestuser@vm-10-201-42-9 ~]$ ll
total 338672
drwxr-xr-x 9 estestuser estestuser       144 May 23  2019 elasticsearch-7.1.1
-rw-rw-r-- 1 estestuser estestuser 346794062 Feb 23 15:17 elasticsearch-7.1.1-linux-x86_64.tar.gz
drwxrwxr-x 3 estestuser estestuser        18 Feb 23 16:39 esdata
drwxrwxr-x 2 estestuser estestuser      4096 Feb 24 09:34 eslogs

  ES 安装完毕后,在 config 路径下会生成很多文件,如下所示:

[estestuser@vm-10-201-42-9 ~]$ cd elasticsearch-7.1.1/
[estestuser@vm-10-201-42-9 elasticsearch-7.1.1]$ ll
total 484
drwxr-xr-x  2 estestuser estestuser   4096 May 23  2019 bin
drwxr-xr-x  2 estestuser estestuser   4096 Feb 24 09:31 config
drwxr-xr-x  8 estestuser estestuser     89 May 23  2019 jdk
drwxr-xr-x  3 estestuser estestuser   4096 May 23  2019 lib
-rw-r--r--  1 estestuser estestuser  13675 May 23  2019 LICENSE.txt
drwxr-xr-x  2 estestuser estestuser    131 Feb 24 09:35 logs
drwxr-xr-x 29 estestuser estestuser   4096 May 23  2019 modules
-rw-r--r--  1 estestuser estestuser 447478 May 23  2019 NOTICE.txt
drwxr-xr-x  2 estestuser estestuser      6 May 23  2019 plugins
-rw-r--r--  1 estestuser estestuser   8478 May 23  2019 README.textile
[estestuser@vm-10-201-42-9 elasticsearch-7.1.1]$ cd config/
[estestuser@vm-10-201-42-9 config]$ ll
total 48
-rw-rw---- 1 estestuser estestuser   199 Feb 23 15:45 elasticsearch.keystore
-rw-rw---- 1 estestuser estestuser  3244 Feb 24 09:27 elasticsearch.yml
-rw-rw---- 1 estestuser estestuser  3544 Feb 23 16:15 jvm.options
-rw-rw---- 1 estestuser estestuser 17170 May 23  2019 log4j2.properties
-rw-rw---- 1 estestuser estestuser   473 May 23  2019 role_mapping.yml
-rw-rw---- 1 estestuser estestuser   197 May 23  2019 roles.yml
-rw-rw---- 1 estestuser estestuser     0 May 23  2019 users
-rw-rw---- 1 estestuser estestuser     0 May 23  2019 users_roles

  下面几个是最主要的配置文件:

  • elasticsearch.yml:ES 的配置文件
  • jvm.options:JVM 相关的配置文件
  • log4j2.properties:日志系统定义,日志文件
五、集群配置

  修改节点1(10.201.42.9)上的 ES 配置文件 /home/estestuser/elasticsearch-7.1.1/config/elasticsearch.yml 为如下内容:

# 这里修改集群的名字,如果要想搭建集群,所有集群中的每个节点名字都必须一样
cluster.name: my-application
# 每个集群中都有节点,这里设置每个节点的名字,节点与节点的名字必须不一样
node.name: node-1
# 这里修改为每台节点数据存放的目录
path.data: /home/estestuser/esdata
# 这里修改为每台节点日志的存放目录
path.logs: /home/estestuser/eslogs
# 这一行改成 0.0.0.0 意思是允许所有节点访问
network.host: 0.0.0.0
# 配置集群节点集合
discovery.seed_hosts: ["10.201.42.9", "10.201.42.19", "10.201.42.37"]
# 集群选举设置
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
# 开启跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"

  修改节点2(10.201.42.19)上的 ES 配置文件 /home/estestuser/elasticsearch-7.1.1/config/elasticsearch.yml 为如下内容:

cluster.name: my-application
node.name: node-2
path.data: /home/estestuser/esdata
path.logs: /home/estestuser/eslogs
network.host: 0.0.0.0
discovery.seed_hosts: ["10.201.42.9", "10.201.42.19", "10.201.42.37"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
http.cors.enabled: true
http.cors.allow-origin: "*"

  修改节点3(10.201.42.37)上的 ES 配置文件 /home/estestuser/elasticsearch-7.1.1/config/elasticsearch.yml 为如下内容:

cluster.name: my-application
node.name: node-3
path.data: /home/estestuser/esdata
path.logs: /home/estestuser/eslogs
network.host: 0.0.0.0
discovery.seed_hosts: ["10.201.42.9", "10.201.42.19", "10.201.42.37"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
http.cors.enabled: true
http.cors.allow-origin: "*"
六、JVM 配置

  由于 Elasticsearch 是 Java 开发的,所以可以通过 /home/estestuser/elasticsearch-7.1.1/config/jvm.options 配置文件来设定 JVM 的相关配置。如果没有特殊需求按默认即可。
  不过其中还是有两项最重要的 -Xmx1g 与 -Xms1g,用于指定 JVM 的最大堆和最小堆内存大小。服务器内存大小为 8G,此处设置 1G,也合适。如果太小会导致 Elasticsearch 刚刚启动就立刻停止,太大会拖慢系统本身。

七、启动 Elasticsearch

  Elasticsearch 的相关配置基本已经完成,下面需要启动 Elasticsearch 集群。由于安全的考虑,Elasticsearch 不允许使用 root 用户来启动,所以使用普通用户 estestuser 来启动 Elasticsearch 集群。
  Elasticsearch 的命令都在 bin 路径下,尝试在节点 1 上启动 Elasticsearch,命令如下。

[estestuser@vm-10-201-42-9 elasticsearch-7.1.1]$ pwd
/home/estestuser/elasticsearch-7.1.1
[estestuser@vm-10-201-42-9 elasticsearch-7.1.1]$ bin/elasticsearch -d
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

  启动未成功,查看 Elasticsearch 的 JVM 配置,发现垃圾回收配置的是 ConcMarkSweepGC 算法,信息如下所示:

## GC configuration
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly

  查看服务器 JDK 使用的垃圾回收算法信息,结果如下:

[estestuser@vm-10-201-42-9 elasticsearch-7.1.1]$ java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=128150272 -XX:MaxHeapSize=2050404352 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC 
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

  信息显示,服务器上的 JDK 版本采用的是 ParallelGC 算法,修改 /home/estestuser/elasticsearch-7.1.1/config/jvm.options 文件,修改垃圾回收算法为当前 JDK 的回收算法:

## GC configuration
-XX:+UseParallelGC
#-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly

  修改完毕之后,再次尝试在节点 1 上启动 ES,结果报错,具体信息如下:

[estestuser@vm-10-201-42-9 elasticsearch-7.1.1]$ bin/elasticsearch
[2021-02-23T16:20:03,431][INFO ][o.e.e.NodeEnvironment    ] [node-1] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [49gb], net total_space [59.9gb], types [rootfs]
[2021-02-23T16:20:03,435][INFO ][o.e.e.NodeEnvironment    ] [node-1] heap size [981.5mb], compressed ordinary object pointers [true]
[2021-02-23T16:20:03,438][INFO ][o.e.n.Node               ] [node-1] node name [node-1], node ID [-FlSmZq4QOa3u-jhSuFRfA], cluster name [my-application]
[2021-02-23T16:20:03,438][INFO ][o.e.n.Node               ] [node-1] version[7.1.1], pid[30854], build[default/tar/7a013de/2019-05-23T14:04:00.380842Z], OS[Linux/3.10.0-862.34.2.el7.x86_64/amd64], JVM[Oracle Corporation/OpenJDK 64-Bit Server VM/12.0.1/12.0.1+12]
[2021-02-23T16:20:03,439][INFO ][o.e.n.Node               ] [node-1] JVM home [/home/estestuser/elasticsearch-7.1.1/jdk]
[2021-02-23T16:20:03,439][INFO ][o.e.n.Node               ] [node-1] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseParallelGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/tmp/elasticsearch-6418704737788327102, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Djava.locale.providers=COMPAT, -Dio.netty.allocator.type=unpooled, -Des.path.home=/home/estestuser/elasticsearch-7.1.1, -Des.path.conf=/home/estestuser/elasticsearch-7.1.1/config, -Des.distribution.flavor=default, -Des.distribution.type=tar, -Des.bundled_jdk=true]
[2021-02-23T16:20:04,898][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [aggs-matrix-stats]
[2021-02-23T16:20:04,899][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [analysis-common]
[2021-02-23T16:20:04,899][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [ingest-common]
[2021-02-23T16:20:04,899][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [ingest-geoip]
[2021-02-23T16:20:04,900][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [ingest-user-agent]
[2021-02-23T16:20:04,900][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [lang-expression]
[2021-02-23T16:20:04,900][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [lang-mustache]
[2021-02-23T16:20:04,901][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [lang-painless]
[2021-02-23T16:20:04,901][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [mapper-extras]
[2021-02-23T16:20:04,901][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [parent-join]
[2021-02-23T16:20:04,901][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [percolator]
[2021-02-23T16:20:04,902][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [rank-eval]
[2021-02-23T16:20:04,902][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [reindex]
[2021-02-23T16:20:04,902][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [repository-url]
[2021-02-23T16:20:04,902][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [transport-netty4]
[2021-02-23T16:20:04,903][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-ccr]
[2021-02-23T16:20:04,903][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-core]
[2021-02-23T16:20:04,903][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-deprecation]
[2021-02-23T16:20:04,903][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-graph]
[2021-02-23T16:20:04,903][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-ilm]
[2021-02-23T16:20:04,904][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-logstash]
[2021-02-23T16:20:04,904][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-ml]
[2021-02-23T16:20:04,904][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-monitoring]
[2021-02-23T16:20:04,904][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-rollup]
[2021-02-23T16:20:04,905][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-security]
[2021-02-23T16:20:04,905][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-sql]
[2021-02-23T16:20:04,905][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-watcher]
[2021-02-23T16:20:04,905][INFO ][o.e.p.PluginsService     ] [node-1] no plugins loaded
[2021-02-23T16:20:08,697][INFO ][o.e.x.s.a.s.FileRolesStore] [node-1] parsed [0] roles from file [/home/estestuser/elasticsearch-7.1.1/config/roles.yml]
[2021-02-23T16:20:09,257][INFO ][o.e.x.m.p.l.CppLogMessageHandler] [node-1] [controller/30940] [Main.cc@109] controller (64 bit): Version 7.1.1 (Build fd619a36eb77df) Copyright (c) 2019 Elasticsearch BV
[2021-02-23T16:20:09,632][DEBUG][o.e.a.ActionModule       ] [node-1] Using REST wrapper from plugin org.elasticsearch.xpack.security.Security
[2021-02-23T16:20:09,841][INFO ][o.e.d.DiscoveryModule    ] [node-1] using discovery type [zen] and seed hosts providers [settings]
[2021-02-23T16:20:10,835][INFO ][o.e.n.Node               ] [node-1] initialized
[2021-02-23T16:20:10,835][INFO ][o.e.n.Node               ] [node-1] starting ...
[2021-02-23T16:20:10,957][INFO ][o.e.t.TransportService   ] [node-1] publish_address {
    
    10.201.42.9:9300}, bound_addresses {
    
    [::]:9300}
[2021-02-23T16:20:10,965][INFO ][o.e.b.BootstrapChecks    ] [node-1] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2021-02-23T16:20:10,972][INFO ][o.e.n.Node               ] [node-1] stopping ...
[2021-02-23T16:20:10,986][INFO ][o.e.n.Node               ] [node-1] stopped
[2021-02-23T16:20:10,986][INFO ][o.e.n.Node               ] [node-1] closing ...
[2021-02-23T16:20:10,996][INFO ][o.e.n.Node               ] [node-1] closed
[2021-02-23T16:20:10,998][INFO ][o.e.x.m.p.NativeController] [node-1] Native controller process has stopped - no new native processes can be started

  核心错误提示为:

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

  说明 Elasticsearch 拥有的最大内存权限太小,至少需要 262144,所以需要调整 vm.max_map_count 参数值。切换到 root 以后,执行 vim /etc/sysctl.conf,追加 vm.max_map_count=655360 或 vm.max_map_count=262144 或其他合适的数值。保存后,执行如下操作,让参数立即生效:

[root@vm-10-201-42-9 config]# sysctl -p
kernel.core_pattern = /LSYSFIL/korebak/core-%e-%p
kernel.sem = 250 256000 32 1024
kernel.msgmax = 4194304
kernel.msgmnb = 8388608
fs.nr_open = 2147483584
fs.file-max = 2147483584
vm.max_map_count = 655360

  分别以 root 用户权限,在节点 2 和节点 3 上执行 vim /etc/sysctl.conf 和 sysctl -p 操作,修改 vm.max_map_count = 655360。

  在 3 台节点上完成修改操作之后,分别切换回普通用户。尝试在节点 1 上启动 ES,启动成功,信息如下所示:

[estestuser@vm-10-201-42-9 elasticsearch-7.1.1]$ bin/elasticsearch
[2021-02-23T16:31:54,324][INFO ][o.e.e.NodeEnvironment    ] [node-1] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [49gb], net total_space [59.9gb], types [rootfs]
[2021-02-23T16:31:54,328][INFO ][o.e.e.NodeEnvironment    ] [node-1] heap size [981.5mb], compressed ordinary object pointers [true]
[2021-02-23T16:31:54,330][INFO ][o.e.n.Node               ] [node-1] node name [node-1], node ID [-FlSmZq4QOa3u-jhSuFRfA], cluster name [my-application]
[2021-02-23T16:31:54,331][INFO ][o.e.n.Node               ] [node-1] version[7.1.1], pid[31702], build[default/tar/7a013de/2019-05-23T14:04:00.380842Z], OS[Linux/3.10.0-862.34.2.el7.x86_64/amd64], JVM[Oracle Corporation/OpenJDK 64-Bit Server VM/12.0.1/12.0.1+12]
[2021-02-23T16:31:54,331][INFO ][o.e.n.Node               ] [node-1] JVM home [/home/estestuser/elasticsearch-7.1.1/jdk]
[2021-02-23T16:31:54,332][INFO ][o.e.n.Node               ] [node-1] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseParallelGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/tmp/elasticsearch-5455686276641073017, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Djava.locale.providers=COMPAT, -Dio.netty.allocator.type=unpooled, -Des.path.home=/home/estestuser/elasticsearch-7.1.1, -Des.path.conf=/home/estestuser/elasticsearch-7.1.1/config, -Des.distribution.flavor=default, -Des.distribution.type=tar, -Des.bundled_jdk=true]
[2021-02-23T16:31:55,818][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [aggs-matrix-stats]
[2021-02-23T16:31:55,818][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [analysis-common]
[2021-02-23T16:31:55,818][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [ingest-common]
[2021-02-23T16:31:55,819][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [ingest-geoip]
[2021-02-23T16:31:55,819][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [ingest-user-agent]
[2021-02-23T16:31:55,819][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [lang-expression]
[2021-02-23T16:31:55,819][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [lang-mustache]
[2021-02-23T16:31:55,820][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [lang-painless]
[2021-02-23T16:31:55,820][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [mapper-extras]
[2021-02-23T16:31:55,820][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [parent-join]
[2021-02-23T16:31:55,820][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [percolator]
[2021-02-23T16:31:55,821][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [rank-eval]
[2021-02-23T16:31:55,821][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [reindex]
[2021-02-23T16:31:55,821][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [repository-url]
[2021-02-23T16:31:55,822][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [transport-netty4]
[2021-02-23T16:31:55,822][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-ccr]
[2021-02-23T16:31:55,822][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-core]
[2021-02-23T16:31:55,822][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-deprecation]
[2021-02-23T16:31:55,822][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-graph]
[2021-02-23T16:31:55,823][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-ilm]
[2021-02-23T16:31:55,823][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-logstash]
[2021-02-23T16:31:55,823][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-ml]
[2021-02-23T16:31:55,823][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-monitoring]
[2021-02-23T16:31:55,823][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-rollup]
[2021-02-23T16:31:55,824][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-security]
[2021-02-23T16:31:55,824][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-sql]
[2021-02-23T16:31:55,824][INFO ][o.e.p.PluginsService     ] [node-1] loaded module [x-pack-watcher]
[2021-02-23T16:31:55,825][INFO ][o.e.p.PluginsService     ] [node-1] no plugins loaded
[2021-02-23T16:31:59,328][INFO ][o.e.x.s.a.s.FileRolesStore] [node-1] parsed [0] roles from file [/home/estestuser/elasticsearch-7.1.1/config/roles.yml]
[2021-02-23T16:31:59,873][INFO ][o.e.x.m.p.l.CppLogMessageHandler] [node-1] [controller/31783] [Main.cc@109] controller (64 bit): Version 7.1.1 (Build fd619a36eb77df) Copyright (c) 2019 Elasticsearch BV
[2021-02-23T16:32:00,243][DEBUG][o.e.a.ActionModule       ] [node-1] Using REST wrapper from plugin org.elasticsearch.xpack.security.Security
[2021-02-23T16:32:00,451][INFO ][o.e.d.DiscoveryModule    ] [node-1] using discovery type [zen] and seed hosts providers [settings]
[2021-02-23T16:32:01,421][INFO ][o.e.n.Node               ] [node-1] initialized
[2021-02-23T16:32:01,421][INFO ][o.e.n.Node               ] [node-1] starting ...
[2021-02-23T16:32:01,541][INFO ][o.e.t.TransportService   ] [node-1] publish_address {
    
    10.201.42.9:9300}, bound_addresses {
    
    [::]:9300}
[2021-02-23T16:32:01,548][INFO ][o.e.b.BootstrapChecks    ] [node-1] bound or publishing to a non-loopback address, enforcing bootstrap checks
[2021-02-23T16:32:11,563][WARN ][o.e.c.c.ClusterFormationFailureHelper] [node-1] master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster, and this node must discover master-eligible nodes [node-1, node-2, node-3] to bootstrap a cluster: have discovered []; discovery will continue using [10.201.42.19:9300, 10.201.42.37:9300] from hosts providers and [{
    
    node-1}{
    
    -FlSmZq4QOa3u-jhSuFRfA}{
    
    ZoeZhJMkREaztXejUUs9VQ}{
    
    10.201.42.9}{
    
    10.201.42.9:9300}{
    
    ml.machine_memory=8201617408, xpack.installed=true, ml.max_open_jobs=20}] from last-known cluster state; node term 0, last-accepted version 0 in term 0
[2021-02-23T16:32:21,567][WARN ][o.e.c.c.ClusterFormationFailureHelper] [node-1] master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster, and this node must discover master-eligible nodes [node-1, node-2, node-3] to bootstrap a cluster: have discovered []; discovery will continue using [10.201.42.19:9300, 10.201.42.37:9300] from hosts providers and [{
    
    node-1}{
    
    -FlSmZq4QOa3u-jhSuFRfA}{
    
    ZoeZhJMkREaztXejUUs9VQ}{
    
    10.201.42.9}{
    
    10.201.42.9:9300}{
    
    ml.machine_memory=8201617408, xpack.installed=true, ml.max_open_jobs=20}] from last-known cluster state; node term 0, last-accepted version 0 in term 0
[2021-02-23T16:32:31,568][WARN ][o.e.c.c.ClusterFormationFailureHelper] [node-1] master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster, and this node must discover master-eligible nodes [node-1, node-2, node-3] to bootstrap a cluster: have discovered []; discovery will continue using [10.201.42.19:9300, 10.201.42.37:9300] from hosts providers and [{
    
    node-1}{
    
    -FlSmZq4QOa3u-jhSuFRfA}{
    
    ZoeZhJMkREaztXejUUs9VQ}{
    
    10.201.42.9}{
    
    10.201.42.9:9300}{
    
    ml.machine_memory=8201617408, xpack.installed=true, ml.max_open_jobs=20}] from last-known cluster state; node term 0, last-accepted version 0 in term 0
[2021-02-23T16:32:31,571][WARN ][o.e.n.Node               ] [node-1] timed out while waiting for initial discovery state - timeout: 30s
[2021-02-23T16:32:31,619][INFO ][o.e.h.AbstractHttpServerTransport] [node-1] publish_address {
    
    10.201.42.9:9200}, bound_addresses {
    
    [::]:9200}
[2021-02-23T16:32:31,619][INFO ][o.e.n.Node               ] [node-1] started

  节点 1 的 ES 启动成功,但是目前节点 2 和节点 3 因为还未启动,所以暂时没有组成集群。重新在节点 1 上后台启动 ES,操作如下:

[estestuser@vm-10-201-42-9 elasticsearch-7.1.1]$ bin/elasticsearch -d

  验证是否启动成功,执行如下操作:

[estestuser@vm-10-201-42-9 elasticsearch-7.1.1]$ curl http://localhost:9200
{
    
    
  "name" : "node-1",
  "cluster_name" : "my-application",
  "cluster_uuid" : "l-kTWdoxRCuTIm6x8ekG7w",
  "version" : {
    
    
    "number" : "7.1.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "7a013de",
    "build_date" : "2019-05-23T14:04:00.380842Z",
    "build_snapshot" : false,
    "lucene_version" : "8.0.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

  出现如上信息,说明启动成功。依次在节点 2 和节点 3 上执行 bin/elasticsearch -d 操作,启动 ES。在节点 1 的 ES 日志中,可以看到集群组建成功。

  此时,访问 ES 集群不需要用户安全认证,在生产环境下不太安全。若要为集群添加用户安全认证功能,详见下一篇博客《ElasticSearch 集群添加用户安全认证功能(设置访问密码)》。

文章参考:

猜你喜欢

转载自blog.csdn.net/piaoranyuji/article/details/114084480