术语
shard : 分片 node : 节点
添加节点到集群
当你启动一个ElasticSearch的一个实例时,也意味着你在启动一个节点。一个ElasticSearch集群就是一组具有相同cluster.name
属性的节点。当节点加入或脱离节点时,集群会自动识别并分发数据到其他可用节点。
如你正在运行单实例的ElasticSearch,即你有一个单节点的集群。所有主分片(primary shards)都被放在这个节点上面。没有副本分片可以分配,所以集群状态始终显示为黄色。此时,集群仍然具备所有功能,但是存在数据丢失的风险。
你也可以添加节点到这个集群来提高容量和可用性。通常,一个节点既可以是数据节点也可以有资格被选举为控制集群的主节点。当然,你也可以把一个新节点配置为特殊用途,比如处理请求,更多详细信息,请参数节点章节 当你添加更多节点到一个集群,集群会自动分配副本分片。当所有主分片和副本分片为活跃状态时,集群的状态就会被更改为绿色。
- 添加一个节点到一个集群
- 配置一个新的ElasticSearch实例;
- 通过
cluster.name
属性指定集群的名字。
如:添加一个节点到loggin-prod
集群,则在elasticsearch.yml
文件中设置cluster.name: "logging-prod"
- 启动
ElasticSearch
. 节点会自动发现和加入指定的集群.
发现(Discovery)
发现模块负责发现集群中的节点和选举主节点。
注意:ElasticSearch是一个对等的系统,委托/广播的操作由节点间直接通讯。所有主要的API(index、delete、search)都不与主节点通信。主节点的职责是维护集群的全局状态,节点加入或离开集群时主节点会重新分配shard(分片)。每次更改集群状态时,主节点都会把最新状态通知到集群中的其他节点(通知方式取决于实际的发现实现方式)。
设置(Settings)
cluster.name
参数被用于创建彼此分离的集群。该参数的默认值为elasticsearch
,但建议更改该参数值用于表述正在运行的集群的逻辑名字。
集群(Cluster)
主节点扮演的一个重要角色就是决定哪个分片分配给哪个节点,以及何时在节点间移动分片以达到集群节点的平衡性。
有许多设置可以控制分片的分配过程:
- 集群级分片分配 列出了控制分配和再平衡操作的设置;
- 基于磁盘 分片分配 解释了ElasticSearch如何考虑可用磁盘空间以及相关设置
- Shard Allocation Awareness and Forced Awarenessedit 控制分片如何被分配到不同的 racks或可用区域.
- 分片分配过滤 允许设置某些节点或节点组不能与分配。
除此之外,还有一些集群级的设置;
这部分的所有设置都是可以动态设置的,也就是说可以通过集群更新设置的API
进行设置。