1. 程式人生 > 其它 >Ceph 服務管理之守護程序

Ceph 服務管理之守護程序

對於部署服務的編排器,它需要知道在哪裡部署守護程序,以及部署多少。這是放置規範的作用。放置規範既可以作為命令列引數傳遞,也可以在 YAML 檔案中傳遞。

筆記:cephadm 不會在帶有_no_schedule標籤的主機上部署守護程序;請參閱特殊主機標籤。

筆記:apply命令可能會令人困惑。因此,我們建議使用 YAML 規範。

每個ceph orch apply 命令都取代它之前的命令。如果您不使用正確的語法,您將在進行時破壞您的工作。

例如:

ceph orch apply mon host1
ceph orch apply mon host2
ceph orch apply mon host3

這導致只有一個主機應用了監視器:host3。

(第一個命令在 host1 上建立一個監視器。然後第二個命令破壞 host1 上的監視器並在 host2 上建立一個監視器。然後第三個命令破壞 host2 上的監視器並在 host3 上建立一個監視器。在這種情況下,此時,僅在 host3 上有一個監視器。)

要確保將監視器應用於這三個主機中的每一個,請執行如下命令:

ceph orch apply mon "host1,host2,host3"

還有另一種方法可以將監視器應用到多個主機:可以使用一個yaml檔案。不要使用“ceph orch apply mon”命令,而是執行以下形式的命令:

ceph orch apply -i file.yaml

這是一個示例file.yaml檔案

service_type: mon
placement:
  hosts:
   - host1
   - host2
   - host3

顯式展示位置

守護程序可以通過簡單地指定它們顯式地放置在主機上:

orch apply prometheus --placement="host1 host2 host3"

或者在 YAML 中:

service_type: prometheus
placement:
  hosts:
    - host1
    - host2
    - host3

MON 和其他服務可能需要一些增強的網路規範:

orch daemon add mon --placement="myhost:[v2:1.2.3.4:3300,v1:1.2.3.4:6789]=name"

其中[v2:1.2.3.4:3300,v1:1.2.3.4:6789]是監視器的網路地址,並指定新監視器的名稱name。

按標籤放置

可以將守護程式放置限制在與特定標籤匹配的主機上。要為適當的主機設定標籤mylabel,請執行以下命令:

ceph orch host label add *<hostname>* mylabel

要檢視當前主機和標籤,請執行以下命令:

ceph orch host ls

例如:

ceph orch host label add host1 mylabel
ceph orch host label add host2 mylabel
ceph orch host label add host3 mylabel
ceph orch host ls
HOST   ADDR   LABELS  STATUS
host1         mylabel
host2         mylabel
host3         mylabel
host4
host5

現在,通過執行以下命令告訴 cephadm 根據標籤部署守護程序:

orch apply prometheus --placement="label:mylabel"

或者在 YAML 中:

service_type: prometheus
placement:
  label: "mylabel"

請參閱主機標籤。

通過模式匹配放置

守護程序也可以放置在主機上:

orch apply prometheus --placement='myhost[1-3]'

或者在 YAML 中:

service_type: prometheus
placement:
  host_pattern: "myhost[1-3]"

要在所有主機上放置服務,請使用"*":

orch apply node-exporter --placement='*'

或者在 YAML 中:

service_type: node-exporter
placement:
  host_pattern: "*"

改變守護程序的數量

通過指定count,只會建立指定數量的守護程序:

orch apply prometheus --placement=3

要在主機子集上部署守護程式,請指定計數:

orch apply prometheus --placement="2 host1 host2 host3"

如果計數大於主機數量,cephadm 會為每個主機部署一個:

orch apply prometheus --placement="3 host1 host2"

上面的命令會產生兩個 Prometheus 守護程序。

YAML 也可用於指定限制,方式如下:

service_type: prometheus
placement:
  count: 3

YAML 也可用於指定主機限制:

service_type: prometheus
placement:
  count: 2
  hosts:
    - host1
    - host2
    - host3

守護程序的協同定位

Cephadm 支援在同一主機上部署多個守護程序:

service_type: rgw
placement:
  label: rgw
  count-per-host: 2

每個主機部署多個守護程式的主要原因是在同一主機上執行多個 RGW 和 MDS 守護程式的額外效能優勢。

也可以看看:

此功能是在pacific引入的。

演算法描述

Cephadm 的宣告狀態由包含放置規範的服務規範列表組成。

Cephadm 不斷將叢集中實際執行的守護程序列表與服務規範中的列表進行比較。Cephadm 新增新的守護程序並根據需要刪除舊的守護程序,以符合服務規範。

Cephadm 執行以下操作以保持對服務規範的遵守。

Cephadm 首先選擇一個候選主機列表。Cephadm 尋找明確的主機名並選擇它們。如果 cephadm 沒有找到明確的主機名,它會查詢標籤規範。如果規範中沒有定義標籤,cephadm 會根據主機模式選擇主機。如果沒有定義主機模式,作為最後的手段,cephadm 選擇所有已知的主機作為候選。

Cephadm 知道現有的守護程序正在執行服務,並試圖避免移動它們。

Cephadm 支援部署特定數量的服務。考慮以下服務規範:

service_type: mds
service_name: myfs
placement:
  count: 3
  label: myfs

此服務規範指示 cephadm 在跨叢集標記myfs的主機上部署三個守護程序。

如果候選主機上部署的守護程序少於三個,cephadm 會隨機選擇要部署新守護程序的主機。

如果候選主機上部署了三個以上的守護程序,cephadm 將刪除現有的守護程序。

最後,cephadm 刪除候選主機列表之外的主機上的守護程序。

筆記:cephadm 必須考慮一種特殊情況。
如果放置規範選擇的主機數count少於所需的主機數,則 cephadm 將僅部署在選定的主機上。

作者:Varden 出處:http://www.cnblogs.com/varden/ 本文內容如有雷同,請聯絡作者! 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。