🥖ElasticSearch-03-ElasticSearch单机安装

了解完ElasticSearch基础和Elastic Stack生态后,我们便可以开始学习使用ElastiSearch了。所以本文主要介绍ElasticSearch和Kibana的单机安装。

官方网站

官方2.x中文教程中安装教程

官方ElasticSearch下载地址

官方Kibana下载地址

本系列教程基于ElasticSearch 7.x版本。

ElasticSearch 是基于Java平台的,所以先要安装Java. 默认es7匹配使用java11

🍼安装Java

安装 Elasticsearch 之前,你需要先安装一个较新的版本的 Java,最好的选择是,你可以从 www.java.com ✓ 获得官方提供的最新版本的 Java。安装以后,确认是否安装成功:

我这里还是默认的java8,但是不影响只是后面报个警告而已

  1. [root@n2 script]# java -version
  2. java version "1.8.0_171"
  3. Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
  4. Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

🍼下载ElasticSearch

这里下载ElasticSearch,比如可以通过curl下载

  1. [root@n2 script]# curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-linux-x86_64.tar.gz
  2. % Total % Received % Xferd Average Speed Time Time Time Current
  3. Dload Upload Total Spent Left Speed

🍼增加elasticSearch用户

必须创建一个非root用户来运行ElasticSearch(ElasticSearch5及以上版本,基于安全考虑,强制规定不能以root身份运行。)

如果你使用root用户来启动ElasticSearch,则会有如下错误信息:

  1. [2021-04-05T21:36:46,510][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [VM-0-14-centos] uncaught exception in thread [main]
  2. org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
  3. ....

所以我们增加一个独立的elasticsearch用户来运行

  1. #先创建组, 再创建用户
  2. [root@n2 ~]# groupadd elasticsearch
  3. # 增加elasticsearch用户
  4. [root@n2 script]# useradd es
  5. [root@n2 script]# passwd es
  6. mkdir -p /work/elasticsearch
  7. #用户es 添加到 elasticsearch 用户组
  8. [root@n2 ~]# usermod -G elasticsearch es
  9. [root@n2 ~]# chown -R es /work/elasticsearch/
  10. #设置sudo权限
  11. #为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作
  12. [root@n2 ~]# visudo
  13. #在root ALL=(ALL) ALL 一行下面
  14. #添加es用户 如下:
  15. es ALL=(ALL) ALL
  16. #添加成功保存后切换到es用户操作
  17. [root@n2 ~]# su es
  18. [es@n2 root]#

然后下载的tar包也好 上传的tar包也行,解压到我们的目录下面

  1. # 解压Elasticsearch
  2. su es
  3. cd /work/elasticsearch
  4. tar -zvxf elasticsearch-7.6.1-linux-x86_64.tar.gz

🍼添加data和log目录并修改配置文件

  1. cd /work/elasticsearch/elasticsearch-7.6.1/config
  2. mkdir -p /work/elasticsearch/elasticsearch-7.6.1/log
  3. mkdir -p /work/elasticsearch/elasticsearch-7.6.1/data
  4. cp elasticsearch.yml elasticsearch.yml.back
  5. vim elasticsearch.yml
  6. cluster.name: ralph-es
  7. node.name: es1
  8. path.data: /work/elasticsearch/elasticsearch-7.6.1/data
  9. path.logs: /work/elasticsearch/elasticsearch-7.6.1/log
  10. network.host: 0.0.0.0
  11. http.port: 9200
  12. discovery.seed_hosts: ["192.168.230.135"]
  13. cluster.initial_master_nodes: ["es1"]
  14. bootstrap.system_call_filter: false
  15. bootstrap.memory_lock: false
  16. http.cors.enabled: true
  17. http.cors.allow-origin: "*"

🍼修改JVM

修改jvm.option配置文件,调整jvm堆内存大小,每个人根据自己服务器的内存大小来进行调整.

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

🍼修改Linux系统的限制配置

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

ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

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

  1. sudo vim /etc/security/limits.conf
  2. * soft nofile 65536
  3. * hard nofile 131072
  4. * soft nproc 2048
  5. * hard nproc 4096

修改普通用户可以创建的最大线程数,如不修改可能会报错max number of threads [1024] for user [es] likely too low, increase to at least [4096]

  1. Centos6
  2. sudo vim /etc/security/limits.d/90-nproc.conf
  3. * soft nproc 1024 #修改为
  4. * soft nproc 4096
  5. Centos7
  6. sudo vim /etc/security/limits.d/20-nproc.conf
  7. * soft nproc 1024 #修改为
  8. * soft nproc 4096

普通用户调大虚拟内存,如不修改可能会报错max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

  1. vim /etc/sysctl.conf
  2. vm.max_map_count=262144

保存退出后 需要执行sysctl -p

以上三个问题解决完成之后,重新连接secureCRT或者重新连接xshell生效

🍼启动ES方式

  1. nohup /work/elasticsearch/elasticsearch-7.6.1/bin/elasticsearch 2>&1 &

也可以后台启动ES 进入bin目录 ./elasticsearch -d,启动成功之后jsp即可看到es的服务进程,并且访问页面,能够看到es启动之后的一些信息

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

ElasticSearch-03-ElasticSearch安装 - 图1

如有报错可以在对应的log下面看信息,注意关不selinux和防火墙

启动脚本

  1. #!/bin/bash
  2. export ES_HOME=/work/elasticsearch/elasticsearch-7.6.1/
  3. export PATH=$ES_HOME/bin:$PATH
  4. APP_NAME=elasticsearch
  5. usage() {
  6. echo "[INFO:] case:sh run.sh [start | stop | restart | status]"
  7. echo "[INFO:] Pls run ./es.sh start or ./es.sh restart"
  8. exit 1
  9. }
  10. case $1 in
  11. start)
  12. su es <<!
  13. cd $ES_HOME
  14. ./bin/elasticsearch -d -p pid
  15. exit
  16. !
  17. echo "[INFO:] elasticsearch is started"
  18. ;;
  19. stop)
  20. pid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v x-pack-ml |awk '{print $2}'`
  21. kill -9 $pid
  22. echo "[INFO:] elasticsearch is stopped"
  23. ;;
  24. restart)
  25. pid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v x-pack-ml |awk '{print $2}'`
  26. kill -9 $pid
  27. echo "[INFO:] elasticsearch is stopped"
  28. sleep 1
  29. su es<<!
  30. cd $ES_HOME
  31. ./bin/elasticsearch -d -p pid
  32. exit
  33. !
  34. echo "[INFO:] elasticsearch is started"
  35. ;;
  36. *)
  37. echo usage
  38. ;;
  39. esac
  40. exit 0

🍼安装Kibana

Kibana是界面化的查询数据的工具,开放9200端口与图形界面客户端交互,下载时尽量下载与ElasicSearch一致的版本。

这里下载Kibana,放置在对应目录并解压

  1. tar -vxzf kibana-7.6.1-linux-x86_64.tar.gz

编辑 kibana.yml

  1. server.port: 5601
  2. server.host: "服务器IP"
  3. elasticsearch.hosts: ["http://IP:9200"] #这里是elasticsearch的访问地址

启动kibana

  1. [es@n2 bin]$ pwd
  2. /work/elasticsearch/kibana-7.6.1-linux-x86_64/bin
  3. [es@n2 bin]$ nohup ./kibana &

访问界面

ElasticSearch-03-ElasticSearch安装 - 图2

可以导入simple data

ElasticSearch-03-ElasticSearch安装 - 图3

密码配置

  1. 停止kibana和elasticsearch服务
  2. xpack.security.enabled设置添加到ES_PATH_CONF/elasticsearch.yml文件并将值设置为true
  3. 启动elasticsearch (./bin/elasticsearch -d)
  4. 执行如下密码设置器,./bin/elasticsearch-setup-passwords interactive来设置各个组件的密码
  5. 将elasticsearch.username设置添加到KIB_PATH_CONF/kibana.yml 文件并将值设置给elastic用户: elasticsearch.username: "elastic"
  6. 创建kibana keystore, ./bin/kibana-keystore create
  7. 在kibana keystore 中添加密码 ./bin/kibana-keystore add elasticsearch.password
  8. 重启kibana 服务即可 nohup ./bin/kibana &

ElasticSearch-03-ElasticSearch安装 - 图4

🍼安装IK分词器

我们后续也需要使用Elasticsearch来进行中文分词,所以需要单独给Elasticsearch安装IK分词器插件。

下载Elasticsearch IK分词器

  1. https://github.com/medcl/elasticsearch-analysis-ik/releases

使用es用户放置在插件目录下

  1. /work/elasticsearch/elasticsearch-7.6.1/plugins/ik

下载好后解压安装

  1. unzip elasticsearch-analysis-ik-7.6.1.zip

❗ 重启Elasticsearch

🥖ElasticSearch-03-ElasticSearch集群安装

同上面的单机安装, 所有的配置环境一样,仅在配置==elasticsearch.yml==中发生一点点的改变

IP ES-NodeName ES-NodeName配置
192.168.230.135 es1 4C8U
192.168.230.134 es2 4C8U
192.168.230.133 es3 2C4U
  1. #集群名称
  2. cluster.name: ralph-es
  3. #节点名称
  4. node.name: es1
  5. #索引数据存放路径
  6. path.data: /work/elasticsearch/elasticsearch-7.6.1/data
  7. #日志存放路径
  8. path.logs: /work/elasticsearch/elasticsearch-7.6.1/log
  9. #当前服务器IP地址
  10. network.host: 192.168.230.135
  11. #es服务对外提供的端口号
  12. http.port: 9200
  13. #服务发现的端口号(集群的服务端口,集群的时候一定要设置该参数)
  14. transport.tcp.port: 9300
  15. #设置是否压缩tcp传输时的数据,默认为false,不压缩
  16. transport.tcp.compress: true
  17. #集群各个节点的ip
  18. discovery.seed_hosts: ["192.168.230.135","192.168.230.134","192.168.230.133"]
  19. #集群各个节点名称,集群选举设置
  20. cluster.initial_master_nodes: ["es1","es2","es3"]
  21. #锁定物理内存地址,设置为true可以锁住ES使用的内存,避免内存进行swap
  22. bootstrap.memory_lock: false
  23. #避免脑裂问题,集群节点数最少为半数+1
  24. discovery.zen.minimum_master_nodes: 2
  25. bootstrap.system_call_filter: false
  26. #开启跨域
  27. http.cors.enabled: true
  28. http.cors.allow-origin: "*"
  1. #集群名称
  2. cluster.name: ralph-es
  3. #节点名称
  4. node.name: es2
  5. #索引数据存放路径
  6. path.data: /work/elasticsearch/elasticsearch-7.6.1/data
  7. #日志存放路径
  8. path.logs: /work/elasticsearch/elasticsearch-7.6.1/log
  9. #当前服务器IP地址
  10. network.host: 192.168.230.134
  11. #es服务对外提供的端口号
  12. http.port: 9200
  13. #服务发现的端口号(集群的服务端口,集群的时候一定要设置该参数)
  14. transport.tcp.port: 9300
  15. #设置是否压缩tcp传输时的数据,默认为false,不压缩
  16. transport.tcp.compress: true
  17. #集群各个节点的ip
  18. discovery.seed_hosts: ["192.168.230.135","192.168.230.134","192.168.230.133"]
  19. #集群各个节点名称,集群选举设置
  20. cluster.initial_master_nodes: ["es1","es2","es3"]
  21. #锁定物理内存地址,设置为true可以锁住ES使用的内存,避免内存进行swap
  22. bootstrap.memory_lock: false
  23. #避免脑裂问题,集群节点数最少为半数+1
  24. discovery.zen.minimum_master_nodes: 2
  25. bootstrap.system_call_filter: false
  26. #开启跨域
  27. http.cors.enabled: true
  28. http.cors.allow-origin: "*"
  1. #集群名称
  2. cluster.name: ralph-es
  3. #节点名称
  4. node.name: es3
  5. #索引数据存放路径
  6. path.data: /work/elasticsearch/elasticsearch-7.6.1/data
  7. #日志存放路径
  8. path.logs: /work/elasticsearch/elasticsearch-7.6.1/log
  9. #当前服务器IP地址
  10. network.host: 192.168.230.133
  11. #es服务对外提供的端口号
  12. http.port: 9200
  13. #服务发现的端口号(集群的服务端口,集群的时候一定要设置该参数)
  14. transport.tcp.port: 9300
  15. #设置是否压缩tcp传输时的数据,默认为false,不压缩
  16. transport.tcp.compress: true
  17. #集群各个节点的ip
  18. discovery.seed_hosts: ["192.168.230.135","192.168.230.134","192.168.230.133"]
  19. #集群各个节点名称,集群选举设置
  20. cluster.initial_master_nodes: ["es1","es2","es3"]
  21. #锁定物理内存地址,设置为true可以锁住ES使用的内存,避免内存进行swap
  22. bootstrap.memory_lock: false
  23. #避免脑裂问题,集群节点数最少为半数+1
  24. discovery.zen.minimum_master_nodes: 2
  25. bootstrap.system_call_filter: false
  26. #开启跨域
  27. http.cors.enabled: true
  28. http.cors.allow-origin: "*"

可以只在一个节点中安装Kibana

  1. GET _cat/nodes?v
  2. GET _cat/health?v

ElasticSearch-03-ElasticSearch安装 - 图5

🍼Elasticsearch-head插件

由于es服务启动之后,访问界面比较丑陋,为了更好的查看索引库当中的信息,我们可以通过安装elasticsearch-head这个插件来实现,这个插件可以更方便快捷的看到es的管理界面

elasticsearch-head这个插件是es提供的一个用于图形化界面查看的一个插件工具,可以安装上这个插件之后,通过这个插件来实现我们通过浏览器查看es当中的数据

具体的安装可以参考这份文档来完成

ElasticSearch-03-ElasticSearch安装 - 图6