ES集群節點的擴容縮容案例
1.在集群中添加和刪除節點
當您啟動Elasticsearch實例時,您正在啟動一個節點。Elasticsearch集群是一組具有相同cluster.name屬性的節點。當節點加入或離開集群時,集群會自動重新組織自己,以便在可用節點之間均勻地分布數據。
如果您正在運行單個Elasticsearch實例,則您擁有一個節點集群。所有主分片駐留在單個節點上。不能分配復制分片,因此集群狀態保持為黃色。集群功能完整,但在發生故障時存在數據丟失的風險。
通過增加集群內的節點,可以提高集群的容量和可靠性。默認情況下,節點也是數據節點,也可以被選為控制集群的主節點。您還可以為特定目配置新節點,例如處理接收請求。
當您向集群添加更多節點時,它會自動分配副本分片。當所有主分片和副本分片都處於活動狀態時,集群狀態變為綠色。
您可以在本地機器上運行多個節點,以試驗由多個節點組成的Elasticsearch集群的行為。
要將一個節點添加到本地機器上運行的集群中:
- 設置一個新的 Elasticsearch 實例
- 使用 elasticsearch.yml 中的 cluster.name 設置指定集群的名稱
- 啟動 Elasticsearch,節點自動發現並加入指定的集群
要將節點添加到運行在多台機器的集群上,您必須設置discovery.seed_hosts,以至於新的節點可以發現集群的其他信息
2 擴容數據節點
2.1 當ES集群存儲或者計算資源不夠了,我們需要對數據節點進行擴容:
step 1.安裝elasticsearch節點
step 2.修改配置文件
#與需要擴容的集群保持一致
cluster.name: es-cluster node.name: es2 node.attr.rack: r1 node.master: false node.data: true path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch network.host: 10.246.104.17 discovery.seed_hosts: ["10.246.104.116", "10.246.104.117", "10.246.104.118", "10.246.104.136", "10.246.104.137", "10.246.105.75", "10.246.105.76", "10.246.104.17", "10.246.104.19"] #填寫的es節點 cluster.initial_master_nodes: #填寫原來的集群的master - elasticsearch1 - elasticsearch2 - elasticsearch3 bootstrap.system_call_filter: false node.attr.box_type: hot indices.fielddata.cache.size: 20%
注意:在修改配置文件期間,不能夠啟動elasticsearch,否則可能會導致與原有的集群uuid不一致導致無法加入到集群這時候需要刪除elasticsearch的data數據
2.2 啟動節點
這時候節點會自動加入集群並且自動進行rebalance
2.3 查看節點是否已經正常加入了
curl -s -XGET "http://es_host:9200/_cat/nodes?v" ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 10.246.104.118 36 99 2 0.11 0.15 0.21 dim - elasticsearch3 10.246.104.117 22 99 2 0.45 0.46 0.49 dim * elasticsearch2 10.246.104.116 21 99 1 0.27 0.31 0.31 dim - elasticsearch1 10.246.105.76 37 99 1 4.50 7.33 8.08 di - es_stale2 10.246.104.19 52 98 0 0.06 0.18 0.22 di - es1 10.246.104.137 18 99 0 0.43 0.29 0.29 di - es_hot2 10.246.104.136 57 99 2 0.26 0.47 0.46 di - es_hot1 10.246.104.17 66 98 3 0.18 0.13 0.10 di - es2 10.246.105.75 58 99 1 2.49 2.30 1.93 di - es_stale1
節點已經成功加入集群
3 縮容數據節點
3.1 獲取需要縮容的節點信息
[root@elasticsearch-01 ~]# curl -s -XGET "http://es-host:9200/_cat/nodes?v" ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 11.96.55.7 50 9 0 0.05 0.03 0.06 cdfhilrstw - elasticsearch-04 11.96.55.7 18 9 0 0.05 0.03 0.06 cdfhilmrstw * elasticsearch-01 11.96.55.7 24 9 0 0.05 0.03 0.06 cdfhilmrstw - elasticsearch-02 11.96.55.7 53 9 0 0.05 0.03 0.06 cdfhilmrstw - elasticsearch-03 [root@elasticsearch-01 ~]#
3.2 將節點從集群路由策略中排除
curl -X PUT "es-host:9200/_cluster/settings" -H 'Content-Type: application/json' -d' { "transient" : { "cluster.routing.allocation.exclude._name" : "elasticsearch-04" } } ' {"acknowledged":true,"persistent":{},"transient":{"cluster":{"routing":{"allocation":{"exclude":{"_name":"elasticsearch-04"}}}}}}
3.3 等待該節點上的數據全部遷移完成后
[root@elasticsearch-01 ~]# curl -s -XGET "http://elasticsearch-01:9201/_cat/allocation?v" shards disk.indices disk.used disk.avail disk.total disk.percent host ip node 0 0b 517.2mb 43.6tb 43.6tb 0 11.96.55.7 11.96.55.7 elasticsearch-01 0 0b 517.2mb 43.6tb 43.6tb 0 11.96.55.7 11.96.55.7 elasticsearch-02 0 0b 517.2mb 43.6tb 43.6tb 0 11.96.55.7 11.96.55.7 elasticsearch-03 [root@elasticsearch-01 ~]#
3.4 節點就可安全下線
3.5 查看集群健康狀態
參考:
http://dbaselife.com/project-16/doc-895/