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插件需提前安装),可以看到集群中只有一个节点
3、启动虚拟机中的ES服务,打开head管理页面
能发现,新启动的ES服务加入了集群中了。五星表示主节点,圆圈表示工作节点。
4、启动Logstash服务,分析日志,存储到指定的ES。Logstash如果不指定ES的IP和端口号,默认的存储的是127.0.0.1:9200。
我们指定数据存储到虚拟机的ES服务,增加:hosts => "192.168.0.1:9200"
5、刷新页面,能发现数据在集群中的节点分片存储(分片中,粗黑框表示主分片)
6、关闭虚拟机中的ES服务,刷新页面,发现集群中只有一个节点,数据全在这个节点的分片中存储