elasticsearch 环境搭建
准备环境
1、JDK1.8版本,在5.X版本之后要求必须使用JDK8级以上版本
2、准备elasticsearch安装包,我这里使用的是6.X版本的
3、准备好Linux,我这里准备了三台centos7来进行搭建
下面说下如果不会进行搭建Linux的可以找曾经的docker
这个章节进行学习,docker第一章有介绍到如何搭建环境
这里给出相应的下载地址
JDK1.8
:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Elasticearch
:https://www.elastic.co/downloads/elasticsearch
centos7
:https://www.centos.org
这里需要你提前安装好JDK
环境,这个就非常简单了,如果这个都搞不定的话,是不会来学习这个技术的!所以不再这里进行详细的说明了!
下面进行的是安装过程,这里就进行流水账的方式进行记录了
首先我分配了三台Linux
虚拟机:
地址 | 192.168.56.60 | 192.168.56.61 | 192.168.56.62 |
---|---|---|---|
名称 | ETL-node1 | ETL-node2 | ETL-node3 |
作用 |
一、单节点安装配置及配置文件参数说明
上面是准备好的基础环境,这里是三台Linux
都已经装好了JDK
环境,并且安装文件以及放在了/usr/local/server
目录下面
如上图环境已经准备完毕,左边的是node1,右上的是node2,右下是node3
解压elasticsearch-6.3.zip
文件
$ yum install -y zip unzip
$ unzip elasticsearch-6.3.zip
先来看下目录结构吧
bin
:存放着一些脚本
lib
:库文件
logs
:日志文件
config
:配置文件
modules
:加载的模块列表,内置插件
plugins
:自定义插件
去看elasticsearch.yml
配置文件中的属性吧:
cluster.name:
node.name:
cluster.name: elasticsearch
node.name: es-node01
bootstrap.memory_lock: true
network.host: 192.168.1.101
bootstrap.system_call_filter: false
http.port: 9200
bootstrap.memory_lock: true
#旧版本叫bootstrap.mlockall: true
按照上面这个内容将其配置好,然后就可以进行启动了!
我这里整理一份我的node1
节点的elasticsearch.yml
配置信息:
cluster.name: elasticsearch
node.name: node-01
bootstrap.memory_lock: true
network.host: 192.168.56.60
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.56.61", "192.168.56.62"]
discovery.zen.minimum_master_nodes: 3
gateway.recover_after_nodes: 3
node1
节点的jvm-options
配置文件
修改jvm内存设置,这里根据自己的具体情况进行设置
-Xms1g
-Xmx1g
使用命令
$ ./bin/elasticsearch
启动的时候需要注意,之前我都是使用的root
用户进行操作的,但是elasticsearch
为了安全起见,是不允许使用root
进行启动的,所以我们先创建一个账号
和用户组
,然后把elasticsearch
的文件夹设置成这个账号和用户组中的文件,现在我的elasticsearch
文件下的所有文件都是root:root
root用户和root用户组下面的内容
创建用户用户组:
$ groupadd elc
$ useradd elc -g elc -p elc
$ chown -R elc:elc elasticsearch-6.3.0
重新设置一个好记的密码给elc
用户
使用下面命令,后面输入两次密码就可以了
$ passwd elc
想要使用sudo
不输密码,去修改下面文件
$ sudo vim /etc/sudoers
保存使用qw!
好了现在开始在进行启动
启动之前切换用户,运行elasticsearch
启动脚本,这个脚本在elasticsearch
文件目录的bin
目录下面
$ su elc
$ ./bin/elasticsearch
启动的时候报错了,想办法把他解决掉
二、启动错误解决
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: memory locking requested for elasticsearch process but memory is not locked
[3]: max number of threads [3886] for user [elc] is too low, increase to at least [4096]
[4]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
来看一下这四个错误:
1、[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
原因:无法创建本地文件问题,用户最大可创建文件数太少
解决办法:切换到root用户,编辑/etc/security/limits.conf
配置文件,添加相关内容
* soft nofile 65536
* hard nofile 131072
备注:* 代表Linux所有用户名称
2、[2]: memory locking requested for elasticsearch process but memory is not locked
原因:因为我们在配置文件中配置了锁定内存,但是现在elasticsearch
无法锁定内存,所以报错
解决办法:
切换到root用户,编辑/etc/security/limits.conf
配置文件,添加如下内容
* soft memlock unlimited
* hard memlock unlimited
保存、退出、重新登录才可生效
临时取消限制
ulimit -l unlimited
增加/etc/security/limits.conf
解决上面两个问题
重新启动
只剩下后面两个错误了
注意:上面这两个错误需要保存退出之后重新登录才有效
3、[3]:max number of threads [3886] for user [elc] is too low, increase to at least [4096]
原因:
无法创建本地线程,用户最大可创建线程数太少
解决办法:
切换到root用户,修改文件/etc/security/limits.d/90-nproc.conf
这里需要注意的是,在centos6
中是90-nproc.conf
这个文件,在centos7
中是20-nproc.conf
这个文件
在修改完成之后需要重启机器或者退出终端重新进入才能生效
将
* soft nproc 3886
修改为
* soft nproc 4096
这里配置完成之后使用命令,查看
$ ulimit -a
因为我的是centos7
设置了这个地方并没有生效所以,我还要在/etc/security/limits.conf
文件中添加两个配置
* soft nproc 4096
* hard nproc 4096
设置完成之后退出终端,使用命令查看
上面这些配置就是我们设置的这些配置,包括什么文件打开限制,用户线程限制等等
4、[4]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因:最大虚拟内存太小
解决办法:切换到root用户下,修改配置文件/etc/sysctl.conf
添加如下配置
vm.max_map_count=655360
修改完成之后执行
$ sysctl -p
上面这些内容设置完成之后重新启动elasticsearch
好了启动是启动完成了,也没有报错,但是没有启动成功,因为我们在配置文件中配置了服务发现新相关的内容,他需要三个节点启动成功之后然后才能启动,我们是需要3个节点,现在只有一个,等会我们按照上面的配置在将其他节点进行配置上!
三、配置其他节点
上面呢,我们只是吧192.168.56.60
这台机器上的node1
节点配置完成,接下来根据上面的两节内容将下面的剩余节点配置完成,那么在后面的两个节点当中我就只会列出我的配置文件,错误的解决上面已经说了,包括jdk8
的安装,用户的新建,以及用户权限,文件权限这些内容后面就不会再讲
192.168.56.61
机器node2
节点elasticsearch.yml
配置文件列表:
cluster.name: elasticsearch
node.name: node-02
node.attr.rack: r1
bootstrap.memory_lock: true
network.host: 192.168.56.61
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.56.60", "192.168.56.62"]
discovery.zen.minimum_master_nodes: 3
gateway.recover_after_nodes: 3
192.168.56.62
机器node3
节点elasticsearch.yml
配置文件列表:
cluster.name: elasticsearch
node.name: node-03
node.attr.rack: r1
bootstrap.memory_lock: true
network.host: 192.168.56.62
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.56.60", "192.168.56.61"]
discovery.zen.minimum_master_nodes: 3
gateway.recover_after_nodes: 3
上面这两个就是node2
和node3
的节点配置,按照上面的配置文件进行配置的
按照上面的配置配置完成之后,分别启动三台节点
这个时候有个问题,就是防火墙的问题,他们之间是需要进行互相之间进行同行的,所以说,要么你把防火墙关闭,要么吧他们需要的通信端口打开
他们之间有两个默认端口:9200、9300
就是上面这两个端口
centos7
关闭防火墙,并且关闭开机自启动
$ systemctl stop firewalld
$ systemctl disable firewalld
或者去开放端口
centos7
开放端口
#添加端口(--permanent)永久生效
$ firewall-cmd --zone=public --add-port=9200/tcp --permanent
$ firewall-cmd --zone=public --add-port=9300/tcp --permanent
#重新加载
$ firewall-cmd --reload
#查看端口
$ firewall-cmd --zone= public --query-port=80/tcp
#删除端口
$ firewall-cmd --zone= public --remove-port=80/tcp --permanent
上面这些关于防火墙的东西设置完成之后就进行启动
#守护进程方式启动
$ ./bin/elasticsearch
#后台启动
$ ./bin/elasticsearch -d
分别启动三个节点
启动完成之后可以看到如上信息,很明显现在master
节点是node1
,现在我们可以通过elasticsearch
提供的一些restful
的接口尝试着访问他,看我们的集群是否已经搭建成功
看上面说明是成功了哈!
四、安装elasticsearch-head插件
我们在使用elasticsearch
当中怎么能通过更加直观或者高效的方式进行管理或者查看,那么这里就有了一个插件能够在网页中让我们进行一些对elasticsearch
基本的操作和查看的功能,这个插件也是用elasticsearch
提过的restful
进行整合写出来的,方便使用,下面就来进行安装吧
插件地址:https://github.com/mobz/elasticsearch-head
将插件下载下来,我这里放在了/usr/local/server
目录下面,把名字改成了elasticsearch-head
,可以来看一下解压的目录结构
解压
$ unzip elasticsearch-head-master.zip
查看目录信息:
因为该插件是使用nodejs
编写的,所以我们需要安装nodejs
环境,并且使用npm
进行安装改插件
安装nodejs
环境:
使用yum
进行安装,在安装环境的使用我是使用的root
用户进行安装的
//这里下载nodejs的一些镜像文件,默认的基础yum库是没有nodejs相关的库的(这里下载的是最新版本的nodejs库)
$ curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
//安装nodejs环境
$ yum -y install nodejs
如果没有curl
命令的话,安装他
$ yum install -y curl
查看nodejs
和npm
版本信息
$ node -v
$ npm -v
说明安装成功
下面再来说下,由于nodejs
中的npm
库的站点是在国外,所以使用起来非常慢,所以下面就挂载个淘宝的镜像,这样快些
如下
$ npm install -gd express --registry=http://registry.npm.taobao.org
或者使用
这种方式是直接设置了镜像仓库,直接设置是淘宝的镜像,而上面这种方式在每次使用安装的时候都会要求使用--registry
来指定镜像仓库,上面实际上就是安装了一个express
的插件,这个插件是为了演示安装的,你可以不用安装,只是为了说明,安装的时候需要指定镜像仓库,而下面这种方式是直接设置了镜像仓库,所以每次安装的时候不需要再去手动指定
$ npm config set registry http://registry.npm.taobao.org
上面的操作完成之后进入elasticsearch-head
插件目录内,然后安装插件
安装插件
$ npm install
等着上面跑完就完成了
很尴尬的是报错了,看下是由于什么引起的报错
看上面的信息是因为下载了一个文件phantomjs-2.1.1-linux-x86_64.tar.bz2
这个文件在/tmp/phantomjs/
这个目录下面,然后它使用tar -jxf
来解压出错了,既然是这样,那我们自己手动帮他解压一下吧
解压tar.bz2
需要安装bzip2
解压软件,然后再进行解压
$ yum install -y bzip2
$ bzip2 -d phantomjs-2.1.1-linux-x86_64.tar.bz2
解压完成之后可以看到tar.bz2
编程了tar
这个时候再帮他吧这个解压了吧
$ tar -vxf phantomjs-2.1.1-linux-x86_64.tar
然后再回到elasticsearch-head
插件进行重新安装
$ npm install
可以看到我们帮他解压了,之后之前的错误没了
上面的安装完成之后进行下面的内容设置,下面进行设置elasticsearch-head
和elasticsearch-head
进行整合的配置,需要去配置elasticsearch-head
的相关设置
1、设置
/elasticsearch-head/Gruntfile.js
文件
connect: {
server: {
options: {
hostname: '192.168.56.61',
port: 9100,
base: '.',
keepalive: true
}
}
}
如上配置是设置我们需要监控的机器hostname
2、设置
/elasticsearch-head/_site/app.js
文件
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
全局搜索如下内容将其修改为如下内容
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.56.61:9200";
这里将localhost
修改成你安装elasticsearch-head
所在机器的ip,我这里安装在192.168.56.61
这台机子上的
3、设置
elasticsearch
所有相关节点,让这些节点支持跨域请求
在所有的elasticsearch
机器上面修改elasticsearch.yml
文件如下,增加如下内容
# 是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"
我这边已经设置完成,我在三台机子上面都已经设置了,不设置的话elasticsearch.head
是不能请求到其他三个节点的接口的,因为跨域问题
上面的这三个设置设置完成之后,尝试启动elasticsearch-head
在elasticsearch-head
目录下使用该命令进行启动,我这里使用的是root
用户,因为安装也是用root
进行安装的
$ npm run start
下面这种方式是后台启动
/usr/local/server/elasticsearch-head/node_modules/grunt/bin/grunt server &
启动之后看到如下结果:
说明启动成功
在浏览器中访问这个地址,如下内容
我们就能通过在web页面上进行管理我们的集群情况,我们能够查询搜索elasticsearch
中的数据信息,后面会专门写这部分的内容,这里就只是做一个简单的介绍,具体怎么使用后面再说!哎,又给自己挖了个坑!坑太多,都怕自己填不过来啊!慢慢填吧。。。。。。。
elasticsearch-head
这个插件只需要安装在一台上就可以了,他就能够链接到其他集群的机子!
五、安装Kibana
这个也是一个标配了,使用elasticsearch
的,Kibana
也是一个工具了,同样也是给我们提供了操作elasticsearch
的一些工具,同时能够根据elasticsearch
的数据给我们生成一些图标啊,统计图啊,地图啊等等东西!
来吧,继续安装吧,因为之前我把elasticsearch-head
安装在了192.168.56.61
这台机子上,那么我Kibana
也就安装在这台机子上吧!
官方下载地址:https://www.elastic.co/cn/downloads/kibana
这里我把下载好的文件放在这里了
解压,然后把这个文件分配在elc用户和用户组权限下
$ tar -xvf kibana-6.3.0-linux-x86_64.tar
$ chown -R elc:elc kibana-6.3.0-linux-x86_64
kibana
的安装非常简单的,毕竟是官方出的东西
下面进行修改kibana
的配置文件,在kibana
解压出来的目录中config/kibana.yml
中进行修改
暂时修改这三个就足够了,吧ip
配成安装的这台的ip
就可以了,配成其他另外两台的也是可以的但是server.host
这个还是配置成安装的机器的ip
然后就可以尝试启动了
$ ./bin/kibana
启动成功,现在就去访问kibana
吧
http://192.168.56.61:5601
能够访问到,也能够看到我们集群的状态
kibana
是一个数据可视化平台,有非常多的功能值得去探索和使用,在大数据数据分析方面还是非常有用的!安装非常简单!至于怎么去使用后面再来进行详细的探索吧!