本文共 4082 字,大约阅读时间需要 13 分钟。
注意:别选太高版本的es,比如7.6.2
就需要jdk11了,我们选一个jdk8可以支持的版本。本文选择6.8.8,貌似这已经是最后一个支持jdk8的了
我们这里仅仅安装es,不考虑elk
一般要下载历史的版本,才能支持jdk8,官方会说明要求的jdk版本
如何查找到历史的版本:
找到past release
下载历史的版本 总体的教程参考官方文档即可:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/zip-targz.html
我们预先有了node1、node2、node3三台centos7的虚拟机,打算在这三个节点中搭建集群。首先是在node1先搭建单个节点试下
先安装一个单节点的es,并能单机跑起来,之后再考虑集群
elasticsearch-6.8.8.tar.gz
到node1/usr/local/es/
里# esexport ES_HOME=/usr/local/es/elasticsearch-6.8.8export PATH=$PATH:$ES_HOME/bin
useradd espasswd es输入密码
cd /usr/local/es/elasticsearch-6.8.8chown -R es:es elasticsearch-6.8.8
如不小心创建的用户名不喜欢,强迫症的话可以删除 (
userdel -r 用户名
(连home目录等删掉))
su - es#查看是否加到环境变量里头which elasticsearch#启动elasticsearch
如果没有上一步,会报没有权限的错误
Exception in thread "main" java.nio.file.AccessDeniedException: /usr/local/es/elasticsearch-6.8.8/config/jvm.options
运行时看到如下的信息,就是表示起来了
[root@node1 ~]# curl http://localhost:9200{ "name" : "G92wP23", "cluster_name" : "elasticsearch", "cluster_uuid" : "uz2s38YkQK-Tgh5JcP9HZw", "version" : { "number" : "6.8.8", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "2f4c224", "build_date" : "2020-03-18T23:22:18.622755Z", "build_snapshot" : false, "lucene_version" : "7.7.2", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search"}
至此,单节点启动成功了。但是,仍然推荐停掉单节点,做如下改进
上述不能远程连接,改一下配置文件
cd /usr/local/es/elasticsearch-6.8.8/vim config/elasticsearch.yml搜索network.host,可以看到是注释掉的(搜不要也不要紧,这步的目的只是不想配置乱写在某个位置)在下面增加 `network.host: 0.0.0.0` (0.0.0.0就表示不限制连接者的IP)
不知道为什么,改后启动就出错了,日志提示ERROR。还原刚刚的配置就没问题(在启动过程也有这个信息提示但仅仅是WARN)。如下
ERROR: [2] bootstrap checks failed[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535][2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
第一问题解决
如下操作全部用root用户vim /etc/security/limits.conf,增加如下两行内容(**数值参考日志提示的数字**)* soft nofile 65535* hard nofile 65535
第二个问题解决
如下操作全部用root用户vim /etc/sysctl.conf,增加如下一行代码(**数值参考日志提示的数字**)vm.max_map_count=262144#执行命令使得生效(一定要执行!!!)sysctl -p
补充问题,有时候还可能报线程问题,我们顺便一起加上
max number of threads [3818] for user [es] is too low, increase to at least [4096]
如下操作全部用root用户vim etc/security/limits.conf,在末尾增加(**数值参考日志提示的数字**)* soft nproc 4096* hard nproc 4096
修改后叉掉shell的tab,重新登录,这样才能生效
用chrome的ElasticSearch Head的插件即可连接(本地测试可以,也不知道这插件会不会偷偷发送密码)
1、如何查看我启动成功了?
除了上述可以连接,还可以jps
发现Elasticsearch
的进程 2、如何关闭es进程? kill
或kill -9
3、如何后台启动?
elasticsearch -d
(启动后jps可看到进程,但是访问http://node1:9200/
的话需要等一等,可能还没那么快可以完全起来) 4、如何要求连接使用密码?
(留到后续教程)我们先停掉单节点
cd vim config/elasticsearch.yml#必填,三个节点都用一样的值cluster.name: my-es-cluster#必填,三个节点的值各不相同,自己取个有意义的节点的名字node.name: node1#必填,支持ip或域名(三个节点的值一样)discovery.zen.ping.unicast.hosts: ["node1", "node2", "node3"]#非必须,但是为了能远程访问,请添加。三个节点的值一样network.host: 0.0.0.0#可能不需要官网没提到,但是很多博客提到了要改(三个节点的值一样)discovery.zen.minimum_master_nodes: 2#可能不需要官网没提到,但是很多博客提到了要改(三个节点的值一样)gateway.recover_after_nodes: 3
cd /usr/localscp -r es root@node2:@PWDscp -r es root@node3:@PWD
千万要注意:拷贝过去之后要把node2和node3机器上的 elasticsearch-6.8.8 下的data和logs目录
清理掉! 如果还启动不了,建议把node1的data和logs也可以一起清理掉。如果不清理,上述单节点启动时自动创建的data和logs目录会在scp拷贝到node2和node3后产生干扰,导致各节点不能成为一个集群整体(因为data下有数据干扰)。参考:https://www.cnblogs.com/lingblog/p/11924616.html
cd /usr/local/eschown -R es:es elasticsearch-6.8.8
启动es的时要注意,如果曾经使用root启动,即使root启动失败,也会产生root的日志文件,导致用es用户启动时没有权限追加日志到root的日志文件,解决办法是重新执行上述命令
逐个节点启动es
elasticsearch -d
(如果启动过程有问题,可以直接elasticsearch
让日志打印在前台,容易排查) 检查是否集群成功
* 在node1或node2或node3随便一台机器上执行`curl http://node1:9200/_cat/nodes?v` (将集群节点列出)* 可以使用chrome的es插件连上,连任何一个节点即可,例如http://node1:9200,连上后可看到是集群了