环境准备
采用三台CentOS7.3部署Elasticsearch集群,以下是索引分片的简单介绍。
系统 | 节点名 | IP |
---|---|---|
CentOS7.3 | Node-1 | 192.168.20.230 |
CentOS7.3 | Node-2 | 192.168.20.231 |
CentOS7.3 | Node-3 | 192.168.20.232 |
集群搭建
由于es集群需要java环境作支持,因此在一开始就需要部署java环境
- 安装jdk
- 首先到jdk官网上根据linux的版本下载你对应的的jdk版本,查看linux版本命令
cat /proc/version
[esUser@ceiec-1 kibana-5.5.3-linux-x86_64]$ cat /proc/version
Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
选择64位的jdk-8u161-linux-x64.tar.gz版本下载,下载完成后使用ftp工具将该压缩包上传至java安装目录 /usr/java
使用命令 tar -zxvf jdk-8u161-linux-x64.tar.gz
解压缩即可
- 配置环境变量:
[root@ceiec-1 java]# vi /etc/profile
在文件最后面添加:
export JAVA_HOME=/usr/java/jdk1.8.0_131 #jdk安装路径
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
- 执行profile文件
[root@ceiec-1 java]# source /etc/profile
这样可以使配置不用重启即可立即生效。
- 检查jdk版本:
[root@ceiec-1 java]# java -version
显示
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
即表示jdk环境安装成功!
- 安装ElasticSearch
- 下载
去官网下载es安装文件elasticsearch-5.5.3.tar.gz
同样上传到第一台linux下es的安装目录/data/bigdata
使用命令tar -zxvf
解压缩该文件 得到elasticsearch-5.5.3
文件。 - 编辑
elasticsearch.yml
配置文件
使用cd
命令进入es安装目录
[root@ceiec-1 ~]# cd /data/bigdata/elasticsearch-5.5.3
使用vi
命令编辑配置文件,该配置文件位于config目录下
[root@ceiec-1 elasticsearch-5.5.3]# vi config/elasticsearch.yml
主要修改以下几个地方:
cluster.name: ceiec-test //集群名称,同一个集群,名称唯一
node.name: node-1 //节点名称
node.master: true //该节点是否可被选为master
node.data: true //该节点是否存储数据
path.data: /data/bigdata/es_data/data //数据存放路径,该目录需要事先建好
path.logs: /data/bigdata/es_data/logs //log存放路径,该目录需要事先建好
network.host: 192.168.20.230 //节点绑定Ip,如果为0.0.0.0表示所有外部机器均可连接该集群
discovery.zen.ping.unicast.hosts: ["192.168.20.230,192.168.20.231,192.168.20.232"] //配置该参数,用来自动发现节点,组成集群
discovery.zen.ping.multicast.enabled: true
http.port: 9200 //rest 端口,默认为9200
transport.tcp.port: 9300 //transport 端口,默认为9300
action.auto_create_index: true //自动创建索引,用于kibana
http.cors.enabled: true //用于es head插件访问
http.cors.allow-origin: "*"
详细的参数信息可参考.
对于另外两台机器192.168.20.231,192.168.20.232
作同样的修改,使用命令!x
保存修改并退出vi编辑器。
- 创建es用户
esUser
为了安全起见,es不允许使用root用户来启动集群,会报错如下:
Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:94)
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:160)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
Refer to the log for complete error details.
因此需要为es单独添加一个用户esUser
用来管理es集群,过程如下:
groupadd esUser //添加用户esUser
useradd esUser -g esUser -p elasticsearch-5.5.3 //添加esUser的权限
chown -R esUser elasticsearch-5.5.3 //改变elasticsearch-5.5.3的权限
elasticsearch-5.5.3为你elasticsearch的目录名称
使用su
命令切换用户:
[root@ceiec-1 elasticsearch-5.5.3]# su esUser
[esUser@ceiec-1 elasticsearch-5.5.3]$
- 启动集群
切换到esUser用户下,就可以安全的启动es集群了,如下:
[esUser@ceiec-1 elasticsearch-5.5.3]$ bin/elasticsearch -d
[esUser@ceiec-1 elasticsearch-5.5.3]$ jps
1219 Jps
1215 Elasticsearch
[esUser@ceiec-1 elasticsearch-5.5.3]$
使用-d
参数可以使es集群后台启动,其他两台机器使用同样的过程启动es node节点。这样一个可用的es集群即搭建完成,访问http://192.168.20.230:9200
即可查看该节点的信息,如下:
{
"name": "ceiec-1",
"cluster_name": "ceiec-test",
"cluster_uuid": "_na_",
"version": {
"number": "5.5.3",
"build_hash": "9305a5e",
"build_date": "2017-09-07T15:56:59.599Z",
"build_snapshot": false,
"lucene_version": "6.6.0"
},
"tagline": "You Know, for Search"
}
elasticSearch-head安装
head插件的安装依赖node环境,因此需提前部署node.js环境,过程如下:
- 安装node环境
类似于java环境的安装 - 安装grant
grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等的工作,head插件就是通过grunt启动,如下:
> cd /data/bigdata/elasticsearch-head-master
> npm install -g grunt-cli #安装grunt-cli
> npm install grunt --save #安装grunt
> npm install grunt-contrib-jasmine #安装jasmine
3.下载head
地址:https://github.com/mobz/elasticsearch-head.git
下载完成后解压到linux相关目录,比如/data/bigdata/elasticsearch-head-master
- 修改head插件Gruntfile.js源码:
connect: {
server: {
options: {
hostname: "192.168.20.230", //自己的ip
port: 9100, //port
base: '.',
keepalive: true
}
}
}
- 启动head
在elasticsearch-head-master目录下
npm install
grunt server
即可成功启动head
- 访问http://192.168.20.230:9100查看集群的相关信息
Ik分词器安装
去GitHub上下载对应版本的IK分析器zip
包,下载之后直接解压缩到es安装目录下的plugs/ik
目录下(假如没有此目录,新建),重启集群(各个node节点重复这个操作)即可。
安装kibana
- 下载
地址:https://www.elastic.co/downloads/past-releases
根据es版本下载对应的安装包 - 上传至linux相关目录并解压,比如
/data/bigdata/kibana-5.5.3-linux-x86_64
- 修改配置文件
[esUser@ceiec-1 kibana-5.5.3-linux-x86_64]$ vi config/kibana.yml
主要有以下几处需要修改
server.port: "5601" //端口号。默认5601
server.host: "192.168.20.230" //kibana Ip,默认为localhost
elasticsearch.url: "http://192.168.20.230:9200" //es链接地址
其他参数按需修改即可,修改完毕,使用命令!x
保存并退出编辑。
- 启动kibana
使用命令nohup bin/kibana &
启动kibana
[esUser@ceiec-1 kibana-5.5.3-linux-x86_64]$ nohup bin/kibana &
[1] 1312
[esUser@ceiec-1 kibana-5.5.3-linux-x86_64]$ nohup: 忽略输入并把输出追加到"/home/esUser/nohup.out"
访问http://192.168.20.230:5601
进入kibana!