1 Elasticsearch 7.4 单机版的安装
1.1 首先访问 Elasticsearch 的官网
官网上的最新版本已经到了 7.9.3,但是我们选择的版本为 7.4.2,点击下图所示的区域,选择 past releases
选择 7.4.2 的版本,进行下载]
1.2 安装 Elasticsearch 单机
1.2.1 首先上传安装包文件到服务器,比如上传到目录 software 下面
1.2.2 在根目录下新建 /elk/es_single 文件夹,用于安装 elasticsearch
1.2.3 解压安装包到该目录下
解压命令:tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz -C /elk/es_single
1.2.4 切换到 Elasticsearch 的安装目录下,配置环境
切换命令:cd /elk/es_single/elasticsearch-7.4.2/
查看该目录下的文件和路径,查看命令:ll -h
需要配置的文件应该集中在 bin 目录和 config 目录下
1.2.4 可以通过不断试错的方式来调整配置 Elasticsearch 的配置
1.2.4.1 首先启动 Elasticsearch,观察报错情况
报错原因:Elasticsearch 所需的 jdk 版本为 11,但是本机的 jdk 版本为 8
解决办法:Elasticsearch 自带 jdk 11 的版本,需要将其路径复制到 bin 目录下的 配置文件 elasticsearch-env
首先切换到 jdk 11 所在的路径,然后 pwd 打印其路径并选中复制
然后在配置文件 elasticsearch-env 中添加 jdk 的路径,JAVA_HOME="/elk/es_single/elasticsearch-7.4.2/jdk"
修改文件的命令:vim bin/elasticsearch-env
1.2.4.2 再次启动 Elasticsearch,观察报错情况
报错原因:处于安全的考虑,不允许以 root 的身份启动
解决方案:添加非 root 用户,然后切换身份重新启动
创建 support 用户组和 support 用户,并将其添加到用户组 support 中
groupadd support
useradd support -g support
更改 es_single 文件夹及内部文件的所属用户及组为 support: support
chown -Rf support:support /elk/es_single/
chown [选项]... [所有者][:[组]] 文件...
必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身
1.2.4.3 切换到 support 用户,再次启动 Elasticsearch,观察报错情况
su support
bin/elasticsearch
报错原因:因为刚刚使用 root 用户的身份启动过,所以现在默认以 root 身份启动
解决方案:删除 log 和 data 目录中的所有文件和文件夹,然后重新启动
报错原因:因为 Centos 6 不支持 SecComp,而 Elasticsearch 默认 bootstrap.system_call_filter 为 true 进行检测,所以导致检测失败,失败后直接导致 Elasticsearch 不能启动解决
解决方案:在 config 目录中的 elasticsearch.yml 添加一下内容
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
1.2.4.4 再次启动 Elasticsearch,观察报错情况
这个版本的GC好像被移除了,所以需要更改配置,推荐使用:
-XX:+UseG1GC
在 elasticsearch-7.4.2/config/jvm.options 文件中添加
-XX:+UseG1GC
然后注释掉:-XX:+UseConcMarkSweepGC
vim config/jvm.options
1.2.4.5 再次启动 Elasticsearch,观察报错情况
首先修改配置文件:vim /etc/security/limits.conf,在该文件末尾>添加以下内容:
soft nofile 65535
hard nofile 65535
soft nproc 4096
hard nproc 4096
然后设置最大内存:vim /etc/sysctl.conf
然后进行刷新操作,必须进行刷新操作
刷新的命令:sysctl -p
1.2.4.5 再次启动 Elasticsearch,观察报错情况
第一个警告的原因是因为“用户线程数量太少”
解决方案:vim /etc/security/limits.d/90-nproc.conf
在该文件中修改:soft nproc 1024 为 4096
然后刷新 sysctl -p
1.2.4.6 最后修改 config/elasticsearch.yml 文件,进行环境的配置
需要修改的地方:
集群名称:cluster.name: my_elasticsearch
节点名称:node.name: node-1
开启可以访问的节点:network.host: 0.0.0.0 (设置所有节点都可以访问)
服务端口:http.port: 9200
最后再添加以下内容:
http.cors.enabled: true (是否开启跨域访问)
http.cors.allow-origin: "*" (开启跨域访问后的地址限制,*表示无限制)
discovery.seed_hosts: ["192.168.124.34"]
cluster.initial_master_nodes: ["node-1"]
discovery.zen.ping_timeout: 60s
1.2.4.7 最后保存,重新启动
发现没有报错,去浏览器中验证是否是否安装成功
在浏览器中键入:192.168.124.34:9200
2 Elasticsearch 7.4 完全分布式的安装
- 因为 elasticsearch 是比较消耗资源的,如果在单机上搭建伪分布式集群,可能会导致内存溢出的问题,因此这里搭建的是完全分布式集群。
- 注意不要使用刚刚搭建好的 elasticsearch 单机来搭建集群,因为刚刚启动过的单机已经存在历史记录,如果使用其来搭建集群会导致失败。
- 搭建 Elasticsearch 集群需要在多台节点上进行配置,每台节点上的配置和单机的配置基本无异。
2.1 首先准备 3 台节点,分别在每台节点上创建新的用户和用户组
注意:这里选用的节点名称分别是:node001, node002, node003
分别在 node001, node002, node003 上创建用户和用户组
groupadd support
useradd support -g support
如何查看用户和用户组呢?
查看用户:cat /etc/passwd
查看用户组:cat /etc/group
如何完全删除用户和用户组呢?
第一种方法:使用 userdel -r 用户名 命令删除。
第二种方法:先使用 [userdel 用户名] 删除账户和组的信息,再使用 [find / -name "用户名"] 查找所有于该用户的相关文件,在使用 rm -rf 删除
2.2 分别在 3 台节点上创建 elasticsearch 的安装目录并准备安装包,然后解压安装包到该目录下
创建多级目录
mkdir -p /elk/es_cluster
tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz -C /elk/es_cluster/
chown -Rf support:support /elk
然后切换身份,进入 Elasticsearch 的安装目录进行配置
su support
cd /elk/es_cluster/elasticsearch-7.4.2/
注意:这里不能进行试错安装,一旦启动就成了单机版,因此需要配置完所有信息之后才能启动,这里以 node001 为例,其余两台节点的配置类似
2.3 配置节点
2.3.1 配置 jdk 的路径
首先切换到 jdk 11 所在的路径,然后 pwd 打印其路径并选中复制
然后在配置文件 elasticsearch-env 中添加 jdk 的路径,JAVA_HOME="/elk/es_single/elasticsearch-7.4.2/jdk"
修改文件的命令:vim bin/elasticsearch-env
2.3.2 如果是CentOS 6 的系统,需要在在 config 目录中的 elasticsearch.yml 添加以下内容
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
2.3.3 修改 GC
在 elasticsearch-7.4.2/config/jvm.options 文件中添加
-XX:+UseG1GC
然后注释掉:-XX:+UseConcMarkSweepGC
2.3.4 修改配置文件,vim /etc/security/limits.conf,在该文件末尾>添加以下内容
soft nofile 65535
hard nofile 65535
soft nproc 4096
hard nproc 4096
2.3.5 修改配置文件,/etc/sysctl.conf,设置最大内存为 262144
然后进行刷新操作,必须进行刷新操作,刷新的命令:sysctl -p
2.3.6 修改线程数为 4096
vim /etc/security/limits.d/90-nproc.conf
[然后刷新 sysctl -p]
2.4 最后修改 config/elasticsearch.yml 文件,进行环境的配置
node001 节点上的配置
需要修改的地方:
集群名称:cluster.name: my_elasticsearch
节点名称:node.name: node-1
开启可以访问的节点:network.host: 0.0.0.0 (设置所有节点都可以访问)
服务端口:http.port: 9200
最后再添加以下内容:
http.cors.enabled: true (是否开启跨域访问)
http.cors.allow-origin: "*" (开启跨域访问后的地址限制,*表示无限制)
discovery.seed_hosts: ["192.168.124.31", "192.168.124.32", "192.168.124.33"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
discovery.zen.ping_timeout: 60s
node002 节点上的配置
需要修改的地方:
集群名称:cluster.name: my_elasticsearch
节点名称:node.name: node-2
开启可以访问的节点:network.host: 0.0.0.0 (设置所有节点都可以访问)
服务端口:http.port: 9200
最后再添加以下内容:
http.cors.enabled: true (是否开启跨域访问)
http.cors.allow-origin: "" (开启跨域访问后的地址限制,表示无限制)
discovery.seed_hosts: ["192.168.124.31", "192.168.124.32", "192.168.124.33"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
discovery.zen.ping_timeout: 60s
node003 节点上的配置
需要修改的地方:
集群名称:cluster.name: my_elasticsearch
节点名称:node.name: node-3
开启可以访问的节点:network.host: 0.0.0.0 (设置所有节点都可以访问)
服务端口:http.port: 9200
最后再添加以下内容:
http.cors.enabled: true (是否开启跨域访问)
http.cors.allow-origin: "" (开启跨域访问后的地址限制,表示无限制)
discovery.seed_hosts: ["192.168.124.31", "192.168.124.32", "192.168.124.33"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
discovery.zen.ping_timeout: 60s
2.5 最后保存启动
发现没有报错,去浏览器中验证是否是否安装成功
在浏览器中键入:192.168.124.31:9200
在 head 插件中进行访问