SolrCloud自動(dòng)縮放API

2018-01-15 10:41 更新

自動(dòng)縮放API用于管理自動(dòng)縮放策略和首選項(xiàng),并獲取有關(guān)群集狀態(tài)的診斷信息。

Read API

自動(dòng)縮放的Read API可存放在/admin/autoscaling或/v2/cluster/autoscaling中。它返回有關(guān)配置的群集首選項(xiàng),群集策略和特定于集合的策略的信息。

這個(gè)API不帶任何參數(shù)。

Read API響應(yīng)

輸出將包含群集首選項(xiàng),群集策略和特定于集合的策略。

使用Read API的示例

示例輸入:

{
    "responseHeader": {
        "status": 0,
        "QTime": 2
    },
    "cluster-policy": [
        {
            "replica": "<2",
            "shard": "#EACH",
            "node": "#ANY"
        }
    ],
    "WARNING": "This response format is experimental.  It is likely to change in the future."
}

Diagnostics API

Diagnostics API顯示群集中所有情況(如果有的話)的違規(guī)情況,以及(如果適用)集合策略。它在/admin/autoscaling/diagnostics路徑上可用。

這個(gè)API不帶任何參數(shù)。

Diagnostics API響應(yīng)

輸出將包含集群中的sortedNodes節(jié)點(diǎn)列表,其按照總體負(fù)載按降序(由首選項(xiàng)確定)進(jìn)行排序,并且violations是包含它們違反的條件的節(jié)點(diǎn)列表。

使用Diagnostics API示例

這里是一個(gè)沒(méi)有違規(guī)的例子,但是在這一sortedNodes節(jié)中,我們可以看到第一個(gè)節(jié)點(diǎn)是最負(fù)載的(根據(jù)核心數(shù)量):

{
    "responseHeader": {
        "status": 0,
        "QTime": 65
    },
    "diagnostics": {
        "sortedNodes": [
            {
                "node": "127.0.0.1:8983_solr",
                "cores": 3
            },
            {
                "node": "127.0.0.1:7574_solr",
                "cores": 2
            }
        ],
        "violations": []
    },
    "WARNING": "This response format is experimental.  It is likely to change in the future."
}

假設(shè)我們向群集策略添加了一個(gè)條件如下:

{"replica": "<2", "shard": "#EACH", "node": "#ANY"}

但是,由于第一個(gè)示例中的第一個(gè)節(jié)點(diǎn)已經(jīng)有一個(gè)以上的分片副本,因此Diagnostics API將返回:

{
    "responseHeader": {
        "status": 0,
        "QTime": 45
    },
    "diagnostics": {
        "sortedNodes": [
            {
                "node": "127.0.0.1:8983_solr",
                "cores": 3
            },
            {
                "node": "127.0.0.1:7574_solr",
                "cores": 2
            }
        ],
        "violations": [
            {
                "collection": "gettingstarted",
                "shard": "shard1",
                "node": "127.0.0.1:8983_solr",
                "tagKey": "127.0.0.1:8983_solr",
                "violation": {
                    "replica": "2",
                    "delta": 0
                },
                "clause": {
                    "replica": "<2",
                    "shard": "#EACH",
                    "node": "#ANY",
                    "collection": "gettingstarted"
                }
            }
        ]
    },
    "WARNING": "This response format is experimental.  It is likely to change in the future."
}

在上面的例子中,帶有端口8983的節(jié)點(diǎn)有兩個(gè)副本shard1違反了我們的策略。

Write API

Write API與Read API在相同/admin/autoscaling和/v2/cluster/autoscaling端點(diǎn)上可用,但只能與 POST HTTP 謂詞一起使用。

POST請(qǐng)求的有效負(fù)載是一個(gè)JSON消息,帶有設(shè)置和刪除組件的命令??梢栽谟行ж?fù)載中一起指定多個(gè)命令。這些命令按照指定的順序執(zhí)行,并且這些更改是atomic的,即全部成功或者全部成功。

創(chuàng)建和修改群集首選項(xiàng)

群集首選項(xiàng)被指定為排序首選項(xiàng)的列表。可以指定多個(gè)排序首選項(xiàng),并按順序應(yīng)用。

它們是使用該set-cluster-preferences命令定義的。

每個(gè)首選項(xiàng)是具有以下語(yǔ)法的JSON映射:

{'<sort_order>':'<sort_param>', 'precision':'<precision_val>'}

有關(guān) sort_order、sort_param 和 precision 參數(shù)的允許值的詳細(xì)信息,參閱 "群集首選項(xiàng)規(guī)范" 部分。

群集已建好后更改群集首選項(xiàng)不會(huì)自動(dòng)重新配置群集。但是,所有未來(lái)的群集管理操作都將使用已更改的首選項(xiàng)。

示例輸入:

{
"set-cluster-preferences" : [
  {"minimize": "cores"}
  ]
}

示例輸出:

輸出有一個(gè)名為"result"的鍵,它將根據(jù)命令是成功還是失敗返回“success”或“failure”:

{
    "responseHeader": {
        "status": 0,
        "QTime": 138
    },
    "result": "success",
    "WARNING": "This response format is experimental.  It is likely to change in the future."
}

設(shè)置群集首選項(xiàng)示例

在這個(gè)例子中,我們添加了三個(gè)不同的參數(shù)排序的群集首選項(xiàng):

{
  "set-cluster-preferences": [
    {
      "minimize": "cores",
      "precision": 2
    },
    {
      "maximize": "freedisk",
      "precision": 100
    },
    {
      "minimize": "sysLoadAvg",
      "precision": 10
    }
  ]
}

我們可以通過(guò)將首選項(xiàng)設(shè)置為空列表來(lái)刪除所有群集首選項(xiàng)。

{
  "set-cluster-preferences": []
}

創(chuàng)建和修改群集策略

集群策略是使用該set-cluster-policy命令設(shè)置的。

就像set-cluster-preferences,策略定義是一個(gè)定義所需的屬性和值的JSON映射。

有關(guān)策略中每個(gè)條件的允許值的詳細(xì)信息,請(qǐng)參閱策略規(guī)范部分。

示例輸入:

{
"set-cluster-policy": [
  {"replica": "<2", "shard": "#EACH", "node": "#ANY"}
  ]
}

得到輸出:

{
    "responseHeader": {
        "status": 0,
        "QTime": 47
    },
    "result": "success",
    "WARNING": "This response format is experimental.  It is likely to change in the future."
}

通過(guò)將策略設(shè)置為空列表,我們可以刪除所有群集策略條件。

{
  "set-cluster-policy": []
}

在群集已經(jīng)建立后更改群集策略不會(huì)自動(dòng)重新配置群集。但是,所有未來(lái)的集群管理操作都將使用已更改的集群策略。

創(chuàng)建和修改特定于集合的策略

該set-policy命令接受策略名稱映射到該策略的條件列表??梢詫⒍鄠€(gè)命名策略一起指定。一個(gè)不存在的已命名的策略被創(chuàng)建,如果命名的策略已經(jīng)被接受,那么它被替換。

有關(guān)策略中每個(gè)條件的允許值的詳細(xì)信息,請(qǐng)參閱策略規(guī)范部分。

輸入如下:

{
"set-policy": {
  "policy1": [
    {"replica": "1", "shard": "#EACH", "port": "8983"}
    ]
  }
}

得到輸出:

{
    "responseHeader": {
        "status": 0,
        "QTime": 246
    },
    "result": "success",
    "WARNING": "This response format is experimental.  It is likely to change in the future."
}

已經(jīng)構(gòu)建集合后更改策略不會(huì)自動(dòng)重新配置集合。但是,所有未來(lái)的集群管理操作都將使用已更改的策略。

刪除特定于集合的策略

該remove-policy命令接受從Solr中刪除的策略名稱。被刪除的策略不能附加到任何集合,否則該命令將失敗。

輸入如下:

{"remove-policy": "policy1"}

得到輸出:

{
    "responseHeader": {
        "status": 0,
        "QTime": 42
    },
    "result": "success",
    "WARNING": "This response format is experimental.  It is likely to change in the future."
}

如果您嘗試刪除集合正在使用的策略,則該命令將無(wú)法刪除策略,直到集合本身被刪除。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)