安装包

自己自行准备,或者用我百度网盘的安装包,

ElasticSearch Logstash Kibana FileBeat :

链接: https://pan.baidu.com/s/1_Iv2R8pmYaHkoaOk_m8OuQ 提取码: 5ezt 复制这段内容 : 后打开百度网盘手机App,操作更方便哦

创建普通用户

ES不能使用root用户来启动,必须使用普通用户来安装启动。这里我们创建一个普通用户以及定义一些常规目录用于存放我们的数据文件以及安装包等。
创建一个es专门的用户(必须)

使用root用户在服务器执行以下命令:

  1. 先创建组, 再创建用户:
  2. 1)创建 elasticsearch 用户组
  3. [[root@zjj102 ~]# groupadd elasticsearch
  4. 2)创建用户 zjj 并设置密码
  5. [root@zjj102 ~]# useradd zjj
  6. [root@zjj102 ~]# passwd zjj
  7. 3)# 创建es文件夹,
  8. 并修改ownerzjj用户
  9. [root@zjj102 ~]# mkdir -p /usr/local/es
  10. [root@zjj102 ~]# mkdir -p /usr/local/es/elasticsearch-7.6.1
  11. 4)用户es 添加到 elasticsearch 用户组
  12. [root@zjj102 ~]# usermod -G elasticsearch zjj
  13. #注意,如果没有elasticsearch-7.6.1文件夹就先创建一个
  14. [root@zjj102 ~]# chown -R zjj /usr/local/es/elasticsearch-7.6.1
  15. 5)设置sudo权限
  16. #为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作
  17. #三台机器使用root用户执行visudo命令然后为es用户添加权限
  18. [root@zjj102 ~]# visudo
  19. #在root ALL=(ALL) ALL 一行下面
  20. #添加tlbaiqi用户 如下:
  21. zjj ALL=(ALL) ALL
  22. #添加成功保存后切换到tlbaiqi用户操作
  23. [root@zjj102 ~]# su zjj
  24. [zjj@zjj102 root]$

上传压缩包并解压

将es的安装包下载并上传到服务器的/usr/local/es 路径下,然后进行解压

使用zjj用户来执行以下操作,将es安装包上传到指定服务器,并使用es用户执行以下命令解压。

  1. # 解压Elasticsearch
  2. # 用zjj账号操作
  3. su zjj
  4. cd /usr/local/es
  5. # 解压 /usr/local/es下的ElasticSearch安装包
  6. tar -zvxf elasticsearch-7.6.1-linux-x86_64.tar.gz -C /usr/local/es/

修改配置文件

修改elasticsearch.yml

进入服务器使用zjj用户来修改配置文件

  1. cd /usr/local/es/elasticsearch-7.6.1/config
  2. mkdir -p /usr/local/es/elasticsearch-7.6.1/log
  3. mkdir -p /usr/local/es/elasticsearch-7.6.1/data
  4. rm -rf elasticsearch.yml
  5. vim elasticsearch.yml

其中 elasticsearch.yml 的内容是

注意 node.name 配置, 每个机器的配置不能是一样的.

  1. # 配置集群名称,保证每个节点的名称相同,如此就能都处于一个集群之内了
  2. cluster.name: zjj-es
  3. # 每一个节点的名称,必须不一样
  4. node.name: node1
  5. path.data: /usr/local/es/elasticsearch-7.6.1/data
  6. path.logs: /usr/local/es/elasticsearch-7.6.1/log
  7. network.host: 0.0.0.0
  8. # http端口(使用默认即可)
  9. http.port: 9200
  10. # 集群列表,你es集群的ip地址列表
  11. discovery.seed_hosts: ["zjj101", "zjj102", "zjj103"]
  12. # 启动的时候使用一个master节点
  13. cluster.initial_master_nodes: ["node1"]
  14. bootstrap.system_call_filter: false
  15. bootstrap.memory_lock: false
  16. http.cors.enabled: true
  17. http.cors.allow-origin: "*"

修改jvm.option

修改jvm.option配置文件,调整jvm堆内存大小

使用zjj用户执行以下命令调整jvm堆内存大小,每个人根据自己服务器的内存大小来进行调整。

当然也可以不调整

  1. cd /usr/local/es/elasticsearch-7.6.1/config
  2. vim jvm.options
  3. -Xms2g
  4. -Xmx2g

修改系统配置,解决启动时候的问题

由于现在使用普通用户来安装es服务,且es服务对服务器的资源要求比较多,包括内存大小,线程数等。所以我们需要给普通用户解开资源的束缚

普通用户打开文件的最大数限制

问题错误信息描述:

max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错

三台机器使用root用户执行以下命令解除打开文件数据的限制,如果你用zjj用户访问的话可能没有权限.

su root 进入 root用户

sudo vi /etc/security/limits.conf

在最下面添加如下内容: 注意*不要去掉了

  1. * soft nofile 65536
  2. * hard nofile 131072
  3. * soft nproc 2048
  4. * hard nproc 4096

此文件修改后需要重新登录用户,才会生效 ,

普通用户启动线程数限制

问题错误信息描述

max number of threads [1024] for user [es] likely too low, increase to at least [4096]

修改普通用户可以创建的最大线程数

max number of threads [1024] for user [es] likely too low, increase to at least [4096]原因:无法创建本地线程问题,用户最大可创建线程数太小解决方案:修改90-nproc.conf 配置文件。

三台机器使用root用户执行以下命令修改配置文件

  1. 如果是Centos6,执行下面的命令
  2. sudo vi /etc/security/limits.d/90-nproc.conf
  3. 如果是Centos7,执行下面的命令
  4. sudo vi /etc/security/limits.d/20-nproc.conf

找到如下内容:

  1. * soft nproc 1024#修改为
  2. * soft nproc 4096

操作完了再从root用户切换到zjj用户上

普通用户调大虚拟内存

错误信息描述:

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

调大系统的虚拟内存

原因:最大虚拟内存太小

每次启动机器都手动执行下。

三台机器执行以下命令

编辑 vim /etc/sysctl.conf,最后一行添加以下内容:vm.max_map_count=262144 保存后,执行:sysctl -p

  1. vm.max_map_count=262144

执行完了 sysctl -p 之后看到 下面的输出和你配置的一样,说明配置成功了.

  1. [root@zjj103 config]# sysctl -p
  2. vm.max_map_count = 262144

启动ES服务

三台机器使用zjj用户执行以下命令启动es服务

先切换到 zjj用户,

  1. # 切换用户
  2. su zjj
  3. # 后台启动es
  4. nohup /usr/local/es/elasticsearch-7.6.1/bin/elasticsearch 2>&1 &

执行完了之后, 再执行 tail -f nohup.out 查看日志,如果没有错误日志的话, 几乎说明启动成功了.

或者使用 进入ElasticSearch安装的 bin目录 ,执行 ./elasticsearch -d , 这个命令也是后台启动的命令,执行完成之后需要去ElasticSearch的log目录下去看 日志

启动成功之后 即可看到es的服务进程,并且访问页面

  1. [zjj@zjj101 log]$ jps -l
  2. 45733 org.elasticsearch.bootstrap.Elasticsearch
  3. 46744 sun.tools.jps.Jps

浏览器访问

  1. http://zjj101:9200/?pretty

然后浏览器就会显示

  1. {
  2. "name" : "node1",
  3. "cluster_name" : "zjj-es",
  4. "cluster_uuid" : "UJHVhECxRye0OxsAbShzRg",
  5. "version" : {
  6. "number" : "7.6.1",
  7. "build_flavor" : "default",
  8. "build_type" : "tar",
  9. "build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b",
  10. "build_date" : "2020-02-29T00:15:25.529771Z",
  11. "build_snapshot" : false,
  12. "lucene_version" : "8.4.0",
  13. "minimum_wire_compatibility_version" : "6.8.0",
  14. "minimum_index_compatibility_version" : "6.0.0-beta1"
  15. },
  16. "tagline" : "You Know, for Search"
  17. }

浏览器访问二号机器: http://zjj102:9200/?pretty 后浏览器显示内容

  1. {
  2. "name" : "node2",
  3. "cluster_name" : "zjj-es",
  4. "cluster_uuid" : "UJHVhECxRye0OxsAbShzRg",
  5. "version" : {
  6. "number" : "7.6.1",
  7. "build_flavor" : "default",
  8. "build_type" : "tar",
  9. "build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b",
  10. "build_date" : "2020-02-29T00:15:25.529771Z",
  11. "build_snapshot" : false,
  12. "lucene_version" : "8.4.0",
  13. "minimum_wire_compatibility_version" : "6.8.0",
  14. "minimum_index_compatibility_version" : "6.0.0-beta1"
  15. },
  16. "tagline" : "You Know, for Search"
  17. }

浏览器访问 http://zjj103:9200/?pretty 之后,浏览器显示的结果

  1. {
  2. "name" : "node3",
  3. "cluster_name" : "zjj-es",
  4. "cluster_uuid" : "UJHVhECxRye0OxsAbShzRg",
  5. "version" : {
  6. "number" : "7.6.1",
  7. "build_flavor" : "default",
  8. "build_type" : "tar",
  9. "build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b",
  10. "build_date" : "2020-02-29T00:15:25.529771Z",
  11. "build_snapshot" : false,
  12. "lucene_version" : "8.4.0",
  13. "minimum_wire_compatibility_version" : "6.8.0",
  14. "minimum_index_compatibility_version" : "6.0.0-beta1"
  15. },
  16. "tagline" : "You Know, for Search"
  17. }

如果启动失败了看日志

能够看到es启动之后的一些信息

注意:如果哪一台机器服务启动失败,那么就到哪一台机器的

  1. /usr/local/es/elasticsearch-7.6.1/log
  2. xxx-es.log 里面的内容

这个路径下面去查看错误日志

关闭Linux防火墙

永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop

注意:启动ES的时候出现 Permission denied

原因:当前的用户没有对XX文件或目录的操作权限

搭建使用Kibana查看ElasticSearch的状况

https://zjj1994.blog.csdn.net/article/details/121065281

搭建成功之后,在 Dev Tools 执行 GET _cat/health?v 查看集群情况

image.png

  1. epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
  2. 1635667141 07:59:01 zjj-es green 3 3 6 3 0 0 0 0 - 100.0%

说明 :

集群的状态(status):red红表示集群不可用,有故障。yellow黄表示集群不可靠但可用,一般单节点时就是此状态。green正常状态,表示集群一切正常。

节点数(node.total):节点数,这里是2,表示该集群有两个节点。

数据节点数(node.data):存储数据的节点数,这里是2。数据节点在Elasticsearch概念介绍有。

分片数(shards):这是12,表示我们把数据分成多少块存储。

主分片数(pri):primary shards,这里是6,实际上是分片数的两倍,因为有一个副本,如果有两个副本,这里的数量应该是分片数的三倍,这个会跟后面的索引分片数对应起来,这里只是个总数。

激活的分片百分比(active_shards_percent):这里可以理解为加载的数据分片数,只有加载所有的分片数,集群才算正常启动,在启动的过程中,如果我们不断刷新这个页面,我们会发现这个百分比会不断加大。

集群的状态(status):red红表示集群不可用,有故障。yellow黄表示集群不可靠但可用,一般单节点时就是此状态。green正常状态,表示集群一切正常。

节点数(node.total):节点数,这里是2,表示该集群有两个节点。

数据节点数(node.data):存储数据的节点数,这里是2。数据节点在Elasticsearch概念介绍有。

分片数(shards):这是12,表示我们把数据分成多少块存储。

主分片数(pri):primary shards,这里是6,实际上是分片数的两倍,因为有一个副本,如果有两个副本,这里的数量应该是分片数的三倍,这个会跟后面的索引分片数对应起来,这里只是个总数。