最近公司需要一个Es环境,于是借此机会对Es和可视化的安装流程进行了一次梳理。现在ES已经到7.7了跟我以前接触的版本还是存在一些不同,在Linux环境下安装也存在不少坑。不过还好的是这些坑都还不够深。以下就Linux环境的ES安装来一个从0开始的搭建流程。
前话—安装JDK
由于从ES6.5开始就支持了Java11,所以我从这开始就直接装Java11的环境,避免一些环境问题。
在安装 Elasticsearch 之前,您需安装并配置好 JDK, 设置好环境变量 $JAVA_HOME。至于JDK的下载我就不多叙述了,送上一个网盘链接:JDK11百度云盘
- 下载完成将文件移动 /home/ 并解压
tar -xvf 名称.tar.gz
- 重命名解压文件,看自己的喜好了
mv jdk-11/ jdk11/
- 配置环境变量,编辑文件 vim /etc/profile 在末尾添加以下内容
JAVA_HOME=/home/jdk11
JRE_HOME=$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME JRE_HOME PATH
- 配置生效
source /etc/profile
正文—安装ES
以下操作会基于root用户和新建的elastic用户操作,请操作的时候注意看清楚是用哪个用户哦!
下载 Elasticsearch
访问 Elasticsearch 官网 https://www.elastic.co/cn/downloads/elasticsearch 下载安装包:
笔者这里下载的是 Linux系统 Elasticsearch V7.7.0 版本作为演示。实际的环境上我搭建的5.x的版本,懒得回去截图了就以7.7作为演示吧。
下载成功后,解压到指定目录:
tar -zxvf elasticsearch-7.7.0-darwin-x86_64.tar.gz
进入解压后的目录,结构如下:
Elasticsearch 目录、配置文件说明、注意点
这里大概解答下各个目录、配置文件的作用:
配置信息
针对ES的配置主要是去修改elasticsearch.yml和jvm.options
具体可见以下常用配置项目
- elasticsearch.yml
# ================= Elasticsearch Configuration ===================
# #配置es的集群名称, es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: xxx
# #节点名称
node.name: master
# #指定该节点是否有资格被选举成为node
node.master: true
# 这两个路径看你具体情况写,但是都需要授权给elastic用户,否则会启动报错
path.logs: /home/elasticsearch-7.7.0/var/logs
path.data: /home/elasticsearch-7.7.0/var/data
# #指定该节点是否存储索引数据,默认为true。
node.data: true
# #设置绑定的ip地址还有其它节点和该节点交互的ip地址,本机ip
network.host: 192.168.95.129
# #指定http端口,你使用head、kopf等相关插件使用的端口
http.port: 9200
# #设置节点间交互的tcp端口,默认是9300。
transport.tcp.port: 9300
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。
discovery.zen.ping.unicast.hosts: ["192.168.95.129:9300","192.168.95.130:9300"]
#如果要使用head,那么需要增加新的参数,使head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"
- jvm.options
这个配置项目里面主要是根据实际需求修改一个jvm大小等,一般情况不需要怎么修改。
笔者给公司搭的只是一个单节点的ES,所有有些集群发现的配置并没有弄。
Ps: 更多具体配置可以在Elasticsearch官网查看
后续—运行ES
这个环境就是踩坑环节了,别着急慢慢来。
执行启动命令:
bin/elasticsearch
错误一:
Elasticsearch可以接收用户输入的脚本并且执行,处于安全考虑,他不能root账户来启动。
- 解决办法
- groupadd elastic
- useradd -g elastic elastic
- chown -R elastic:elastic /es文件路径
错误二:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
- 解决办法
- 每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量
ulimit -Hn
ulimit -Sn - 修改/etc/security/limits.conf文件,增加配置,用户退出后重新登录生效
- 每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量
* soft nofile 65536
* hard nofile 65536
错误三:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
- 解决办法
- 修改/etc/sysctl.conf文件,增加配置vm.max_map_count=262144
vi /etc/sysctl.conf
sysctl -p
待上面的问题都出现并解决了后,你就可以以elastic(su elastic)用户启动ES了
默认访问端口9200
到此ES的单机搭建基本就完成了,至于集群搭建再踩完了单机的坑后,都是很简单的事情了,我就不再赘述。
加餐—Head插件
安装好ES后,你就可以通过官网提供的相关命令开进行索引的创建,但是更多人还是习惯用界面直接操作。Elasticsearch-head 是用于监控 ES 状态的客户端插件,包括数据可视化、执行增删改查操作等。一个类似于SQLyog的可视化工具。相比于Head还有一个和ES无缝衔接的可视化插件Kibana,这个插件功能能强大也更美观,我下节再跟大家分享。
环境准备
- Git
- Nodejs
安装Nodejs环境
wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz //下载
xz -d node-v10.15.3-linux-x64.tar.xz //解压xz格式
tar -xf node-v10.15.3-linux-x64.tar //最终解压
配置环境变量
vim /etc/profile
export NODE_HOME=/usr/local/node
export PATH=$PATH:$NODE_HOME/bin
# 配置立马生效
source /etc/profile
查看版本
[elsearch@imok bin]$ node -v
v6.10.2
[elsearch@imok bin]$ npm -v
3.10.10
下载Head插件
如果未安装git ,则先安装git工具
yum install –y git
git clone https://github.com/mobz/elasticsearch-head.git
安装grunt
cd elasticsearch-head
npm install -g grunt --registry=https://registry.npm.taobao.org
安装插件
npm install
对于Head的配置主要涉及两个配置文件,尤其是 _site/app.js 这个配置文件,如果不进行合理配置前端将无法访问到ES的资源。
配置一
修改配置 elasticsearch-head下Gruntfile.js文件
主要是修改其监听端口,如果你的ES不是使用的9200默认监听端口。
配置二
笔者在这里躺了一个大坑,就是访问前端head界面9200,其索引数据和集群健康数据没有,后来F12查看到原来是访问了Localhost。就是因为app.js的缘故。
启动Head插件服务
/elasticsearch-head/node_modules/grunt/bin/grunt server &
或者 npm run start
到这呢就算是大功告成了。其实Es的搭建不算太难,多点耐心再看看我躺过坑你应该很顺利的就能搞定。
后面呢等我玩玩Kibana再来写一个Kibana的搭建流程。如果该文对你有的学习帮助,欢迎关注。