您好,登錄后才能下訂單哦!
本篇內容介紹了“如何安全的移除elasticsearch節點”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
為什么要移除一個節點,有很多種情況
節點所在物理機要銷毀。
節點實例需要升級、重啟
es文檔
想要安全的移除一個es節點,不改變分片的數量,100%不會引起數據丟失,即保證這個節點的所有數據被其他節點接收。然后停止這個節點的實例。
步驟1:將節點從集群路由策略中排除
curl -XPUT http://0.0.0.0:9200/_cluster/settings?pretty -d '{"transient":{"cluster.routing.allocation.exclude._ip":"10.10.10.11"}}' PUT _cluster/settings { "transient": { "cluster.routing.allocation.exclude._ip": "10.1.22.129" } } 執行結果: { "acknowledged">
步驟2:等待節點上分片全部被遷移
curl http://0.0.0.0:9200/_cluster/health?pretty curl http://0.0.0.0:9200/_cluster/pending_tasks?pretty curl http://0.0.0.0:9200/_cluster/allocation/explain?pretty 1.檢查集群狀態 http://10.1.34.146:9200/_cluster/health?pretty { cluster_name: "my-es6-test", status: "green", timed_out: false, number_of_nodes: 4, number_of_data_nodes: 4, active_primary_shards: 150, active_shards: 272, 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 } 2.若出現pening_tasks,當pending_tasks的等級>=HIGH時,存在集群無法新建索引的風險 http://10.1.34.146:9200/_cluster/pending_tasks?pretty { "tasks": [] } 3.若集群中出現UNASSIGNED shards,檢查原因,查看是否是分配策略導致無法遷移分片 http://10.1.22.129:9200/_cluster/allocation/explain?pretty 4.查看節點數據是否已遷移,都是 0 表示數據也已經遷移 http://10.1.34.146:9200/_nodes/%7Bnode-6%7D/stats/indices?pretty { _nodes: { total: 0, successful: 0, failed: 0 }, cluster_name: "my-es6-test", nodes: { } }
步驟3:下線節點
kill {pid}
步驟4:取消節點禁用策略
curl -XPUT http://0.0.0.0:9200/_cluster/settings?pretty -d '{"transient":{"cluster.routing.allocation.exclude._ip": null}}' PUT _cluster/settings { "transient": { "cluster.routing.allocation.exclude._ip": null } }
兩個節點禁用策略:
curl -XPUT http://0.0.0.0:9200/_cluster/settings?pretty -d '{"transient":{"cluster.routing.allocation.exclude._ip":"10.10.10.11,10.10.10.12"}}'
#下線非master節點 #start #步驟1:停止IP指定的ES實例 ##注意:由于ES集群配置文件中指定了ES集群必須有2臺master eligible節點才能進行選舉選出master節點,所以mater-node組的節點數應保持至少3臺 #end #下線master節點 #start #步驟1:停止IP指定的ES實例 ##注意:master節點進行選舉的時間默認是3s,配置文件中可能設置的為30s。在master選舉期間集群功能不可用(索引、查找、各類API功能) #end
#未驗證 #start ##步驟1:LB中刪除指定IP ##步驟2: 停止IP指定的ES實例 #end
有序的關閉Elasticsearch來確保Elasticsearch有機會清理和關閉未完成得資源。譬如:節點關閉后有序的從集群中移除、同步傳輸日志到磁盤以及一些其他的相關清理活動。你可以確保Elasticsearch有序的停機來幫助Elasticsearch正確的停止。
如果Elasticsearch作為一個服務運行,你可以通過你安裝的服務管理功能來停止Elasticsearch。
如果你是在控制臺直接運行的Elasticsearch,你可以通過發送conrtol + C
來停止,或者是在POSIX系統發送SIGTERM
信號給Elasticsearch進程。你可以通過各種各樣的工具獲取PID來發送信號(如:ps或jps):
[localhost~]$ ps aux | grep Elasticsearch [localhost~]$ ps -ef | grep Elasticsearch
或者通過啟動日志:
[2016-07-07 12:26:18,908][INFO ][node] [I8hydUG] version[5.0.0-alpha4], pid[15399], build[3f5b994/2016-06-27T16:23:46.861Z], OS[Mac OS X/10.11.5/x86_64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_92/25.92-b14]
或者通過啟動時指定的PID文件獲取:
$ ./bin/elasticsearch -p /tmp/elasticsearch-pid -d $ cat /tmp/elasticsearch-pid && echo 15516 $ kill -SIGTERM 15516
在Elasticsearch虛擬機運行期間,可能出現某些致命錯誤把虛擬機標記為可疑狀態。這些致命錯誤可能包含虛擬機內部錯誤、嚴重的I/O錯誤。
當Elasticsearch檢測到虛擬機遇到這樣一個致命錯誤時,Elasticsearch將嘗試記錄錯誤,然后將停止虛擬機。當Elasticsearch發起一個這樣的關閉時,它沒有經過上述的有序關閉。Elasticsearch將會返回一個特定的狀態碼來標識這個錯誤。
錯誤原因 | 錯誤碼 |
---|---|
JVM內部錯誤 | 128 |
內存溢出 | 127 |
堆溢出 | 126 |
未知虛擬機錯誤 | 125 |
嚴重I/O錯誤 | 124 |
未知致命錯誤 | 1 |
“如何安全的移除elasticsearch節點”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。