安装说明,安装三个节点,一个master ,两个slave。
集群名称 ip-端口
myEsCluster (master) 127.0.0.1:9500
myEsCluster(slave) 127.0.0.1:9600
myEsCluster(slave) 127.0.0.1:9700
集群名称 | ip-端口 |
---|---|
myEsCluster (master) | 127.0.0.1:9500 |
myEsCluster(slave) | 127.0.0.1:9600 |
myEsCluster(slave) | 127.0.0.1:9600 |
Es安装包解压出三份ES,修改每个 elasticsearch安装目录 /config/elasticsearch.yml 这个配置文件。
master配置说明:
# 设置支持elasticsearch-head
http.cors.enabled: true
http.cors.allow-origin: "*"
# 设置集群master配置信息
# 首先要指定 集群的名字 ,名字随便起,符合常规命名规则
cluster.name: myEsCluster
# 节点的名字,一般为master 或者 slave
node.name: master
# 节点是否为master,设置为true的话,说明此节点为master节点
node.master: true
# 设置网络,如果是本机的话就是127.0.0.1,其他服务器配置对应的IP地址即可
network.host: 127.0.0.1
# 默认端口为 9200,可以修改默认设置
http.port: 9500
slave配置说明:
# 设置集群slave配置信息
# 首先要指定 集群的名字 ,名字随便起,符合常规命名规则
cluster.name: myEsCluster
# 节点的名字,一般为master 或者 slave
node.name: slave1
# 节点是否为master,设置为true的话,说明此节点为master节点
node.master: false
# 默认端口为 9200,可以修改默认设置
http.port: 9600
# 设置网络,如果是本机的话就是127.0.0.1,其他服务器配置对应的IP地址即可
network.host: 127.0.0.1
# 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。可以是一个数组。
# #discovery.zen.ping.unicast.hosts: ["host1", "host2"]
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
两个slave配置只需要改相应的端口号即可!一个slave1:9600 ,一个slave2:9700。
从上面的安装来看,Es的安装相对还是比较简单,并且在安装分布式的时候,通过简单的配置就可以快速扩展多个ES节点,能够快速的进行扩容,非常灵活,方便!
Cluster State
es集群相关的配置称为Cluster State,主要记录如下信息:
- 节点信息:比如节点名称、连接地址等
- 索引信息:比如索引信息、配置等
Mater Node
- 可以修改Cluster State的节点别称做Mater Node,一个集群只能有一个。
- Cluster State储存在每个节点上,master维护最新版本并同步给其他节点。
- master节点是通过集群中所有节点选举产生的,可以被选举成为master的节点称为master-eligable节点,需要添加配置 node.master:true(默认)
Cluster Health
通过api可以查看集群状态:
- green:健康状态,所有主副分片都正常分配。
- yellow:所有主分片都正常分配,但是有副本分片未正常分配。
- red:有主分片未分配。
故障转移
文档分布式存储
当创建索引时会根据一定规则将索引创建到特别到node上。
文档创建流程
shard详解
当新的文档创建的时候,如何构建倒排索引呢?es的倒排索引一旦创建就不会修改,新文档创建时会根据新文档重新构建倒排索引。查询是会查询所有的倒排索引。
lucene倒排索引结构:
refresh
translog
flush
删除和更新文档
整体视角
Segment Merging