Elasticsearch Cluster 搭建

ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack。根据 Google Trend 的信息显示,ELK Stack 已经成为目前最流行的集中式日志解决方案。

这里说下Elasticsearch, 它来源于作者 Shay Banon 的第一个开源项目 Compass 库,而这个 Java 库最初的目的只是为了给 Shay 当时正在学厨师的妻子做一个菜谱的搜索引擎。2010 年,Elasticsearch 正式发布。至今已经成为 GitHub 上最流行的 Java 项目,不过 Shay 承诺给妻子的菜谱搜索依然没有面世……

2015 年初,Elasticsearch 公司召开了第一次全球用户大会 Elastic{ON}15。诸多 IT 巨头纷纷赞助,参会,演讲。会后,Elasticsearch 公司宣布改名 Elastic,公司官网也变成 。这意味着 Elasticsearch 的发展方向,不再限于搜索业务,也就是说,Elastic Stack 等机器数据和 IT 服务领域成为官方更加注意的方向。随后几个月,专注监控报警的 Watcher 发布 beta 版,社区有名的网络抓包工具 Packetbeat、多年专注于基于机器学习的异常探测 Prelert 等 ITOA 周边产品纷纷被 Elastic 公司收购。

我这里分享下ELK5.1版本我的Elasticsearch Cluster的搭建过程,希望对大家有所帮助。注意所有的方式均参照ELK官方文档,此文章的elk版本是5.1,不同的版本会有所差异,比如官方文档最新的Elasticsearch5.x版本的bootstrap checks项中有System call filter check选项,而5.1版本就没有。这里也建议搭建参考最新的ELK官方文档,避免踩坑。

安装

系统环境:Ubuntu 14.04 64bit

1.安装Java

Elasticsearch至少需要java8版本:

# add-apt-repository ppa:webupd8team/java
# apt-get update
# Oracle-java8-installer
# java -version  //检验Java版本
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

2.安装Elasticsearch

使用apt源安装:

# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch
\| apt-key add -
# apt-get install apt-transport-https
# echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main"
\| tee -a /etc/apt/sources.list.d/elastic-5.x.list
# apt-get update && apt-get install elasticsearch

这里注意一点,官方建议不要用add-apt-repository的方式安装:

Elasticsearch Cluster 搭建

3.配置Elasticsearch

配置文件在/etc/elasticsearch目录下,我这里采用master+data node的方式,使用3台机器做master node,剩余机器做data node(我这里有6台data node),3个master这种方式也是官方推荐的,之后在Elasticsearch性能不够的时候,可以通过增加data node数量实现横向扩展。

以下是之中一个data node的配置示例:

# egrep -v '^#|^$' /etc/elasticsearch/elasticsearch.yml
cluster.name: cds-escluster  #集群名称,集群唯一标识,同一个cluster的name必须相同
node.name: elasticsearch5  #自定义的node name
node.master: false
node.data: true            #采用data node模式,禁用其他两种node类型
node.ingest: false
path.data: /data/elasticsearch  #更改为自定义的data目录
path.logs: /var/log/elasticsearch  #默认log存放目录
bootstrap.memory_lock: true    #启用jvm的memory lock
network.host: 172.16.2.15      #指定host,启用生产模式
discovery.zen.ping.unicast.hosts: ["172.16.2.15", "172.16.2.16", "172.16.2.17", "172.16.2.18", "172.16.2.19", "172.16.2.20", "172.16.2.21", "172.16.2.22", "172.16.2.23"]
# 指定cluster的node list,可以是ip或hostname
discovery.zen.minimum_master_nodes: 2  #这里注意,为了避免出现脑列,3个master设置为2
discovery.zen.commit_timeout: 100s  #以下是集群参数调整
discovery.zen.publish_timeout: 100s
discovery.zen.ping_timeout: 100s
discovery.zen.fd.ping_timeout: 100s
discovery.zen.fd.ping_interval: 10s
discovery.zen.fd.ping_retries: 10
action.destructive_requires_name: true #集群安全设置

解释说明: 

1)如果是master node,把node.master设为true,node.data和node.ingest设为false即可。其他配置除了node.name和network.host视实际情况自行设置。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/fc53a544f9a01acc475cd3052ec9e9c2.html