Elasticsearch集群部署

    Elasticsearch经常和日志分析工具Logstash配合使用,用于收集系统日志。随着服务的运行,日志文件会积累的越来越多,ES会占用很大的内存,影响了日志的查询。这时候就需要考虑搭建ES的集群服务。

    在本地尝试了下ES的集群部署,也花了一些时间,故记录下来,方便后面使用时查看。

    ES版本:elasticsearch-2.4.6 , Logstash版本:logstash-2.0.0

    本地环境JDK版本:1.7.0_02 (Win 64), 虚拟机JDK版本:1.7.0_76(Ubuntu)

-----------------------------------------------------------------------------------------------------------

1、更改ES配置文件

找到elasticsearch-2.4.6\config下的elasticsearch.yml文件,更改一些默认配置。

cluster.name: peng-es   # 集群名称,默认为elasticsearch。要实现集群,集群名称必须一致

node.name: Node One  # 节点名,两个ES服务取不同的名称
node.master: true          # 作为主节点,每个节点都可以被配置成为主节点,默认值为true

node.data: true              # 存储数据,即存储索引片段,默认值为true

network.host: 192.168.0.0   # 节点绑定IP,并且将节点通知集群中的其他节点,使用本地IP

discovery.zen.ping.unicast.hosts: ["192.168.0.0", "192.168.0.1"]  # 初始集群中节点列表,当前节点将尝试联系其他节点

discovery.zen.minimum_master_nodes: 1  # 设置一个集群中主节点的数量,一般设置为 N/2 + 1,N是有资格成为Master节点的数量

两台服务器上的ES配置更改完毕,接下来可以测试下了

2、启动本地的ES服务,打开head管理页面(集群管理工具head插件需提前安装),可以看到集群中只有一个节点

Elasticsearch集群部署

3、启动虚拟机中的ES服务,打开head管理页面

Elasticsearch集群部署

能发现,新启动的ES服务加入了集群中了。五星表示主节点,圆圈表示工作节点。

4、启动Logstash服务,分析日志,存储到指定的ES。Logstash如果不指定ES的IP和端口号,默认的存储的是127.0.0.1:9200。

我们指定数据存储到虚拟机的ES服务,增加:hosts => "192.168.0.1:9200"

5、刷新页面,能发现数据在集群中的节点分片存储(分片中,粗黑框表示主分片)

Elasticsearch集群部署

6、关闭虚拟机中的ES服务,刷新页面,发现集群中只有一个节点,数据全在这个节点的分片中存储

Elasticsearch集群部署