Centos7安装elastic 6.x(6.8.8)集群(亲测可行)

安装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,killkill -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,连上后可看到是集群了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值