Es的节点可能分布在不同的机架
当一个机架断电,可能会同时丢失几个节点
如果一个索引相同的主分片和副本分片,同时在这个机架上,就有可能导致数据的丢失
通过 Rack Awareness的机制,就可以尽可能避免将同一个索引的主副分片同时分配在一个机架
的节点上
# Fore awareness
# 标记一个 rack 1, 标记在那个机架
bin/elasticsearch -E node.name=node1 -E cluster.name=geektime -E path.data=node1_data -E node.attr.my_rack_id=rack1
# 标记一个 rack 2, 标记在那个机架
bin/elasticsearch -E node.name=node2 -E cluster.name=geektime -E path.data=node2_data -E node.attr.my_rack_id=rack1
# 设置主副分片在不同的机架上
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.awareness.attributes": "my_rack_id",
"cluster.routing.allocation.awareness.force.my_rack_id.values": "rack1,rack2"
}
}
GET _cluster/settings
GET _cluster/health
GET _cat/shards?v
GET _cluster/allocation/explain?pretty