安装elastic集群
注意:别选太高版本的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单节点
先安装一个单节点的es,并能单机跑起来,之后再考虑集群
- 先关闭麻烦的防火墙,三个节点都关闭
- 上传
elasticsearch-6.8.8.tar.gz
到node1 - 解压到
/usr/local/es/
里 - 配置环境变量,方便执行命令(可选)
# es
export ES_HOME=/usr/local/es/elasticsearch-6.8.8
export PATH=$PATH:$ES_HOME/bin
- 创建 es 用户(因为不允许用root启动es,用户名叫什么不要紧非root即可)
useradd es
passwd es
输入密码
- 将 elasticsearch-6.8.8 目录的所有者改成es用户,否则启动时会没权限而失败(此目录本是root用户解压出来的)
cd /usr/local/es/elasticsearch-6.8.8
chown -R es:es elasticsearch-6.8.8
- 切换到es用户并启动
如不小心创建的用户名不喜欢,强迫症的话可以删除 (
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
- 连接
另外开一个shell窗口(当然另外开了,刚刚你是前台启动的模式,已经占用了窗口了)
运行时看到如下的信息,就是表示起来了
[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进程?
- ctrl+c关闭(适用于前台启动)
- jps查看进程id,
kill
或kill -9
3、如何后台启动?
elasticsearch -d
(启动后jps可看到进程,但是访问http://node1:9200/
的话需要等一等,可能还没那么快可以完全起来)
4、如何要求连接使用密码?
(留到后续教程)
搭建es集群
我们先停掉单节点
- 在node2和node3建es用户(参考上面章节)
- 为了避免麻烦,将node2和node3也一起更新对linux文件描述符、线程数、内存等的配置,详见上述启动报错的章节
- 进一步修改配置文件
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
- 将node1的es目录拷贝到node2和node3
cd /usr/local
scp -r es root@node2:@PWD
scp -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
- 将node2和node3上的es目录授权给es用户,分别执行(用root来执行)
cd /usr/local/es
chown -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,连上后可看到是集群了
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135266.html