Elasticsearch Kibana 集群搭建
标签(空格分隔): elasticsearch
##elasticsearch5.5 集群搭建
###环境
elasticsearch5.x需要jdk1.8指出,如果使用jdk1.7可以下载2.4.5
最新版本
2.4.5
本文搭建集群使用的版本为5.5,系统为CenterOS
本文搭建的环境所有节点同时是主节点和数据节点,集群较大时可以将主节点和数据节点分开,保证集群的稳定运行
官方文档
###配置
节点配置如下
cluster.name: bwjf_dev
node.name: master
network.host: 192.168.5.185
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.5.185:9200","192.168.5.186:9200","192.168.5.187:9200"]
#新增,仓库地址
path.repo: ["/usr/hadoop/application/el_bak"]
discovery.zen.minimum_master_nodes=2
#CenterOS需要加入以下配置
#bootstrap.memory_lock: false
bootstrap.system_call_filter: false
cluster.name:集群名字
node.name:节点名字,不能和其他节点重复
network.host:当前地址
http.port:端口号,默认为9200
node.master:设置为True(默认)的时候,它有资格被选作为主节点,控制整个集群
node.data:在一个节点上node.data设置为True(默认)的时候。该节点保存数据和执行数据相关的操作,如增删改查,搜索,和聚合
discovery.zen.ping.unicast.hosts:配置为主节点地址(node.master=true)
discovery.zen.minimum_master_nodes:设置这个值的原则是:(主节点数 / 2)+ 1,原因参考Elasticsearch节点类型
最后两项因为CenterOS不支持,改为false,正常情况下推荐使用默认配置
elasticsearch配置文件详解
需要修改的配置有三项:node.name,network.host
除以上配置外,还需要根据“遇到的问题”一节中来配置系统参数,以免浪费时间在启动重启上
###启动
/home/hadoop/application/elasticsearch/bin/elasticsearch -d
#日志
tail -fn 100 /home/hadoop/application/elasticsearch/logs/bwjf_dev.log
-d为后台启动
###遇到的问题
####bootstrap.memory_lock=true
#vi /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
#vi /etc/sysctl.conf
vm.swappiness=0
####max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
原因:无法创建本地文件问题,用户最大可创建文件数太小
vi /etc/security/limits.conf 添加如下内容
* soft nofile 65536
* hard nofile 131072
备注:* 代表Linux所有用户名称(比如 hadoop)
保存、退出、重新登录才可生效
####max number of threads [1024] for user [hadoop] is too low, increase to at least [2048]
原因:无法创建本地线程问题,用户最大可创建线程数太小
vi /etc/security/limits.d/90-nproc.conf
找到如下内容:
* soft nproc 1024
#修改为
* soft nproc 2048
####max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因:最大虚拟内存太小
解决方案:切换到root用户下,vi /etc/sysctl.conf
添加下面配置:vm.max_map_count=655360
并执行命令:sysctl -p
然后重新启动elasticsearch,即可启动成功。
##elasticsearch集群管理工具head插件(kibana安装xpck自带监控功能,可以不需要head)
可以使用x-pack
elasticsearch-head采用单节点部署
###安装
1、安装nodejs和npm:yum -y install nodejs npm
2、下载代码并安装
git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
npm install
###修改配置
1、修改elasticsearch.yml,增加跨域的配置(需要重启es才能生效)。可以参考git上的文档加入登录验证
http.cors.enabled: true
http.cors.allow-origin: "*"
2、编辑head/Gruntfile.js,修改服务器监听地址,增加hostname属性,将其值设置为*。
connect: {
hostname: '*',
server: {
options: {
port: 9100,
base: '.',
keepalive: true
}
}
}
3、编辑head/_site/app.js,修改head连接es的地址,将localhost修改为es的IP地址,在head机器上有elasticsearch则不需要修改
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.5.185:9200";
###启动
cd elasticsearch-head
npm run start
##kibana集群搭建
kibana采用单节点部署
###安装
本文使用kibana-5.5.0-linux-x86_64.tar.gz安装,其他安装方法可以参考Install Kibana
###配置
文件位于$KIBANA_HOME/config/kibana.yml,具体配置项含义参考Kibana Configuration Settings
#当前服务端地址,默认值"localhost"
server.host: "localhost"
#服务端端口号,默认5601
server.port: 5601
#elasticsearch地址,默认值"http://localhost:9200"
elasticsearch.url: "http://localhost:9200"
我配置时使用localhost时,kibana报无法连接错误,根据Kibana Fails to connect to Elasticsearch after the install of SearchGuard所述,可以在kibana系统上使用命令测试,如果返回结果,才可以使用。
[hadoop@ceshi185 bin]$ curl -k -s http://192.168.5.185:9200
{
"name" : "node-185",
"cluster_name" : "bwjf_dev",
"cluster_uuid" : "gY9TIJvlROC-sVqNPYtTZw",
"version" : {
"number" : "5.5.0",
"build_hash" : "260387d",
"build_date" : "2017-06-30T23:16:05.735Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}
最终我的配置如下
server.host: "192.168.5.185"
elasticsearch.url: "http://192.168.5.185:9200"
###启动
./bin/kibana
##X-Park安装
官方文档:[X-Pack for the Elastic Stack][1]
[x-pack-5.5.0.zip下载地址][2]
注意版本必须和ES、Kibana匹配
###安装命令
cd $ELK_HOME
bin/elasticsearch-plugin install file:home/hadoop/application/x-pack-5.5.0.zip
cd $KIBANA_HOME
bin/kibana-plugin install file:home/hadoop/application/x-pack-5.5.0.zip
如果安装后出现问题,可以尝试卸载后重装
elasticsearch-plugin remove x-pack
kibana-plugin remove x-pack
###配置
[官方文档][3]
elasticsearch修改密码,
curl -XPUT -u elastic:changeme http://192.168.5.185:9200/_xpack/security/user/elastic/_password -H "Content-Type: application/json" -d '{"password":"123456"}'
curl -XPUT -u elastic:123456 http://192.168.5.185:9200/_xpack/security/user/kibana/_password -H "Content-Type: application/json" -d '{"password":"123456"}'
修改kibana.yml
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
###破解x-pack
创建文件,上传到elasticsearch节点
package org.elasticsearch.license;
import java.nio.*;
import java.util.*;
import java.security.*;
import org.elasticsearch.common.xcontent.*;
import org.apache.lucene.util.*;
import org.elasticsearch.common.io.*;
import java.io.*;
public class LicenseVerifier
{
public static boolean verifyLicense(final License license, final byte[] encryptedPublicKeyData) {
return true;
}
public static boolean verifyLicense(final License license) {
return true;
}
}
执行命令,编译文件
javac -cp "/usr/hadoop/application/elasticsearch/lib/elasticsearch-5.5.0.jar:/usr/hadoop/application/elasticsearch/lib/lucene-core-6.6.0.jar:/usr/hadoop/application/elasticsearch/plugins/x-pack/x-pack-5.5.0.jar" LicenseVerifier.java
替换class文件
#解压
cd $ELK_HOME/plugins/x-pack/
mkdir test
mv x-pack-5.5.0.jar test/
cd test
jar xvf x-pack-5.5.0.jar
#替换
cd org/elasticsearch/license
rm -f LicenseVerifier.class
cp /usr/hadoop/application/license/LicenseVerifier.class .
#打包
cd /usr/hadoop/application/elasticsearch/plugins/x-pack/test
jar cvf x-pack-5.5.0.jar .
mv x-pack-5.5.0.jar ../
#删除临时文件
cd /usr/hadoop/application/elasticsearch/plugins/x-pack/
rm -fr test
替换其他节点的x-pack-5.5.0.jar,重启集群
[申请license][4],并下载license文件
修改license文件:
{"license":{"uid":"d3cbbbee-9155-4e1a-a5ed-a7e8940d6564","type":"platinum","issue_date_in_millis":1499299200000,"expiry_date_in_millis":15698015999990,"max_nodes":1000,"issued_to":"guo dalu (eastmoney)","issuer":"Web Form","signature":"AAAAAwAAAA0C9L3AjL50eKgiW55YAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQB2gL4WXN64P0+c5q6TDyhqPllFvkboZMWjzJHid05qCtI86/I0aSsFgYF3AkVA1qoz7UHsjC/xBsoyhuXfmHn6LbsZYXweZ4LsllG8RJ8HH/bBYVTBt+Mag+wXE/QZUS7HnSA8iAReQ7tY//wyuEVrxFDeAI9cgwWN90RoZ3sAgkzGq0jVr2JoUYeYwNJ4GZ2GMDS7GsHBxNWBJVgfDkZXvLya/jOJhaKi2GvW8mIzFp19/FO+t2+ReUkbF3T35nVIZnqFDVhXtOz981By4ArffE8ythlI4X67Nabtzoy87V5gXanBvsSdHiHpYJMrYwn7DU+93Ie6t56Lesjkj//b","start_date_in_millis":1499299200000}}
```
> platinum表示白金版,可以使用所有功能。其他的如expiry_date_in_millis、max_nodes等根据自己需要修改即可。
```
#查看license
curl -XGET -u elastic:123456 http://192.168.5.185:9200/_xpack/license
#注册新license
curl -XPUT -u elastic:123456 http://192.168.5.185:9200/_xpack/license?acknowledge=true -H "Content-Type: application/json" -d @license.json
#成功消息
{"acknowledged":true,"license_status":"valid"}
```
[1]: https://www.el.co/guide/en/x-pack/5.5/index.html
[2]: https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.5.0.zip
[3]: https://www.elastic.co/guide/en/x-pack/5.5/security-getting-started.html
[4]: https://license.elastic.co/registration