本文主要介绍的是ElasticSearch集群和kinaba的安装教程。html
ElasticSearch是一个基于Lucene的搜索服务器,其实就是对Lucene进行封装,提供了 REST API 的操做接口.
ElasticSearch做为一个高度可拓展的开源全文搜索和分析引擎,可用于快速地对大数据进行存储,搜索和分析。
ElasticSearch主要特色:分布式、高可用、异步写入、多API、面向文档 。
ElasticSearch核心概念:近实时,集群,节点(保存数据),索引,分片(将索引分片),副本(分片可设置多个副本) 。它能够快速地储存、搜索和分析海量数据。 ElasticSearch使用案例:维基百科、Stack Overflow、Github 等等。java
ElasticSearch集群安装依赖JDK,本文的ElasticSearch版本为6.5.4,对应的Kibana也是6.5.4,这里顺便说下Kibana的版本最好不要低于ElasticSearch的版本,JDK的版本为1.8。node
下载地址:linux
ElasticSearch-6.5.4: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gzbootstrap
Kibana-6.5.4: https://artifacts.elastic.co/downloads/kibana/kibana-6.5.4-linux-x86_64.tar.gzvim
JDK1.8 : http://www.oracle.com/technetwork/java/javase/downloads浏览器
ElasticSearch有几个重要的节点属性,主节点、数据节点、查询节点、摄取节点,其中主节点、数据节点最重要的,所以本文就只主要介绍这两个节点的安装,剩下的节点属性在配置文件那块进行说明。服务器
ElasticSearch集群安装表格:
网络
在安装ElasticSearch以前,咱们须要对Linux的环境作一些调整,防止在后续过程当中出现一些问题!oracle
修改sysctl.conf文件
vim /etc/sysctl.conf
在末尾增长以下配置:
vm.max_map_count = 655360 vm.swappiness=1
而后保存退出,输入如下命令使其生效
sysctl -p
保存退出,输入如下命令执行使其生效
sysctl -p
使用命令查看:
tail -3 /etc/sysctl.conf
修改90-nproc.conf文件
vim /etc/security/limits.d/90-nproc.conf
注:不一样的linux服务器90-nproc.conf可能文件名不同,建议先在/etc/security/limits.d/查看文件名确认以后再来进行更改。
将下述的内容
soft nproc 2048
修改成
soft nproc 4096
使用命令查看:
tail -3 /etc/security/limits.d/90-nproc.conf
修改limits.conf
vim /etc/security/limits.conf
在末尾添加以下内容:
hard nofile 65536 soft nofile 65536
说明:其实能够不关闭防火墙,进行权限设置,可是为了方便访问,因而便关闭了防火墙。每一个机器都作!!!
关闭防火墙的命令
CentOS 6
查询防火墙状态:
[root@localhost ~]# service iptables status
中止防火墙:
[root@localhost ~]# service iptables stop
启动防火墙:
[root@localhost ~]# service iptables start
重启防火墙:
[root@localhost ~]# service iptables restart
永久关闭防火墙:
[root@localhost ~]# chkconfig iptables off
永久关闭后启用:
[root@localhost ~]# chkconfig iptables on
CentOS 7
关闭防火墙
systemctl stop firewalld.service
解压下载下来的JDK
tar -xvf jdk-8u144-linux-x64.tar.gz
移动到opt/java文件夹中,没有就新建,而后将文件夹重命名为jdk1.8
mv jdk1.8.0_144 /opt/java mv jdk1.8.0_144 jdk1.8
首先输入 java -version
查看是否安装了JDK,若是安装了,但版本不适合的话,就卸载
输入
rpm -qa | grep java
查看信息
而后输入:
rpm -e --nodeps “你要卸载JDK的信息” 如: rpm -e --nodeps java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
确认没有了以后,解压下载下来的JDK
tar -xvf jdk-8u144-linux-x64.tar.gz
移动到opt/java文件夹中,没有就新建,而后将文件夹重命名为jdk1.8。
mv jdk1.8.0_144 /opt/java mv jdk1.8.0_144 jdk1.8
而后编辑 profile 文件,添加以下配置
输入: vim /etc/profile
export JAVA_HOME=/opt/java/jdk1.8 export JRE_HOME=/opt/java/jdk1.8/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export PATH=.:${JAVA_HOME}/bin:$PATH
添加成功以后,输入:
source /etc/profile
使配置生效,而后查看版本信息输入:
java -version
将下载好的elasticsearch文件解压
输入:
tar -xvf elasticsearch-6.5.4.tar.gz
而后移动到/opt/elk文件夹 里面,没有该文件夹则建立,而后将文件夹重命名为masternode.
在/opt/elk输入:
mv elasticsearch-6.5.4 /opt/elk mv elasticsearch-6.5.4 masternode
由于elasticsearch须要在非root的用户下面操做,而且elasticsearch的文件夹的权限也为非root权限, 所以咱们须要建立一个用户进行操做,咱们建立一个elastic用户,并赋予该目录的权限。
命令以下:
adduser elastic chown -R elastic:elastic /opt/elk/masternode
这里咱们顺便再来指定ElasticSearch数据和日志存放的路径地址,咱们能够先使用df -h命令查看当前系统的盘主要的磁盘在哪,而后在确认数据和日志存放的路径,若是在/home 目录下的话,咱们就在home目录下建立ElasticSearch数据和日志的文件夹,这里为了区分吗,咱们能够根据不一样的节点建立不一样的文件夹。这里的文件夹建立用咱们刚刚建立好的用户去建立,切换到elastic用户,而后建立文件夹。
su elastic mkdir /home/elk mkdir /home/elk/masternode mkdir /home/elk/masternode/data mkdir /home/elk/masternode/logs mkdir /home/elk/datanode1 mkdir /home/elk/datanode1/data mkdir /home/elk/datanode1/logs
建立成功以后,咱们先修改masternode节点的配置,修改完成以后在同级目录进行copy一下,名称为datanode1,而后只需少量更改datanode节点的配置便可。这里咱们要修改elasticsearch.yml和jvm.options文件便可! 注意这里仍是elastic用户!
cd /opt/elk/ vim masternode/config/elasticsearch.yml vim masternode/config/jvm.options
masternode的elasticsearch.yml文件配置以下:
cluster.name: pancm node.name: master path.data: /home/elk/masternode/data path.logs: /home/elk/masternode/logs network.host: 0.0.0.0 network.publish_host: 192.169.0.23 transport.tcp.port: 9301 http.port: 9201 discovery.zen.ping.unicast.hosts: ["192.169.0.23:9301","192.169.0.24:9301","192.169.0.25:9301"] node.master: true node.data: false node.ingest: false index.number_of_shards: 5 index.number_of_replicas: 1 discovery.zen.minimum_master_nodes: 1 bootstrap.memory_lock: true http.max_content_length: 1024mb
elasticsearch.yml文件参数配置说明:
cluster.name: 集群名称,同一集群的节点配置应该一致。es会自动发如今同一网段下的es,若是在同一网段下有多个集群,就能够用这个属性来区分不一样的集群。
bootstrap.memory_lock: 设置为true来锁住内存。由于当jvm开始swapping时es的效率会下降,因此要保证它不swap,能够把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,而且保证机器有足够的内存分配给es。同时也要容许elasticsearch的进程能够锁住内存,Linux下能够经过ulimit -l unlimited
命令。 http.max_content_length: 设置内容的最大容量,默认100mb。
-...
这里在顺便说下ElasticSearch节点的属性。
node.master: true 而且 node.data: true
这种组合表示这个节点即有成为主节点的资格,又存储数据。
若是某个节点被选举成为了真正的主节点,那么他还要存储数据,这样对于这个节点的压力就比较大了。ElasticSearch默认每一个节点都是这样的配置,在测试环境下这样作没问题。实际工做中建议不要这样设置,由于这样至关于主节点和数据节点的角色混合到一块了。
node.master: false node.data: false
这种组合表示这个节点即不会成为主节点,也不会存储数据,这个节点的意义是做为一个client(客户端)节点,主要是针对海量请求的时候能够进行负载均衡。
node.ingest: true
执行预处理管道,不负责数据和集群相关的事物。
它在索引以前预处理文档,拦截文档的bulk和index请求,而后加以转换。
将文档传回给bulk和index API,用户能够定义一个管道,指定一系列的预处理器。
elasticsearch.yml文件配置示例图
将jvm.options配置Xms和Xmx改为2G,配置以下:
-Xms2g -Xmx2g
关于ElasticSearch更多配置能够参考ElasticSearch官方文档!
在配置完masternode节点的ElasticSearch以后,咱们再来配置datanode节点的,咱们将masternode节点copy一份并重命名为datanode1,而后根据上述示例图中红色框出来简单更改一下便可。
命令以下:
cd /opt/elk/ cp -r masternode/ datanode1 vim datanode1/config/elasticsearch.yml vim datanode1/config/jvm.options
datanode的elasticsearch.yml文件配置以下:
cluster.name: pancm node.name: data1 path.data: /home/elk/datanode/data path.logs: /home/elk/datanode/logs network.host: 0.0.0.0 network.publish_host: 192.169.0.23 transport.tcp.port: 9300 http.port: 9200 discovery.zen.ping.unicast.hosts: ["192.169.0.23:9301","192.169.0.24:9301","192.169.0.25:9301"] node.master: false node.data: true node.ingest: false index.number_of_shards: 5 index.number_of_replicas: 1 discovery.zen.minimum_master_nodes: 1 bootstrap.memory_lock: true http.max_content_length: 1024mb
将jvm.options配置Xms和Xmx改为8G,配置以下:
-Xms8g -Xmx8g
注:配置完成以后须要使用ll命令检查一下masternode和datanode1权限是否属于elastic用户的,若不属于,可使用chown -R elastic:elastic +路径 命令进行赋予权限。
上述配置完成以后,可使用相同的方法在其余的机器在操做一次,或者使用ftp工具进行传输,又或者使用scp命令进行远程传输文件而后根据不一样的机器进行不一样的修改。
scp命令示例:
jdk环境传输:
scp -r /opt/java root@slave1:/opt scp -r /opt/java root@slave2:/opt
ElasticSearch环境传输:
scp -r /opt/elk root@slave1:/opt scp -r /home/elk root@slave1:/opt scp -r /opt/elk root@slave2:/opt scp -r /home/elk root@slave2:/opt
这里仍是须要使用elastic用户来进行启动,每台机器的每一个节点都须要进行操做!
在/opt/elk的目录下输入:
su elastic cd /opt/elk ./masternode/bin/elasticsearch -d ./datanode1/bin/elasticsearch -d
启动成功以后,能够输入jps命令进行查看或者在浏览器上输入 ip+9200或ip+9201进行查看。
出现如下界面表示成功!
kinaba安装只须要在一台机器上部署便可,直接经过root用户进行操做,须要注意的是kinaba须要和ElasticSearch服务器网络ping通便可。
将下载下来的kibana-6.5.4-linux-x86_64.tar.gz的配置文件进行解压
在linux上输入:
tar -xvf kibana-6.5.4-linux-x86_64.tar.gz
而后移动到/opt/elk 里面,而后将文件夹重命名为 kibana6.5.4
输入:
mv kibana-6.5.4-linux-x86_64 /opt/elk mv kibana-6.5.4-linux-x86_64 kibana6.5.4
进入文件夹并修改kibana.yml配置文件:
cd /opt/elk/kibana6.5.4 vim config/kibana.yml
将配置文件中的:
server.host: "localhost"
修改成:
server.host: "192.169.0.23"
而后一行新增,这行的意思是不使用账号密码登陆
xpack.security.enabled: false
保存退出!
使用root用户进行启动。
在kibana6.5.4文件夹目录输入:
nohup ./bin/kibana >/dev/null 2>&1 &
浏览器输入:
http://IP:5601
缘由: 内存限制过小了!
解决办法: 修改最大内存限制,参考Linux环境配置的第一条!
缘由: 线程数限制太少了!
解决办法: 修改最大线程数限制,参考Linux环境配置的第二条!
缘由: 打开文件个数太少了!
解决办法: 修改最打开文件个数,参考Linux环境配置的第三条!
缘由:未锁定内存。
解决办法:在报错机器上的elasticsearch.yml配置文件中添加bootstrap.memory_lock: true
配置!
ElasticSearch和head插件 Windows版的安装:
https://www.cnblogs.com/xuwujing/p/8998168.html
原创不易,若是感受不错,但愿给个推荐!您的支持是我写做的最大动力! 版权声明: 做者:虚无境 博客园出处:http://www.cnblogs.com/xuwujing CSDN出处:http://blog.csdn.net/qazwsxpcm 我的博客出处:http://www.panchengming.com