ES-在集群中加入節點
查看分片信息
FengZhendeMacBook-Pro:nacos FengZhen$ curl 'localhost:9200/_cat/shards?v' index shard prirep state docs store ip node music 2 p STARTED 0 130b 127.0.0.1 Feng music 2 r UNASSIGNED music 3 p STARTED 1 3.1kb 127.0.0.1 Feng music 3 r UNASSIGNED music 4 p STARTED 0 130b 127.0.0.1 Feng music 4 r UNASSIGNED music 1 p STARTED 0 130b 127.0.0.1 Feng music 1 r UNASSIGNED music 0 p STARTED 0 130b 127.0.0.1 Feng music 0 r UNASSIGNED
Music索引有5個主分片,而且都是激活的。未分配的分片代表為該索引配置的一組副本分片。因為只有1個節點,所以這些副本分片尚未分配
多數ES API會返回JSON,但是cat這組API是個特例。還有很多其他的API,它們對於獲取集群某個時間點的相關信息很有幫助,其格式對於人或者腳本而言都是很容易解析的。
未分配的副本分片導致集群狀態變為黃色。這意味着所有主分片都就緒了,但是並非所有副本分片都就緒了。如果主分片缺失,集群就會顯示紅色,以提示至少有1個索引是不完整的。如果所有的副本分片都被分配了,集群就是綠色的,以提示所有一切都在正常工作。
啟動第二個節點
從另一個不同的終端,運行/bin/elasticsearch。這會在同一台機器上啟動另一個ES實例。通常需要在不同的機器上啟動新的節點,來充分利用額外的處理能力。
0.修改config/elasticsearch.yml配置文件,將各節點的cluster.name(集群名稱)設置成相同名稱;設置node.name(節點名稱)
1.啟動之后,看第二個節點的日志,如下
[2019-06-19 22:45:36,704][INFO ][cluster.service ] [Feng_1] detected_master {Feng}{RbRBUbuSR7SfEyQvg9OJSQ}{127.0.0.1}{127.0.0.1:9300}, added {{Feng}{RbRBUbuSR7SfEyQvg9OJSQ}{127.0.0.1}{127.0.0.1:9300},}, reason: zen-disco-receive(from master [{Feng}{RbRBUbuSR7SfEyQvg9OJSQ}{127.0.0.1}{127.0.0.1:9300}])
Feng是第一個節點的名字,Feng1是第二個節點的名字。第二個節點通過多播偵測到第1個節點,並加入集群。第1個節點也是集群的主節點(master),這意味着它將負責保存集群中有哪些節點、分片位於哪里等這樣的信息。這種信息稱為集群狀態(cluster state),並被復制到其他節點。如果主節點宕機,集群將會選舉出另一個節點替代原有的主節點。
2.第一個節點日志信息如下
[2019-06-19 22:45:36,692][INFO ][cluster.service ] [Feng] added {{Feng_1}{ZyK2Y6fVQNWXFVWhiYz3Lg}{127.0.0.1}{127.0.0.1:9301},}, reason: zen-disco-join(join from node[{Feng_1}{ZyK2Y6fVQNWXFVWhiYz3Lg}{127.0.0.1}{127.0.0.1:9301}]) [2019-06-19 22:45:38,264][INFO ][cluster.routing.allocation] [Feng] Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[music][4]] ...]).
可發現集群健康狀態由yellow變為了green,這是因為副本分片有地方放了。
3.再次查看分片情況;
FengZhendeMacBook-Pro:nacos FengZhen$ curl 'localhost:9200/_cat/shards?v' index shard prirep state docs store ip node music 2 p STARTED 0 159b 127.0.0.1 Feng music 2 r STARTED 0 159b 127.0.0.1 Feng_1 music 3 p STARTED 1 3.2kb 127.0.0.1 Feng music 3 r STARTED 1 3.2kb 127.0.0.1 Feng_1 music 4 p STARTED 0 159b 127.0.0.1 Feng music 4 r STARTED 0 159b 127.0.0.1 Feng_1 music 1 p STARTED 0 159b 127.0.0.1 Feng music 1 r STARTED 0 159b 127.0.0.1 Feng_1 music 0 p STARTED 0 159b 127.0.0.1 Feng music 0 r STARTED 0 159b 127.0.0.1 Feng_1
此時發現所有分片都已被分配。
隨着更多的節點加入,機器將使用端口9201、9202等。對於節點之間的通信,ES使用端口9300、9301等。需要在防火牆里設置允許訪問這些端口。
擴展選項
1.修改副本分片的數量:副本分片可以動態的更新,但是這種擴展方式只能增加集群對於並發搜索的處理量,因為搜索請求以round-robin的輪詢方式,被發送到同一分片的多個副本。索引性能仍然保持不變,因為新的數據必須被所有分片處理。同樣,單個的搜索將在單獨的一組分片上運行,所以增加副本分片不會有什么幫助。
2.創建擁有更多分片的索引:這意味着重新索引數據,因為主分片的數量無法動態修改。
3.增加更多的索引:某些數據很容易被設計為使用多索引的模式。例如:如果索引日志,可以將每天的日志放入一個單獨的索引。