索引級分片分配
分片分配過濾
可以在啟動時為每個節(jié)點分配任意的元數(shù)據(jù)屬性。例如,可以給節(jié)點分配機架和size屬性
bin/elasticsearch -Enode.attr.rack=rack1 -Enode.attr.size=big
也可以在 elasticsearch.yml配置文件中設(shè)置
這些元數(shù)據(jù)屬性可以與index.routing.allocation.*
一起使用,為特定節(jié)點組分配索引的設(shè)置。
例如,我們可以將索引測試移動到大節(jié)點或中節(jié)點:
PUT test/_settings
{
"index.routing.allocation.include.size": "big,medium"
}
或者,我們可以使用exclude規(guī)則將索引test遠(yuǎn)離small節(jié)點:
PUT test/_settings
{
"index.routing.allocation.exclude.size": "small"
}
可以指定多個規(guī)則,在這種情況下,必須滿足所有條件。例如,我們可以將索引test移動到rack1中的big節(jié)點,操作如下:
PUT test/_settings
{
"index.routing.allocation.include.size": "big",
"index.routing.allocation.include.rack": "rack1"
}
如果某些條件不能滿足,那么分片將不會被移動。
以下設(shè)置是動態(tài)的,允許活動索引從一組節(jié)點移動到另一組節(jié)點:
index.routing.allocation.include.{attribute}
將索引分配給{attribute}至少有一個逗號分隔值的節(jié)點。
index.routing.allocation.require.{attribute}
將索引分配給{attribute}具有所有逗號分隔值的節(jié)點。
index.routing.allocation.exclude.{attribute}
將索引分配給{attribute}不包含逗號分隔值的節(jié)點。
{attribute}屬性值支持:_name _host_ip _publish_ip ip _host
支持通配符
PUT test/_settings
{
"index.routing.allocation.include._ip": "192.168.2.*"
}
節(jié)點下線時的延遲分配
當(dāng)一個節(jié)點出于任何原因離開集群時,master 的反應(yīng):
- 將replica 分片提升為primary ,以替換節(jié)點上的任何primaries 。
- 分配replica 分片以替換丟失的副本(假設(shè)有足夠的節(jié)點)。
- 在剩余節(jié)點之間均勻地重新平衡分片。
通過確保盡快完全復(fù)制每個分片,這些操作旨在保護(hù)集群免受數(shù)據(jù)丟失。
盡管我們在節(jié)點級和集群級都限制了并發(fā)恢復(fù),但這種“分片轉(zhuǎn)移”仍然會給集群增加大量額外的負(fù)載,如果丟失的節(jié)點可能很快就會返回,這可能是不必要的。設(shè)想一下這樣的情景:
- 節(jié)點5失去了網(wǎng)絡(luò)連接。
- 對于節(jié)點5上的每個primary ,master 將一個replica 分片提升為primary 。
- master 將新的副本分配給集群中的其他節(jié)點。
- 每個新replica 在網(wǎng)絡(luò)上生成primary 分片的整個副本。
- 將更多的分片移動到不同的節(jié)點以重新平衡集群。
- 節(jié)點5在幾分鐘后返回。
- 主服務(wù)器通過向節(jié)點5分配分片來重新平衡集群。
如果master 只等待了幾分鐘,那么丟失的分片就可以被重新分配到節(jié)點5,并且具有最小的網(wǎng)絡(luò)流量。對于已經(jīng)自動同步刷新的空閑分片(沒有接收索引請求的分片),這個過程會更快。
由于一個節(jié)點已經(jīng)離開而沒有分配的復(fù)制分片的分配可以通過index.unassigned.node_left.delayed_timeout動態(tài)設(shè)置延遲,默認(rèn)為1m。
PUT _all/_settings
{
"settings": {
"index.unassigned.node_left.delayed_timeout": "5m"
}
}
//立即進(jìn)行重新分配
PUT _all/_settings
{
"settings": {
"index.unassigned.node_left.delayed_timeout": "0"
}
}
啟用延遲分配后,上面的場景變?yōu)槿缦滤?
- 節(jié)點5失去了網(wǎng)絡(luò)連接。
- 對于節(jié)點5上的每個primary ,master 將一個replica分片提升到primary 。
- master會記錄一條消息,說明未分配分片的分配已經(jīng)被延遲,以及延遲了多長時間。
- 集群仍然是黃色的,因為有未分配的副本分片。
- 節(jié)點5在超時結(jié)束前幾分鐘返回。
- 丟失的副本被重新分配到節(jié)點5(同步刷新的分片幾乎立即恢復(fù))。
此設(shè)置不會影響將副本提升到primaries,也不會影響以前未分配的副本的分配。特別是,延遲分配在整個集群重新啟動后不會生效。此外,在master 故障轉(zhuǎn)移情況下,會忘記經(jīng)過的延遲時間(即重置為完整的初始延遲)。
如果延遲分配超時,master 將丟失的分片分配給另一個節(jié)點,該節(jié)點將開始恢復(fù)。如果丟失的節(jié)點重新加入集群,并且它的分片仍然具有與primary相同的同步id,則分片重新定位將被取消,而同步的分片將用于恢復(fù)。
索引恢復(fù)優(yōu)先級
在可能的情況下,將按優(yōu)先級順序恢復(fù)未分配的分片。索引按優(yōu)先次序排列如下:
- 可選的index.priority設(shè)置(先高后低)
- 索引創(chuàng)建日期(先高后低)
- 索引名(先高后低)
這意味著,在默認(rèn)情況下,較新的索引將在較舊的索引之前恢復(fù)。
使用每個索引動態(tài)更新index.priority設(shè)置,用于定制索引優(yōu)先級順序,此設(shè)置接受一個整數(shù),并可以動態(tài)更新,例如:
PUT index_1
PUT index_2
PUT index_3
{
"settings": {
"index.priority": 10
}
}
PUT index_4
{
"settings": {
"index.priority": 5
}
}
在上面的例子中:
- index_3將首先被恢復(fù),因為它具有最高的index.priority。
- index_4下一個將被恢復(fù),因為它具有下一個最高優(yōu)先級。
- 接下來將恢復(fù)index_2,因為它是最近創(chuàng)建的。
- index_1將最后恢復(fù)。
節(jié)點的總分片數(shù)
集群級分片分配器試圖將單個索引的分片分散到盡可能多的節(jié)點上。然而,根據(jù)您有多少個分片和索引以及它們有多大,可能并不總是能夠均勻地分布分片。
下面的動態(tài)設(shè)置允許您指定一個對每個節(jié)點允許的單個索引的分片總數(shù)的硬限制:
index.routing.allocation.total_shards_per_node
將分配給單個節(jié)點的最大分片數(shù)(副本和主節(jié)點)。默認(rèn)為無限。
您還可以限制一個節(jié)點可以擁有的分片的數(shù)量,而不考慮索引:
cluster.routing.allocation.total_shards_per_node
全局分配給單個節(jié)點的最大分片數(shù)(副本和主節(jié)點)。默認(rèn)值為unbounded(-1)。
這些設(shè)置施加了硬限制,這可能導(dǎo)致一些分片沒有被分配。謹(jǐn)慎使用。
集群級分片分配策略
Shard Allocation
是向節(jié)點分配分片的過程??赡馨l(fā)生在初始恢復(fù)、副本分配、重新平衡或添加或刪除節(jié)點時。
master的主要角色之一是決定將哪些分片分配給哪些節(jié)點,以及何時在節(jié)點之間移動分片以重新平衡集群。
有許多設(shè)置可用來控制分片分配過程:
-
集群級分片分配列出了控制分配和重新平衡操作的設(shè)置。
-
基于磁盤的分片分配解釋了Elasticsearch如何考慮可用磁盤空間和相關(guān)設(shè)置。
-
分片分配感知和強制感知控制如何跨不同機架或可用性區(qū)域分布分片。
-
分片分配過濾允許某些節(jié)點或節(jié)點組被排除在分配之外,以便它們可以退役。
分片分配設(shè)置
cluster.routing.allocation.enable
啟用或禁用特定類型的分片分配:
all -(默認(rèn))允許為所有類型的分片分配分片。
primaries ——只允許為主分片分配分片。
new_primary—只允許對新索引的主分片進(jìn)行分片分配。
none—對于任何索引都不允許任何類型的分片分配。
當(dāng)重新啟動節(jié)點時,此設(shè)置不影響本地主分片的恢復(fù)。擁有未分配主分片副本的重新啟動節(jié)點將立即恢復(fù)該主分片,假設(shè)其分配id與集群狀態(tài)中的一個活動分配id匹配。
其他參數(shù):
cluster.routing.allocation.node_concurrent_incoming_recoveries
在一個節(jié)點上允許發(fā)生多少個并發(fā)傳入分片恢復(fù)。傳入恢復(fù)是指在節(jié)點上分配目標(biāo)分片(很可能是副本,除非分片被重新定位)的恢復(fù)。默認(rèn)為2。
cluster.routing.allocation.node_concurrent_outgoing_recoveries
在一個節(jié)點上允許發(fā)生多少并發(fā)傳出分片恢復(fù)。傳出恢復(fù)是指在節(jié)點上分配源分片(很可能是主分片,除非分片被重新定位)的恢復(fù)。默認(rèn)為2。
cluster.routing.allocation.node_concurrent_recoveries
設(shè)置以上兩個值的快捷方式
cluster.routing.allocation.node_initial_primaries_recoveries
雖然通過網(wǎng)絡(luò)恢復(fù)副本,但在節(jié)點重啟后恢復(fù)未分配的primary將使用來自本地磁盤的數(shù)據(jù)。這些操作應(yīng)該很快,這樣更多的初始primary恢復(fù)就可以在同一個節(jié)點上并行進(jìn)行。默認(rèn)為4。
cluster.routing.allocation.same_shard.host
允許執(zhí)行檢查,以防止基于主機名和主機地址在一臺主機上分配同一個shard的多個實例。默認(rèn)值為false,表示默認(rèn)情況下不執(zhí)行檢查。此設(shè)置僅適用于在同一臺機器上啟動多個節(jié)點的情況。
分片平衡設(shè)置
以下動態(tài)設(shè)置可用于控制跨集群的分片重新平衡:
cluster.routing.rebalance.enable
為特定類型的分片啟用或禁用重新平衡:
all -(默認(rèn))允許對所有類型的分片進(jìn)行分片平衡。
primaries ——只允許主分片進(jìn)行分片平衡。
replicas -只允許副本分片平衡。
none -任何索引都不允許任何類型的分片平衡。
cluster.routing.allocation.allow_rebalance
指定何時允許分片再平衡:
always
indices_primaries_active 僅當(dāng)集群中的所有primaries都已分配。
indices_all_active (默認(rèn))僅當(dāng)集群中的所有分片(主分片和副本)都已分配。
cluster.routing.allocation.cluster_concurrent_rebalance
允許控制集群范圍內(nèi)允許多少并發(fā)分片重平衡。默認(rèn)為2。
注意,此設(shè)置僅控制由于集群中不平衡而導(dǎo)致的并發(fā)分片重定位的數(shù)量。此設(shè)置不限制由于 allocation filtering或forced awareness而導(dǎo)致的分片重定位。
分片平衡因子
以下設(shè)置共同確定將每個分片放置在何處。當(dāng)沒有允許的重新平衡操作使任何節(jié)點的權(quán)重更接近任何其他節(jié)點的權(quán)重超過balance.threshold時,集群即達(dá)到平衡。
cluster.routing.allocation.balance.shard
定義在節(jié)點上分配的分片總數(shù)的權(quán)重因子(浮點數(shù))。默認(rèn)為0.45f。提高這個值會導(dǎo)致集群中所有節(jié)點上的分片數(shù)量趨于均衡。
cluster.routing.allocation.balance.index
定義在特定節(jié)點上分配的每個索引的分片數(shù)的權(quán)重因子(浮點數(shù))。默認(rèn)為0.55f。提高這個值會導(dǎo)致集群中所有節(jié)點的每個索引的分片數(shù)趨于相等。
cluster.routing.allocation.balance.threshold
應(yīng)該執(zhí)行的操作的最小優(yōu)化值(非負(fù)浮點數(shù))。默認(rèn)為1.0f。提高這個值將導(dǎo)致集群在優(yōu)化分片平衡方面不那么積極。
無論平衡算法的結(jié)果如何,由于forced awareness或 allocation filtering導(dǎo)致的操作都不允許再平衡。
基于磁盤的分片分配策略
Elasticsearch會考慮節(jié)點上的可用磁盤空間,然后再決定是將新分片分配給該節(jié)點,還是主動將分片從該節(jié)點重新定位。
cluster.routing.allocation.disk.threshold_enabled
(動態(tài))默認(rèn)為true。若設(shè)置為false,則禁用磁盤分配決定器。
cluster.routing.allocation.disk.watermark.low
(動態(tài))磁盤水位線,不使用超過該水位線的空間,默認(rèn)是85%,也可以設(shè)置值(500m)。此設(shè)置對新創(chuàng)建的索引的主分片沒有影響,特別是對以前從未分配過的分片沒有影響。
cluster.routing.allocation.disk.watermark.high
(動態(tài))磁盤高水位線,超過該水位線的分片將重新定位。此設(shè)置將影響所有分片的分配,無論之前是否分配。
cluster.routing.allocation.disk.watermark.enable_for_single_data_node
(靜態(tài))默認(rèn)是單節(jié)點中忽略磁盤水位線,設(shè)置為true,啟用該設(shè)置
cluster.routing.allocation.disk.watermark.flood_stage
(靜態(tài))最高水位線,默認(rèn)值95%,強制使索引變?yōu)橹蛔x索引塊(index.blocks.read_only_allow_delete),禁止任何的寫入請求。這是為了防止耗盡單機磁盤容量的最后手段。這是防止節(jié)點耗盡磁盤空間的最后一種手段。一旦有足夠的可用磁盤空間允許索引操作繼續(xù),就必須手動釋放索引塊。
cluster.info.update.interval
(動態(tài))節(jié)點磁盤檢查頻率,默認(rèn)30s
不能在這些設(shè)置中混合使用百分比值和字節(jié)值。要么全部設(shè)置為百分比值,要么全部設(shè)置為字節(jié)值。這樣我們就可以驗證設(shè)置在內(nèi)部是否一致(即,低磁盤閾值不超過高磁盤閾值,而高磁盤閾值不超過泛濫階段閾值)。
重置只讀索引塊:
PUT /twitter/_settings
{
"index.blocks.read_only_allow_delete": null
}
舉個栗子:
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.watermark.low": "100gb",
"cluster.routing.allocation.disk.watermark.high": "50gb",
"cluster.routing.allocation.disk.watermark.flood_stage": "10gb",
"cluster.info.update.interval": "1m"
}
}
百分比值指的是已使用的磁盤空間,而字節(jié)值指的是空閑磁盤空間。這可能會令人困惑,因為它顛倒了high和low的含義。例如,將低水印設(shè)置為10gb,將高水印設(shè)置為5gb是合理的,但反之則不然。
其他設(shè)置
cluster.routing.allocation.disk.include_relocations
默認(rèn)為true,這意味著Elasticsearch在計算節(jié)點的磁盤使用情況時將考慮當(dāng)前正在重定位到目標(biāo)節(jié)點的分片。 但是,考慮到重定位分片的大小,可能意味著在高端方面錯誤地估計了節(jié)點的磁盤使用情況,因為重定位可能已完成90%,并且最近檢索到的磁盤使用情況將包括重定位分片的總大小。 以及正在運行的重定位已使用的空間。
分片自動感知
多個vm上運行節(jié)點時,在相同的物理服務(wù)器上,在多個機架,或跨多個區(qū)域或領(lǐng)域,更有可能是兩個節(jié)點在同一物理服務(wù)器上,在同一架,或在同一區(qū)域或域會崩潰在同一時間,而不是兩個無關(guān)的節(jié)點同時崩潰。
如果Elasticsearch了解硬件的物理配置,它可以確保主分片及其復(fù)制分片分散在不同的物理服務(wù)器、機架或區(qū)域,從而最大限度地降低同時丟失所有分片副本的風(fēng)險。
分片分配感知設(shè)置允許您告訴Elasticsearch您的硬件配置。
例如,假設(shè)我們有幾個機架。當(dāng)我們啟動一個節(jié)點時,我們可以通過給它分配一個名為rack_id的任意元數(shù)據(jù)屬性來告訴它它在哪個機架上——我們可以使用任何屬性名稱。例如:
./bin/elasticsearch -Enode.attr.rack_id=rack_one
也可以在elasticsearch.yml 設(shè)置
自動感知屬性
cluster.routing.allocation.awareness.attributes: rack_id
有了這個配置之后,我們假設(shè)用node.attr.rack_id:rack_one啟動兩個節(jié)點,然后創(chuàng)建一個包含5個主分片和每個主分片1個副本的索引。在這兩個節(jié)點上分配所有的主節(jié)點和副本。
現(xiàn)在,如果我們用node.attr.rack_id:rack_two再啟動兩個節(jié)點, Elasticsearch將把分片移動到新節(jié)點,確保(如果可能)同一分片的兩個副本不會出現(xiàn)在同一機架上。然而,如果rack_two失敗,關(guān)閉了它的兩個節(jié)點,Elasticsearch仍然會將丟失的分片副本分配給rack_one中的節(jié)點。
當(dāng)執(zhí)行搜索或獲取請求時,啟用了分片感知,Elasticsearch將傾向于使用本地分片(同一感知組中的分片)來執(zhí)行請求。這通常比跨機架或跨區(qū)域邊界更快。
//設(shè)置節(jié)點的自動感知屬性
node.attr.rack_id: rack_one
cluster.routing.allocation.awareness.attributes: rack_id
自動感知同一網(wǎng)段、同一機架、同一機房的物理機,最大限度的動態(tài)分配分片位置。則集群分片只在這個兩個節(jié)點之間復(fù)制。
混合感知
可以指定多個感知屬性,在這種情況下,在決定將分片分配到何處時,將分別考慮每個屬性。
cluster.routing.allocation.awareness.attributes: rack_id,zone
在使用感知屬性時,將不會將分片分配給沒有為這些屬性設(shè)置值的節(jié)點。
在具有相同感知屬性值的特定節(jié)點組上分配的分片的主/副本數(shù)量由屬性值的數(shù)量決定。當(dāng)組中的節(jié)點數(shù)量不平衡,并且有許多副本時,可能會留下未分配的副本分片。
強制感知
假設(shè)您有兩個區(qū)域,這兩個區(qū)域上有足夠的硬件來承載所有的主分片和復(fù)制分片。但是,一個區(qū)域中的硬件,雖然足以承載一半的分片,但可能無法承載所有的分片。
在一般情況下,如果一個區(qū)域與另一個區(qū)域失去聯(lián)系,Elasticsearch將把所有丟失的復(fù)制分片分配到一個區(qū)域。但是在本例中,這種突然的額外負(fù)載會導(dǎo)致剩余區(qū)域中的硬件過載。
強制感知通過不允許將同一分片的副本分配到同一區(qū)域來解決這個問題。
例如,假設(shè)我們有一個名為zone的感知屬性,并且我們知道我們將有兩個區(qū)域,zone1和zone2。下面是我們?nèi)绾螐娭聘兄粋€節(jié)點:
cluster.routing.allocation.awareness.force.zone.values: zone1,zone2
cluster.routing.allocation.awareness.attributes: zone
我們必須列出區(qū)域?qū)傩钥赡軗碛械乃兄怠?
現(xiàn)在,如果我們用 node.attr.zone
:zone1開始兩個節(jié)點,并創(chuàng)建具有5個分片和1個副本的索引。將創(chuàng)建索引,但只分配5個主分片(不分配副本)。只有當(dāng)我們使用node.attr.zone:zone2啟動更多節(jié)點時將分配副本。
分片分配過濾器
索引分片分配提供了每個索引的設(shè)置來控制對節(jié)點的分片分配,而集群級分片分配過濾允許您允許或不允許從任何索引向特定節(jié)點分配分片。
屬性設(shè)置
cluster.routing.allocation.include.{attribute}
將分片分配給{attribute}至少有一個逗號分隔值的節(jié)點。
cluster.routing.allocation.require.{attribute}
僅將分片分配給{attribute}具有所有逗號分隔值的節(jié)點。
cluster.routing.allocation.exclude.{attribute}
不要為{attribute}具有任何逗號分隔值的節(jié)點分配分片。
{attribute}屬性值:_name _ip _host
節(jié)點退役
集群范圍的分片分配篩選的典型用例是當(dāng)您想要退役一個節(jié)點,并且您想要在關(guān)閉該節(jié)點之前將分片從該節(jié)點移動到集群中的其他節(jié)點。
PUT _cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._ip" : "10.0.0.1"
}
}
只有在不破壞另一個路由約束的情況下,如永遠(yuǎn)不將主分片和復(fù)制分片分配給同一個節(jié)點,分片才會被重新分配。
雜項設(shè)置
元數(shù)據(jù)設(shè)置
cluster.blocks.read_only
(動態(tài))設(shè)置整個集群只讀
cluster.blocks.read_only_allow_delete
(動態(tài))集群只讀,可以刪除
不要依賴此設(shè)置來防止對集群的更改。任何能夠訪問集群更新設(shè)置API的用戶都可以再次對集群進(jìn)行讀寫操作。
索引設(shè)置
PUT /my-index-000001/_settings
{
"index.blocks.read_only_allow_delete": null
}
集群分片限制
在Elasticsearch 7.0及以后版本中,將根據(jù)集群中的節(jié)點數(shù)量對集群中的分片數(shù)量進(jìn)行軟限制。這樣做的目的是防止可能無意中破壞集群穩(wěn)定的操作。在7.0之前,會導(dǎo)致集群超過限制的操作將發(fā)出棄用警告。
如果集群已經(jīng)超過極限,由于在節(jié)點加入或環(huán)境變化,所有操作,創(chuàng)建或打開指數(shù)將發(fā)出警告,直到增加如下所述的極限,或一些指數(shù)已經(jīng)關(guān)閉或刪除分片下面的數(shù)量限制。
如果創(chuàng)建新索引、恢復(fù)索引快照或打開已關(guān)閉索引等操作將導(dǎo)致集群中的分片數(shù)量超過此限制,該操作將發(fā)出棄用警告。
副本會達(dá)到這個限制,但是關(guān)閉的索引不會。包含5個主分片和2個副本的索引將被計算為15個分片。任何關(guān)閉的索引都被計數(shù)為0,無論它包含多少個分片和副本。
默認(rèn)限制為每個節(jié)點1000個分片,可以使用以下屬性動態(tài)調(diào)整:
cluster.max_shards_per_node
(動態(tài))控制每個data node的最大分片數(shù)量
例如,具有默認(rèn)設(shè)置的3節(jié)點集群將允許跨所有打開的索引共3000個shard。如果將上述設(shè)置更改為1,500,那么集群總共將允許4,500個分片。
當(dāng)超過單節(jié)點所能容納的最大分片數(shù)量的上限值時
PUT test/_doc/1
{
"message":"test"
}
會發(fā)出軟警告,該警告并不會讓你的操作無效,具體的機器可以承載的分片數(shù)仍然視機器性能而定,并不做強制限制
#! Deprecation: In a future major version, this request will fail because this action would add [10] total shards, but this cluster currently has [1303]/[1000] maximum shards open. Before upgrading, reduce the number of shards in your cluster or adjust the cluster setting [cluster.max_shards_per_node].
自定義集群元數(shù)據(jù)
用戶定義的元數(shù)據(jù)可以使用集群設(shè)置API存儲和檢索。這可以用于存儲關(guān)于集群的不經(jīng)常更改的任意數(shù)據(jù),而不需要創(chuàng)建索引來存儲這些數(shù)據(jù)。此數(shù)據(jù)可以使用任何前綴為cluster.metadata的鍵存儲。例如,將集群管理員的電子郵件地址存儲在密鑰cluster.metadata.administrator下,發(fā)出此請求:
PUT /_cluster/settings
{
"persistent": {
"cluster.metadata.administrator": "sysadmin@example.com"
}
}
用戶定義的集群元數(shù)據(jù)不用于存儲敏感或機密信息。任何存儲在用戶定義的集群元數(shù)據(jù)中的信息都可以被任何訪問集群Get Settings API的人看到,并記錄在Elasticsearch日志中。
Index tombstone
集群狀態(tài)維護(hù)索引tombstone以顯式地表示已刪除的索引。集群狀態(tài)下維護(hù)的tombstone數(shù)量由以下屬性控制,不能動態(tài)更新:
cluster.indices.tombstones.size
當(dāng)刪除發(fā)生時,索引tombstone防止不屬于集群的節(jié)點加入集群并重新導(dǎo)入索引,就像刪除從未發(fā)出過一樣。為了防止集群狀態(tài)變得過大,我們只保留最后的cluster.indices.tombstones.size刪除,默認(rèn)值為500。如果您希望集群中沒有節(jié)點并且遺漏超過500個刪除操作,那么可以增加這個值。我們認(rèn)為這是罕見的,因此默認(rèn)。tombstones不會占用太多空間,但我們也認(rèn)為像5萬這樣的數(shù)字可能太大了。
日志
PUT /_cluster/settings
{
"transient": {
"logger.org.elasticsearch.indices.recovery": "DEBUG"
}
}
持久任務(wù)
插件可以創(chuàng)建一種稱為持久任務(wù)的任務(wù)。這些任務(wù)通常是長期存在的任務(wù),并以集群狀態(tài)存儲,從而允許在整個集群重新啟動后恢復(fù)這些任務(wù)。
每次創(chuàng)建持久任務(wù)時,主節(jié)點負(fù)責(zé)將任務(wù)分配給集群的一個節(jié)點,然后被分配的節(jié)點將挑選任務(wù)并在本地執(zhí)行。為節(jié)點分配持久任務(wù)的過程由以下屬性控制,可以動態(tài)更新:文章來源:http://www.zghlxwxcb.cn/news/detail-837485.html
cluster.persistent_tasks.allocation.enable
啟用或禁用持久任務(wù)分配:
all (default)允許將持久任務(wù)分配給節(jié)點
none 對于任何類型的持久任務(wù)都不允許分配
此設(shè)置不會影響正在執(zhí)行的持久任務(wù)。只有新創(chuàng)建的持久任務(wù)或必須重新分配的任務(wù)(例如,在節(jié)點離開集群之后)才會受到此設(shè)置的影響。文章來源地址http://www.zghlxwxcb.cn/news/detail-837485.html
到了這里,關(guān)于【Elasticsearch管理】分片分配的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!