一 介绍
elasticsearch 是居于lucene的搜素引擎,可以横向集群扩展以及分片,开发者无需关注如何实现了索引的备份,集群同步,分片等,我们很容易通过简单的配置就可以启动elasticsearch集群,通过提供的基于rest的api实现数据存储以及索引。主要是搭建ELK分布式日志搜集平台以elasticsearch作为日志的存储来研究elasticsearch。
二 参考
http://learnes.net/getting_started/installing_es.html ----》提供了elasticsearch 详细的安装,调用以及集群搭建,集群,分布式的设计思想。
https://www.elastic.co/ -----官网地址
https://github.com/elastic/elasticsearch ---github代码托管地址
三 集群部署
主要通过统一集群名,和通过修改广播地址来实现各个node的自动发现建立集群。
vim ./config/elasticsearch.yml
上面的配置文件我们很容易看懂如何修改实现自己想要的配置,这里只要通过修改cluster.name: 指定相同名字。node.name 是节点名字 不一样来区分。
启动
./bin/elasticsearch
六 效果
七 总结
总的来说elasticsearch集群的部署还是很简单的,以上使用elasticsearch-2.4.0-2 通过elasticsearch-head 插件来安装提供基于web ui 可以直观看到集群信息以及索引分片信息以及查询等方便使用。
elasticsearch-head 安装: http://blog.csdn.net/jiuqiyuliang/article/details/51240800
分布式特性:
Elasticsearch 的分布式部分很简单。你甚至不需要关于分布式系统的任何内容,比如分片、集群、发现等成堆的分布式概念。你可能在你的笔记本中运行着刚才的教程,如果你想在一个拥有100个节点的集群中运行教程,你会发现操作是完全一样的。
Elasticsearch 很努力地在避免复杂的分布式系统,很多操作都是自动完成的:
- 可以将你的文档分区到不同容器或者 分片 中,这些文档可能被存在一个节点或者多个节点。
- 跨节点平衡集群中节点间的索引与搜索负载。
- 自动复制你的数据以提供冗余副本,防止硬件错误导致数据丢失。
- 自动在节点之间路由,以帮助你找到你想要的数据。
- 无缝扩展或者恢复你的集群。
故障恢复:
被杀掉的节点是主节点。而为了集群的正常工作必须需要一个主节点,所以首先进行的进程就是从各节点中选择了一个新的主节点:Node 2
。
主分片 1
和 2
在我们杀掉 Node 1
后就丢失了,我们的索引在丢失主节点的时候是不能正常工作的。如果我们在这个时候检查集群健康状态,将会显示 red
:存在不可用的主节点!
幸运的是,丢失的两个主分片的完整拷贝在存在于其他的节点上,所以新的主节点所完成的第一件事情就是将这些在 Node 2
和 Node 3
上的从分片提升为主分片,然后集群的健康状态就变回至 yellow
。这个提升的进程是瞬间完成了,就好像按了一下开关。
那么为什么集群健康状态依然是是 yellow
而不是 green
呢?是因为现在我们有3个主分片,但是我们之前设定了1个主分片有2个从分片,但是现在却只有1份从分片,所以状态无法变为 green
,不过我们可以不用太担心这里:当我们再次杀掉 Node 2
的时候,我们的程序依旧可以在没有丢失任何数据的情况下运行,因为 Node 3
中依旧拥有每个分片的备份。
以上摘自: http://learnes.net/distributed_cluster/coping_with_failure.html