添加故障轉移
當集羣中只有一個節點在運行時,意味着會有一個單點故障問題——沒有冗餘。 幸運的是,我們只需再啓動一個節點即可防止數據丟失。
啓動第二個節點
爲了測試第二個節點啓動後的情況,你可以在同一個目錄內,完全依照啓動第一個節點的方式來啓動一個新節點。多個節點可以共享同一個目錄。
當你在同一臺機器上啓動了第二個節點時,只要它和第一個節點有同樣的 cluster.name
配置,它就會自動發現集羣並加入到其中。 但是在不同機器上啓動節點的時候,爲了加入到同一集羣,你需要配置一個可連接到的單播主機列表。
如果啓動了第二個節點,我們的集羣將會如Figure 3, “擁有兩個節點的集羣——所有主分片和副本分片都已被分配”所示。
當第二個節點加入到集羣后,3個 副本分片 將會分配到這個節點上——每個主分片對應一個副本分片。 這意味着當集羣內任何一個節點出現問題時,我們的數據都完好無損。
所有新近被索引的文檔都將會保存在主分片上,然後被並行的複製到對應的副本分片上。這就保證了我們既可以從主分片又可以從副本分片上獲得文檔。
cluster-health
現在展示的狀態爲 green
,這表示所有6個分片(包括3個主分片和3個副本分片)都在正常運行。
{
"cluster_name": "elasticsearch",
"status": "green",
"timed_out": false,
"number_of_nodes": 2,
"number_of_data_nodes": 2,
"active_primary_shards": 3,
"active_shards": 6,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 0,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 100
}
我們的集羣現在不僅僅是正常運行的,並且還處於 始終可用 的狀態。