一、集群架构设计
集群角色
Elasticsearch多机集群中节点角色可分为Master Node、Data Node和Client Node,在配置文件中使用Zen发现(Zen Discovery)机制来管理不同节点。Zen发现是ES自带的默认发现机制,使用多播机制发现其它节点,设置相同集群名称的节点会自动被加入集群中。
· Master Node:Maste节点点主要用于元数据(metadata)的处理,如索引的新增、删除、分片分配等。
· Data Node:Data节点保存数据分片,负责数据相关操作,如分片的 CRUD,以及搜索和整合操作,这些操作比较消耗 CPU、内存和 I/O 资源。
· Client Node:Client节点起路由请求作用,可看做负载均衡器。( 对于请求不多的业务,Client Node可不加,Master和Data一般足够)
Linux-13-210
Linux-13-211
Linux-13-212
IP
192.168.13.210
192.168.13.211
192.168.13.212
Master
true
true
true
Data
true
true
true
二、ElasticSearch集群搭建
版本要求
Elasticsearch5.4.0版本要求JDK1.8或以上版本。
本文档版本如下:
ElasticSearch版本:elasticsearch-5.4.0.
JDK版本:jdk-8u112-linux-x64
配置JDK
vim /etc/profile.d/jdk-8u112.sh
source jdk-8u112.sh
echo $JAVA_HOME
相关系统参数修改配置
内核参数配置
vim /etc/sysctl.conf
增加如下配置:
fs.file-max=65536
vm.max_map_count=262144
资源参数配置
vim /etc/security/limits.conf
修改为如下配置:
* hard nofile 131072
* soft nofile 65536
* hard nproc 4096
* soft nproc 2048
进程数配置
ulimit -u 204 或者
vim /etc/security/limits.d/90-nproc.conf
(Es5.X以上系统要求至少能够开启2048个线程方可启动)
使相关配置生效
sysctl -p
ElasticSearch集群安装
下载安装包
进入官网下载地址:
https://www.elastic.co/downloads/past-releases
下载ElasticSearch,得到elasticsearch-5.4.0.tar.gz
解压安装包
mkdir -p /home/java/elasticsearch
上传安装文件至/home/java/elasticsearch目录
tar -zxvf elasticsearch-5.4.0.tar.gz
rm -rf elasticsearch-5.4.0.tar.gz // 删除安装文件(可选)
解压后形成elasticsearch-5.4.0文件,其内容如下:
Es参数配置
cd /home/java/elasticsearch/elasticsearch-5.4.0/config
scp -r elasticsearch.yml elasticsearch.yml.bak //备份配置文件
vim elasticsearch.yml
修改配置如下:
// 集群名称(自定义),相同集群名称的节点加入集群
cluster.name: my-cluster
// 节点名称(自定义)
node.name: linux-13-210
// 指定此节点是否有资格推举为Master,默认为true,集群默认第一台节点为Master(可选)
node.master: true
// 指定该节点是否存储索引数据,默认为true(可选)
node.data: true
// 数据文件存储路径
path.data: /path/to/data(可选)
// log文件存储路径
path.logs: /path/to/logs(可选)
//当内存不够时,JVM会写入交换空间(swapping),此时ES性能会低下,用户应该保证其不会写入交换空间,可以通过设置属性为true来锁定内存,同时也要允许Es进程可以锁住内存,linux下可以通过 `ulimit -l unlimited` 命令(可选)。
bootstrap.memory_lock: true
// centos6不支持SecComp,而默认bootstrap.system_call_filter为true进行检测,因而设置为false。
(注:SecComp为secure computing mode简写)
bootstrap.system_call_filter: false
// 网络连接地址
network.host: 192.168.13.210
// 连接端口
http.port: 9200
// 设置集群自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可适当调高点来防止自动发现时出错discovery.zen.ping_timeout: 120s
//
client.transport.ping_timeout: 60s
// 集群Master节点的初始列表,可以通过这些节点来自动发现新接入集群的节点
discovery.zen.ping.unicast.hosts: ["192.168.13.210", "192.168.13.211", "192.168.13.212"]
// 防脑裂配置,建议为:具有Master资格的节点总数/2+1,即当集群大多数节点选举通过才可成为成为Master,这样不会造成一个集群存在两个主节点的情况。否则,当部分节点与其余节点网络不通时,这部分节点会自动组成集群,选举自己的主节点,当网路恢复时就会存在两个主节点,无法工作。
discovery.zen.minimum_master_nodes: 2
// 是否支持跨域,默认为false
http.cors.enabled: true
// 当设置允许跨域,默认为*,表示支持所有域名
http.cors.allow-origin: "*"
// (可选)
http.cors.allow-credentials: true
// 自动创建索引(可选)
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
新建用户和用户组
ElasticSearch基于安全考虑,不允许以root用户启动
groupadd elasticsearch //新建用户组elasticsearch
// 新增elasticsearch用户并将其添加至elasticsearch用户组
useradd -r -g elasticsearch elasticsearch
//更改文件属主
chown -R elasticsearch:elasticsearch /home/java/elasticsearch
集群启动/关闭
启动ElasticSearch
cd /home/java/elasticsearch/elasticsearch-5.4.0/
su elasticserch // 切换用户
bin/elasticsearch //前台启动
bin/elasticsearch -d //后台启动
查看启动进程:jps | grep Elasticsearch
ps -aux|grep -i elasticsearch
网页浏览端
输入IP:9200
关闭ElasticSearch
前台运行:可通过”CTRL+C”组合键来停止运行.
后台运行,可以通过”kill -9 进程号”停止.也可以通过REST API接口:
关闭整个集群:
curl -XPOST http://主机IP:9200/_cluster/nodes/_shutdown
关闭单个节点:
curl -XPOST http://主机IP:9200/_cluster/nodes/节点标示符(linux-13-210)/_shutdown
- Head插件集成
安装Git并下载Head插件
安装Git,需要从Git上下载源码,因而先安装Git
yum -y install git
下载Head源码
git clone git://github.com/mobz/elasticsearch-head.git
NodeJs下载
进入官网下载地址:
https://nodejs.org/en/download/
下载NodeJS,得到node-v6.10.3-linux-x64.tar.xz
或者至:
根据需要下载历史版本
本文档版本如下:
NodeJS版本:node-v6.10.3-linux-x64.tar.xz
NodeJs解压
cd /home/java
上传压缩文件至/home/java目录下(本文档为linux-13-210节点)
xz -d node-v6.10.3-linux-x64.tar.xz
tar -xvf node-v6.10.3-linux-x64.tar
解压后形成node-v6.10.3-linux-x64文件,其内容如下:
配置NodeJS环境变量
vim nodejs.sh
// 立即生效执行
source nodejs.sh
// 测试配置是否生效
echo $NODE_HOME
node -v
npm -v
Grunt安装
安装指定版本Grunt或者Grunt插件
npm install grunt@VERSION --save-dev
Grunt-cli安装
Grunt是一个很方便的构建工具,可以进行打包压缩、压缩、测试、执行等工作,5.0版本以后的head插件是通过grunt启动的额,因此需要安装grunt
mkdir -p /home/java/elasticsearch/elasticsearch-head
cd /home/java/elasticsearch/elasticsearch-head
npm install grunt-cli
或 npm install -g grunt-cli(推荐,全局范围使用CLI)
备注:为了方便使用Grunt,推荐在全局范围内安装grunt-cli命令行接口,即npm install -g grunt-cli ,这条命令会把grunt命令植入用户的系统路径中,这样就允许用户从任意目录中运行grunt
测试Grunt
grunt -version
修改Head源码
修改服务器监听地址
cd /home/java/elasticsearch/elasticsearch-head
vim Gruntfile.js
增加hostname属性,设置为’*’
修改连接地址
cd /home/java/elasticsearch/elasticsearch-head/_site
vim app.js
修改head连接地址:将localhost修改为ES服务器的地址
启动Es集群
su elasticsearch //切换至elasticsearch用户
bin/elasticsearch //启动Es集群
启动Head插件
启动ES节点后,在elasticsearch-head目录下
cd /home/java/elasticsearch/elasticsearch-head
npm install
grunt server
三、安装Kibana
Kibana 是一个开源分析和可视化平台,旨在可视化操作 Elasticsearch 。Kibana可以用来搜索,查看和与存储在 Elasticsearch 索引中的数据进行交互,可以轻松地进行高级数据分析,并可在各种图表,表格和地图中显示数据。Kibana可以非常方便地把来自Logstash、ES-Hadoop、Beats或第三方技术的数据整合到Elasticsearch,支持的第三方技术包括Apache Flume、Fluentd等。
版本要求
应将Kibana配置为和Elasticsearch节点运行的版本相同。这是官方支持的配置。
不支持运行不同主版本的 Kibana 和 Elasticsearch (如 Kibana 5.x 和 Elasticsearch 2.x ),Kibana 的次要版本比 Elasticsearch 的次要版本(例如 Kibana 5.1 和 Elasticsearch5.0)高也不支持。
Elasticsearch 的次要版本比kibana的次要版本高通常会起作用,不过这样只是为了满足首先升级 Elasticsearch ,然后升级kibana的需要,(如 Kibana 5.0 和 Elasticsearch 5.1 )。在这种配置中, Kibana 服务器启动时将会记录一个警告,因此两个版本不一致的情况只是暂时的,为了不记录警告,还得将 Kibana 升级到与 Elasticsearch 相同的版本。
一般情况下,支持运行Kibana和 Elasticsearch 的不同补丁版本(例如 Kibana 5.0.0 和 Elasticsearch 5.0.1 ),尽管官网鼓励用户下载Kibana和 Elasticsearch 的相同补丁版本。
本文档安装版本如下:
ElasticSearch版本:Elasticsearch-5.4.0
Kibana版本:Kibana-5.4.0-linux-x86_64
安装包
Kibana提供以下格式的安装包:
· tar.gz: tar.gz 用于在Linux和Darwin上安装
· zip: 唯一支持window的安装包
· deb: 适用于Debian, Ubuntu, 以及其他 Debian-based系统。
· rpm:适用于 Red Hat, Centos, SLES, OpenSuSE 以及RPM-based 系统
· docker:一个镜像可以用来运行kibana作为docker容器,附带 X-Pack 预安装,可从Elastic Docker注册。
下载安装包
进入官网下载地址:
Past Releases of Elastic Stack Software | Elastic
下载Kibana,得到kibana-5.4.0-linux-x86_64.tar.gz
解压安装包
mkdir -p /home/java/kibana-5.4.0
上传压缩文件至/home/java/kibana-5.4.0目录下
tar -zxvf kibana-5.4.0-linux-x86_64.tar.gz
解压后文件内容如下:
或者采用官网方式安装:
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.4.0-linux-x86_64.tar.gz
sha1sum kibana-5.4.0-linux-x86_64.tar.gz
tar -xzf kibana-5.4.0-linux-x86_64.tar.gz
cd kibana-5.4.0-linux-x86_64.tar.gz
注意:
- Download Kibana Free | Get Started Now | Elastic 可以在该地址获取下载链接,一定要选择对于系统和版本。
- 按照文档的要求,一般情况下kibana的版本必须和Elasticsearch安装的版本一致。
修改Kibana配置文件
cd /home/java/kibana-5.4.0/kibana-5.4.0-linux-x86_64/config
scp -r kibana.yml kibana.yml.bak //保存配置文件副本
vim kibana.yml
修改配置如下:
// 开放端口
server.port: 5601
// 修改对外访问,这样外网才能访问到
server.host: "linux-13-210"
// Kibana服务名字,自定义
server.name: "my-kibana"
// 添加节点,默认只搜索本地的ElasticSearch节点
elasticsearch.url: "http://192.168.13.210:9200"
(添加防火墙规则开放5601端口或者关闭防火墙。root身份操作。
添加规则:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5601 -j ACCEPT
关闭防火墙
service iptables stop
)
备注:每次修改kibana配置,重启kibana才能生效
启动Kibana
cd /home/java/kibana-5.4.0/kibana-5.4.0-linux-x86_64
bin/kibana
( nohup bin/kibana & // 后台运行)(kibana必须是在root下运行,否则会报错,启动失败)
启动成功后,访问linux-13-210:5601(192.168.13.210:5601)即可打开页面。
四、安装X-Pack
X-Pack是一个Elastic Stack的扩展,将安全,警报,监视,报告和图形功能包含在一个易于安装的软件包中。在Elasticsearch 5.0.0版本之前,一般通过安装Kibana,而后Marvel、Hand等各种功能插件添加到Kibana上使用,在5.0.0版本后,只需安装一个官方推荐的X-pack扩展包即可获取所有功能。
版本要求
应将X-Pack版本和Kibana与Elasticsearch节点运行的版本相同。这是官方建议的配置。
本文档安装版本如下:
ElasticSearch版本:Elasticsearch-5.4.0
Kibana版本:Kibana-5.4.0-linux-x86_64
X-Pack版本:x-pack-5.4.0.zip
X-Pack安装
安装X-pack需要分别在ElasticSearch根目录和Kibana根目录下操作。确保ElasticSearch和Kibana服务关闭,以下为具体安装过程:
在线场景安装
ElasticSearch下载X-Pack
在Es的根目录(每个节点),运行bin/elasticsearch-plugin进行安装。
bin/elasticsearch-plugin install x-pack
备注:
此时elasticsearch-plugin没有执行权限
chmod +x elasticsearch-plugin
安装的过程中可看到一个插件额外的权限要求:确认用户授予X-Pack附加权限。 X-Pack需要这些权限在安装过程中设置威胁上下文加载器,以便Watcher可以发送电子邮件通知。选项选择y即可。
备注:如果在Elasticsearch已禁用自动索引的创建,在elasticsearch.yml配置action.auto_create_index允许X-pack创造以下指标:
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
Kibana下载X-Pack
在Kibana根目录运行 bin/kibana-plugin 进行安装。
bin/kibana-plugin install x-pack
如果不需要插件,可以运行:
bin/kibana-plugin remove x-pack
离线手动场景安装
若在线安装不了,则可选择下载X-Pack后离线安装。
下载安装包
至官网下载对应版本安装包,本文档X-Pack版本x-pack-5.4.0.zip。
上传安装包
上传x-pack文件至临时目录下(注意不要放在ElasticSearch的plugins目录下)
ElasticSearch离线安装X-Pack
bin/elasticsearch-plugin install file:///path/to/file/x-pack-5.4.0.zip
Kibana离线安装X-Pack
bin/kibana-plugin install file:///path/to/file/x-pack-5.4.0.zip
启动ElasticSearch
cd /home/java/elasticsearch/elasticsearch-5.4.0
bin/elasticsearch
启动Kibana
cd /home/java/kibana-5.4.0/kibana-5.4.0-linux-x86_64
bin/kibana
浏览器访问
输入IP:5601即可访问到web页面,因为安装了x-pack,需要登录,默认用户名elastic, 默认密码为changeme。
由图中可知,默认Kibana是没有Monitoring、Graph、Machine Learning选项。其实,这些选项都是由X-Pack集成提供的。
五、异常汇总
Root账号启动问题
Es5.X必须使用JDK1.8并且不能使用Root账号启动
可以新建非Root账号启动集群:
// 新建用户组elasticsearch
groupadd elasticsearch
// 新建elasticsearch用户并将其添加至elasticsearch用户组
useradd -r -g elasticsearch elasticsearch
// 更改Es文件属主为新建用户
chown -R elasticsearch:elasticsearch /home/java/elasticsearch
bootstrap checks failed问题
max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
vim /etc/security/limits.conf
修改配置为:
max number of threads [1024] for user [test1] is too low, increase to at least [2048]
vim /etc/security/limits.d/90-nproc.conf
修改配置为:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
vim /etc/sysctl.conf
加入配置为:
// 使配置生效
sysctl -p
ElasticSeach集群及插件搭建文档
于 2023-06-26 16:18:33 首次发布