W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
首選項(xiàng)是向Solr提示如何根據(jù)節(jié)點(diǎn)的使用情況對(duì)節(jié)點(diǎn)進(jìn)行排序。默認(rèn)的群集首選項(xiàng)是按節(jié)點(diǎn)所承載的 Solr 核心(或副本)的總數(shù)進(jìn)行排序。因此,默認(rèn)情況下,在選擇要添加副本的節(jié)點(diǎn)時(shí),Solr可以應(yīng)用這個(gè)首選項(xiàng)并選擇核心數(shù)量最少的節(jié)點(diǎn)。
可以添加多個(gè)首選項(xiàng)來(lái)斷開連接。例如,如果兩個(gè)節(jié)點(diǎn)上的內(nèi)核數(shù)量相同,我們可以選擇使用空閑磁盤空間來(lái)斷開連接,因此可以選擇空閑磁盤空間較高的節(jié)點(diǎn)作為集群操作的目標(biāo)。
每個(gè)首選項(xiàng)的形式如下:
{"<sort_order>":"<sort_param>", "precision":"<precision_val>"}
該值可以是maximize
或者minimize
。minimize
將最小值的節(jié)點(diǎn)排序?yàn)樽钚∝?fù)載。例如,{"minimize":"cores"}
將核心數(shù)量最少的節(jié)點(diǎn)排序?yàn)樨?fù)載最少的節(jié)點(diǎn)。排序順序,例如{"maximize":"freedisk"}
將具有最大可用磁盤空間的節(jié)點(diǎn)排序?yàn)樨?fù)載最少的節(jié)點(diǎn)。
系統(tǒng)的目標(biāo)是使每個(gè)節(jié)點(diǎn)的負(fù)載最小。所以,在一個(gè)MOVEREPLICA
操作的情況下,它通常以最負(fù)載的節(jié)點(diǎn)為目標(biāo),并將其卸載。在一種更加負(fù)載較少的加載,minimize
類似于降序排序,maximize
類似于按升序排序。
這是一個(gè)必需的參數(shù)。
必須指定以下唯一支持的參數(shù)之一:
cores
:節(jié)點(diǎn)上的Solr核心總數(shù)。
freedisk
:Solr數(shù)據(jù)主目錄的可用磁盤空間量。這總是以千兆字節(jié)為單位。
sysLoadAvg
:由Metrics API在solr.jvm/os.systemLoadAverage
密鑰下報(bào)告的節(jié)點(diǎn)上的系統(tǒng)負(fù)載平均值。這通常是介于0和1之間的double值,值越高,節(jié)點(diǎn)的加載越多。
heapUsage
:由Metrics API在solr.jvm/memory.heap.usage
密鑰下報(bào)告的節(jié)點(diǎn)的堆使用情況。這通常是介于0和1之間的double值,值越高,節(jié)點(diǎn)的加載越多。
precision告訴系統(tǒng)兩個(gè)值之間的最小(絕對(duì))差值,將它們視為不同的值。
例如,10的精度freedisk
意味著兩個(gè)節(jié)點(diǎn)的空閑磁盤空間相互在10GB以內(nèi),為了排序的目的應(yīng)該被視為相等。這有助于創(chuàng)建關(guān)系,沒有它指定多個(gè)首選項(xiàng)是沒有用的。這是一個(gè)可選參數(shù),其值必須是正整數(shù)。最大值precision
必須小于最大值sort_value
,如果有的話。
有關(guān)如何管理群集首選項(xiàng)的詳細(xì)信息,請(qǐng)參閱set-cluster-preferences API部分。
以下顯示了默認(rèn)群集首選項(xiàng)。當(dāng)沒有使用Autoscaling API設(shè)置明確的群集首選項(xiàng)時(shí),這由Solr 自動(dòng)應(yīng)用。
[
{"minimize":"cores"}
]
在這個(gè)例子中,我們希望最小化Solr內(nèi)核的數(shù)量,并且在一個(gè)連接的情況下,最大化每個(gè)節(jié)點(diǎn)上的可用磁盤空間量。
[
{"minimize" : "cores"},
{"maximize" : "freedisk"}
]
在這個(gè)例子中,我們給freedisk參數(shù)添加了一個(gè)精度,這樣相互之間的可用磁盤空間在10GB以內(nèi)的節(jié)點(diǎn)被認(rèn)為是相等的。在這種情況下,通過(guò)最小化sysLoadAvg來(lái)打破聯(lián)系。
[
{"minimize" : "cores"},
{"maximize" : "freedisk", "precision" : 10},
{"minimize" : "sysLoadAvg"}
]
策略是每個(gè)節(jié)點(diǎn)都要滿足的硬性規(guī)則。如果一個(gè)節(jié)點(diǎn)不滿足規(guī)則,那么它被稱為違規(guī)。Solr確保在調(diào)用任何集群管理操作時(shí),將違規(guī)數(shù)量降至最低。
策略可以具有以下屬性:
這是一個(gè)適用于整個(gè)群集的特殊屬性。它只能與node
屬性一起使用,而不能與其他屬性一起使用。該屬性是可選的。
策略規(guī)則應(yīng)該應(yīng)用到的集合的名稱。如果省略,則該規(guī)則適用于所有集合。該屬性是可選的。
策略規(guī)則應(yīng)該應(yīng)用到的分片的名稱。如果省略,則該規(guī)則適用于集合中的所有分片。它支持一個(gè)特殊的值#EACH
,這意味著該規(guī)則適用于集合中的每個(gè)分片。
為滿足規(guī)則而必須存在的副本數(shù)量。這必須是一個(gè)正整數(shù)。這是一個(gè)必需的屬性。
一個(gè)可選的布爾值。默認(rèn)是true
。如果 true,則必須滿足該規(guī)則。如果 false,Solr盡力滿足規(guī)則,但是如果沒有節(jié)點(diǎn)可以滿足規(guī)則,那么可以選擇任何節(jié)點(diǎn)。
除了以上屬性之外,還可以指定下列屬性中的一個(gè)屬性:
規(guī)則應(yīng)該適用的節(jié)點(diǎn)的名稱。默認(rèn)值是#ANY
這意味著群集中的任何節(jié)點(diǎn)都可以滿足規(guī)則。
規(guī)則應(yīng)該適用的節(jié)點(diǎn)的端口。
以千兆字節(jié)為單位的可用磁盤空間。這必須是一個(gè)正的64位整數(shù)值。
節(jié)點(diǎn)的主機(jī)名。
由Metrics API在solr.jvm/os.systemLoadAverage
密鑰下報(bào)告的節(jié)點(diǎn)的系統(tǒng)負(fù)載平均值這是0到1之間的浮點(diǎn)值。
由Metrics API在solr.jvm/memory.heap.usage
密鑰下報(bào)告的節(jié)點(diǎn)的堆使用情況這是0到1之間的浮點(diǎn)值。
節(jié)點(diǎn)的作用。目前唯一支持的值是overseer
。
對(duì)IP地址最重要的最重要的部分。例如,對(duì)于一個(gè)IP地址192.168.1.2
,ip_1 = 2
,ip_2 = 1
,ip_3 = 168
,ip_4 = 192
。
啟動(dòng)時(shí)在節(jié)點(diǎn)上設(shè)置的任何系統(tǒng)屬性。
策略中的每個(gè)屬性都可以指定下列運(yùn)算符之一以及該值。
不要在同一個(gè)節(jié)點(diǎn)上放置同一個(gè)分片的多個(gè)副本:
{"replica": "<2", "shard": "#EACH", "node": "#ANY"}
不要在任何節(jié)點(diǎn)放置10個(gè)以上的內(nèi)核。此規(guī)則只能添加到群集策略中,因?yàn)樗岬搅藘H適用于群集范圍的cores屬性。
{"cores": "<10", "node": "#ANY"}
在端口上運(yùn)行的節(jié)點(diǎn)上正好放置每個(gè)xyz集合分片的一個(gè)副本8983
{"replica": 1, "shard": "#EACH", "collection": "xyz", "port": "8983"}
將所有副本放在具有availability_zone=us-east-1a系統(tǒng)屬性的節(jié)點(diǎn)上。請(qǐng)注意,我們必須在負(fù)面意義上編寫此規(guī)則,即0個(gè)副本必須位于不具有availability_zone=us-east-1a系統(tǒng)屬性的節(jié)點(diǎn)上:
{"replica": 0, "sysprop.availability_zone": "!us-east-1a"}
不要在具有overseer角色的節(jié)點(diǎn)上放置任何副本。請(qǐng)注意,該角色是由addRole集合API 添加的。它不是自動(dòng)成為當(dāng)前監(jiān)督者的節(jié)點(diǎn)。
{"replica": 0, "nodeRole": "overseer"}
將所有復(fù)制副本放在空閑大于500GB的節(jié)點(diǎn)中。這里又一次,我們必須在負(fù)面意義上寫下規(guī)則。
{"replica": 0, "freedisk": "<500"}
盡可能將所有副本放在空閑大于500GB的節(jié)點(diǎn)中。在這里,我們使用嚴(yán)格的關(guān)鍵字來(lái)表明這個(gè)規(guī)則是盡最大努力的。
{"replica": 0, "freedisk": "<500", "strict" : false}
默認(rèn)情況下,群集策略(如果存在)將自動(dòng)用于群集中的所有集合。但是,我們可以通過(guò)指定策略名稱和policy參數(shù)來(lái)創(chuàng)建可在創(chuàng)建時(shí)附加到集合的命名策略。
使用特定于集合的策略時(shí),該策略中的規(guī)則將附加到群集策略中的規(guī)則中,并使用這兩者的組合。因此,建議不要將規(guī)則添加到與群集策略中的集合特定的策略中。這樣做會(huì)使群集中的所有節(jié)點(diǎn)都不符合所有標(biāo)準(zhǔn),從而使策略失效。
可以使用特定于集合的策略來(lái)覆蓋群集策略中指定的條件。例如,如果某個(gè)子句{replica:'<3', node:'#ANY'}出現(xiàn)在群集策略中,并且特定于集合的策略中有一個(gè)子句{replica:'<4', node:'#ANY'},則群集策略將被忽略,以支持集合策略。
另外,如果在創(chuàng)建集合時(shí)指定了 maxShardsPerNode,則必須滿足 maxShardsPerNode 和策略規(guī)則。
某些屬性,如cores,只能在集群策略中使用。有關(guān)詳細(xì)信息,請(qǐng)參閱上面的策略屬性部分。
該策略由這些Collections API命令使用:
將來(lái),Autoscaling框架將使用策略和首選項(xiàng)來(lái)自動(dòng)更改群集,以響應(yīng)諸如正在添加或丟失的節(jié)點(diǎn)之類的事件。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: