各位好:
最近再搭 ELK8.10.1 cluster,但是碰到了主從上的問題。
當我在 172.31.19.160 上把 kibana UI打開後,
使用 dev tool 創建 index,
不懂的是 Kibana 這時候還是可以寫入,
但是我從我的 cluster info 找到的主 es 是 172.31.24.34 這一台機器。
照理來說現在 172.31.19.160 是從機,而 kibana 也是綁 172.31.19.160,
不知道為甚麼資料可以"寫"入從機當中。
kibana.yml
elasticsearch.hosts: ['http://172.31.19.160:9200']
cluster Info
[root@ip-172-31-24-34 ~]# curl -X GET "https://localhost:9200/_cat/nodes?v" -u elastic:$ES_PASSWORD -k
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.31.19.160 14 93 43 0.72 0.33 0.14 cdfhilmrstw - ip-172-31-19-160.ap-northeast-1.compute.internal
172.31.26.48 29 95 2 0.00 0.00 0.03 cdfhilmrstw - ip-172-31-26-48.ap-northeast-1.compute.internal
172.31.24.34 23 97 4 0.14 0.21 0.20 cdfhilmrstw * ip-172-31-24-34.ap-northeast-1.compute.internal
173.
抱歉我編輯一下我剛剛的留言
發現可能誤會你問的問題
client發送請求到任一node時,他們都能進行資料的轉發
不是只有master node能處理
這件事有點複雜, 因為 ELK 的 Master, 跟你以為的 Master 不一樣.
首先, Elasticsearch 的 Node 類型, 總共有下面這幾種角色 (8.10 版):
master
data
data_content
data_hot
data_warm
data_cold
data_frozen
ingest
ml
remote_cluster_client
transform
Elasticsearch 要求每一個 Cluster 最少必須要有這兩種 Node 角色: Master 和 Data, 其他的都是選項, 可有可無.(或依照任務需求來配置)
但要注意幾個原則:
接下來就要看 Node 角色 (Role) 的定義了;
Master 只負責以下的工作:
他比較像是台鐵的行控中心, 負責調度軌道上所有火車的行進與時刻, 含鐵軌的轉接; 但是調度中心並不會處理來自乘客的要求: 買票/查空位/退票/換票...等工作, 這些都不是 Master 在處理的. 這點跟你過往所認知的 Master 功能有很大差異.
Master 還分兩種: Dedicated Master 和 Master-eligible node.
身上沒有兼任多種任務角色的 Master Node 就被稱為: Dedicated Master; 若他同時兼任其他角色的話, 就被稱為 Master-eligible node. 但是....
Elasticsearch 官方並沒有設計 Slave 這個角色,(這裡是官方的名詞定義, 裡面完全找不到 Slave 這個字: https://www.elastic.co/guide/en/elastic-stack-glossary/current/terms.html ), 他也只把自己稱為 Cluster, 而非 Master-Slave 架構.
所以不要以為: 當某個 Node 不是 Master 的時候, 他就會變成 Slave 角色. 相反的, 當他不是 Master 的時候, 他只會變成 Master-eligible node, 去做別的事情 (Elasticsearch 內部是很忙的...), 而不是變成 Slave 來等待備援 Master 的工作.
如果 Master 掛掉, 所有 Master-eligible node 會進行選舉, 重新推派一個 Node 出來當 Master.
至於你平常對 Index 內容進行的各種 CRUD 操作, 則是由 Data node 負責處理.(就像前面舉例的台鐵客服窗口, 負責處理客戶來的需求, 但他們不負責調度火車) 前面也提過: 一個 node 可以有多種角色. 所以一個 Node 有可能是 Master+Data, 也有可能是 Master-eligible+Data, 也可能只有單一的 Data 或只有 Master 角色, 要看架構師如何規劃與定義每一台 Node 用途.
對 Elasticsearch 來說, Kibana 就是某種 Client, 透過 REST API 來跟他要資料; 前面也提過: 任何一個 Node 都可以對 Client 提供 HTTP REST 的服務, 所以她並不像你過去所學的那些 DB: 一定要從 Master 連線進來才能處理資料的 CRUD;
相反的, 他每一個 Node 都可以接受 Client 要求, 但是收到 Query 之後, 有些工作會需要轉給特定的 Node 去執行, 這時候就由 Master 負責分派這些工作.
感謝雷神,這樣講確實清楚多了,就是我以前認知的 Master 不是我現在面對 Es 的 Master 概念。
補充所提到的關於 Node 腳色的官方文檔連結,
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html
原本確實有讀到 Node 腳色定位這一章,只是沒看到文件對於 cluster 的解釋。