Elasticsearch5.6.3集群安装及head、logstash插件离线安装

背景:
根据项目需求,需要将mysql数据库中的数据定时同步到es内,因此选定两台机器搭建es集群环境,搭建环境涉及到elasticsearch,elasticsearch-head插件,logstash,logstash-input-jdbc插件
安装环境:
操作系统: CentOS Linux release 7.3.1611 (Core)
Jdk版本:openJdk1.8(需要提前安装好,jdk版本不能低于1.8)
安装包:
elasticsearch-5.6.3;
nodejs(最新版本即可),elasticsearch-head(最新版本即可);
Logstash-5.6.3(需要和es版本保持一致,该版本已经集成了logstash-input-jdbc插件,因此无需再进行该插件的安装)

Elasticsearch(简称es)安装:

1、在/home目录创建elk目录,并将安装包上传到elk下:

创建目录命令:

mkdir elk

结果如下:
在这里插入图片描述

2、解压elasticsearch-5.6.3.tar.gz,得到解压后的文件夹elasticsearch-5.6.3:

解压命令:

tar -zxvf elasticsearch-5.6.3.tar.gz
结果如下:

在这里插入图片描述

3、修改es配置文件elasticsearch.yml相关配置项:

#集群名称 
cluster.name: es-5.6.3 
#节点名称
node.name: node-34  
#数据存储目录(多个路径用逗号分隔)
path.data: /var/es/data
#日志目录
path.logs: /var/es/logs
#是否锁定物理内存地址
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#修改一下ES的监听地址,这样别的机器才可以访问
network.host: 0.0.0.0
#监听端口(默认的就好)
http.port: 9200
#配置节点
discovery.zen.ping.unicast.hosts: ["192.168.1.33", "192.168.1.34"]
#配置最大主节点数
discovery.zen.minimum_master_nodes: 1
#增加新的参数,这样head插件才可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"

注:配置中的两个文件目录需要提前创建好

4、启动es

由于es无法用root用户启动,因此必须为es创建普通用户进行启动

(1)创建用户es:
useradd es
(2)为es用户设置密码:
passwd es 

在这里插入图片描述

(3)为用户赋权

该用户需要相应文件的操作权限:

chown -R es /home/elk
chown -R es /var/es/data
chown -R es /var/es/logs
(4)启动es:
切换到es用户:
su es

进入目录: /home/elk/elasticsearch-5.6.3/bin/,内容如下:
在这里插入图片描述

启动es:
./elasticsearch
后台启动命令:
./elasticsearch -d

启动日志如下:
在这里插入图片描述

通过启动日志可以看到启动失败,有两个错误:
错误1:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决方案:修改/etc/security/limits.conf配置文件,添加如下内容:

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

错误2:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方案:修改配置:在/etc/sysctl.conf 中加入vm.max_map_count=524288
执行命令:

vi /etc/sysctl.conf

在这里插入图片描述

执行命令使修改生效:

sudo sysctl -p

修改后再次启动es,可以看到启动成功了
在这里插入图片描述
验证es是否启动成功,可以打开浏览器访问如下地址:http://localhost:9200,结果发现无法访问:
在这里插入图片描述

排查是否防火墙问题:CentoOs7通过firewall进行防火墙配置
查看防火墙状态:

systemctl status firewalld

在这里插入图片描述

可以看到防火墙开启,我们可以关闭防火墙
关闭防火墙命令:

systemctl stop firewalld

也可以不关闭防火墙,转而开放9200端口,另外由于es一般部署在集群内,集群各节点之间是通过9300端口进行互通的,因此还要开放9300端口
永久打开9200/TCP端口:

firewall-cmd --permanent --add-port=9200/tcp

#重启防火墙,使添加的端口生效:

firewall-cmd --reload

再次访问,结果如下:
在这里插入图片描述
至此,es安装成功!

Elasticsearch-head插件安装

Elasticsearch内有海量数据和大规模集群,但是并没有提供管理客户端,所以如果我们想要管理这些数据和集群,那么肯定得借助其他的一些工具进行管理。
而ElasticSearch-head就是一款能连接ElasticSearch搜索引擎,并提供可视化的操作页面对ElasticSearch搜索引擎进行各种设置和数据检索功能的管理插件,如在head插件页面编写RESTful接口风格的请求,就可以对ElasticSearch中的数据进行增删改查、创建或者删除索引等操作。类似于使用navicat工具连接MySQL这种关系型数据库,对数据库做操作。
下图为head插件的运行页面:
在这里插入图片描述
下面介绍如何安装head插件:
安装思路:服务器环境经常为内网环境,不允许连接互联网,这样会让一些服务的安装变得复杂,elasticsearch-head同样如此。因此我们先在一台能联网的服务器(虚拟机即可)上进行在线安装,安装成功后再将其打包,放到内网环境上进行离线安装

第一步:在互联网环境上安装head插件,制作离线包:

1、下载nodejs,head插件

在这里插入图片描述

2、创建head-plugin目录

mkdir /usr/inspur/head-plugin

3、将下载好的node、head上传至tools目录,解压node和head

注意,此处要将node和head放到同一个目录下

tar -zxvf node-v12.2.0-linux-x64.tar.gz
unzip elasticsearch-head-master.zip

在这里插入图片描述

4、配置node、npm环境

ln -s /opt/tools/node-v12.2.0-linux-x64/bin/node /usr/local/bin/node 
ln -s /opt/tools/node-v12.2.0-linux-x64/bin/npm /usr/local/bin/npm

5、使用npm安装grunt

npm install -g grunt-cli

安装成功后会发现/usr/inspur/head-plugin/node-12.14.0/bin目录下多了grunt文件:
参考第二步配置grunt环境变量

ln –s /opt/tools/node-v12.2.0-linux-x64/bin/grunt /usr/local/bin/grunt	

在这里插入图片描述

6、使用命令验证nodejs、npm、grunt安装是否成功,能够看到版本号说明安装成功

node -v
npm –v
grunt -version

在这里插入图片描述

7、进入 elasticsearch-head 文件夹,执行命令,安装依赖的npm包

npm install grunt --save
npm install

注意:npm install 默认使用 http://www.npmjs.org 地址安装依赖,如果网络没有进行翻墙设置有时候现在第三方依赖包会出现卡死,或者安装失败的情况。使用国内镜像站点解决:
执行命令:

npm config set registry https://registry.npm.taobao.org
再次执行npm install命令就会发现安装成功

8、修改 elasticsearch-head 目录下的 Gruntfile.js 文件,在 options 属性内增加 hostname,设置为 0.0.0.0。

connect: {
  server: {
      options: {
          hostname: '0.0.0.0',
          port: 9100,
          base: '.',
          keepalive: true
      }
  }
}

9、在线安装成功后,制作离线包,打包node、head

tar zcf tools.tar.gz node-v12.14.0 elasticsearch-head	

得到离线包:es-head.tar.gz
至此,head插件离线包制作完毕!

第二步: 进行离线包的安装:

将第一步中制作好的离线包(es-head.tar.gz)拷贝到内网环境/home/elk/elasticsearch-head目录下,然后解压压缩包:
在这里插入图片描述
进入目录/home/elk/elasticsearch-head/node-12.14.0/bin,内容如下:
在这里插入图片描述
制作软连接:

ln -s /home/elk/elasticsearch-head/node-12.14.0/bin/node /usr/local/bin/node 
ln -s /home/elk/elasticsearch-head/node-12.14.0/bin/npm /usr/local/bin/npm
ln -s /home/elk/elasticsearch-head/node-12.14.0/bin grunt /usr/local/bin/grunt

进入/home/elk/elasticsearch-head/elasticsearch-head目录,执行命令启动head插件:

grunt server

后台启动命令:

setsid grunt server

看到如下界面说明执行成功:
在这里插入图片描述
浏览器中访问:http://localhost:9100 // 服务器ip换成自己的即可
在这里插入图片描述
至此,elasticsearch-head离线包安装成功!

Logstash安裝

下载与elasticsearch对应版本的Logstash安装包logstash-5.6.3.tar.gz,上传到已经创建好的目录/home/elk下,然后解压:
在这里插入图片描述
测试logstash,执行命令:

./home/elk/logstash-5.6.3/bin/logstash -e 'input { stdin{} } output { stdout{} }'

结果如下:
在这里插入图片描述
输入hello,然后回车:
在这里插入图片描述
至此,logstash安装成功!

如果想把mysql中的数据同步到elasticsearch内,需要用logstash-input-jdbc插件,该插件的安装方式也是较为复杂,需要现在互联网环境下安装成功,然后再打包成离线包放到内网环境中。
不过我发现在下载好的在logstash-5.6.3.tar.gz内已经集成了logstash-input-jdbc插件,无需再进行安装,因此此处不再讲解logstash-input-jdbc插件的安装方式,感兴趣的可自行上网百度!

发布了1 篇原创文章 · 获赞 1 · 访问量 25

猜你喜欢

转载自blog.csdn.net/yixiongmao/article/details/104016832
今日推荐