跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Enterprise Storage 7.1 文件 / 部署指南 / 部署 Ceph 叢集 / 使用 cephadm 部署其餘核心服務
適用範圍 SUSE Enterprise Storage 7.1

8 使用 cephadm 部署其餘核心服務

部署基本 Ceph 叢集之後,請將核心服務部署到更多叢集節點。為使用戶端能夠存取叢集資料,還需要部署額外的服務。

目前,我們支援使用 Ceph orchestrator (ceph orch 子指令) 在指令行上部署 Ceph 服務。

8.1 ceph orch 指令

Ceph orchestrator 指令 ceph orch 是 cephadm 模組的介面,它負責列出叢集元件並在新的叢集節點上部署 Ceph 服務。

8.1.1 顯示 orchestrator 狀態

以下指令會顯示目前模式和 Ceph orchestrator 的狀態。

cephuser@adm > ceph orch status

8.1.2 列出裝置、服務和精靈

若要列出所有磁碟裝置,請執行以下指令:

cephuser@adm > ceph orch device ls
Hostname   Path      Type  Serial  Size   Health   Ident  Fault  Available
ses-master /dev/vdb  hdd   0d8a... 10.7G  Unknown  N/A    N/A    No
ses-min1   /dev/vdc  hdd   8304... 10.7G  Unknown  N/A    N/A    No
ses-min1   /dev/vdd  hdd   7b81... 10.7G  Unknown  N/A    N/A    No
[...]
提示
提示:服務和精靈

服務是表示特定類型的 Ceph 服務的一般術語,例如 Ceph 管理員。

精靈表示服務的特定例項,例如在名為 ses-min1 的節點上執行的程序 mgr.ses-min1.gdlcik

若要列出 cephadm 已知的所有服務,請執行:

cephuser@adm > ceph orch ls
NAME  RUNNING  REFRESHED  AGE  PLACEMENT  IMAGE NAME                  IMAGE ID
mgr       1/0  5m ago     -    <no spec>  registry.example.com/[...]  5bf12403d0bd
mon       1/0  5m ago     -    <no spec>  registry.example.com/[...]  5bf12403d0bd
提示
提示

您可以使用選擇性的 -–host 參數使清單僅顯示特定節點上的服務,也可使用選擇性的 --service-type 參數使清單僅顯示特定類型的服務。可接受的類型有 monosdmgrmdsrgw

若要列出由 cephadm 部署的所有執行中精靈,請執行:

cephuser@adm > ceph orch ps
NAME            HOST     STATUS   REFRESHED AGE VERSION    IMAGE ID     CONTAINER ID
mgr.ses-min1.gd ses-min1 running) 8m ago    12d 15.2.0.108 5bf12403d0bd b8104e09814c
mon.ses-min1    ses-min1 running) 8m ago    12d 15.2.0.108 5bf12403d0bd a719e0087369
提示
提示

若要查詢某個特定精靈的狀態,請使用 --daemon_type--daemon_id。對於 OSD,ID 為數字 OSD ID。對於 MDS,ID 為檔案系統名稱:

cephuser@adm > ceph orch ps --daemon_type osd --daemon_id 0
cephuser@adm > ceph orch ps --daemon_type mds --daemon_id my_cephfs

8.2 服務和放置規格

指定 Ceph 服務部署的推薦方法是建立一個 YAML 格式的檔案,其中包含所要部署服務的規格。

8.2.1 建立服務規格

您可以為每種類型的服務建立單獨的規格檔案,例如:

root@master # cat nfs.yml
service_type: nfs
service_id: EXAMPLE_NFS
placement:
  hosts:
  - ses-min1
  - ses-min2
spec:
  pool: EXAMPLE_POOL
  namespace: EXAMPLE_NAMESPACE

或者,您可以在一個描述哪些節點將執行特定服務的檔案 (例如 cluster.yml) 中指定多個 (或所有) 服務類型。請記得使用三個破折號 (---) 分隔各個服務類型:

cephuser@adm > cat cluster.yml
service_type: nfs
service_id: EXAMPLE_NFS
placement:
  hosts:
  - ses-min1
  - ses-min2
spec:
  pool: EXAMPLE_POOL
  namespace: EXAMPLE_NAMESPACE
---
service_type: rgw
service_id: REALM_NAME.ZONE_NAME
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
---
[...]

上述內容的含義如下:

service_type

服務的類型。它可以是 Ceph 服務 (monmgrmdscrashosdrbd-mirror)、閘道 (nfsrgw) 或部分監控堆疊 (alertmanagergrafananode-exporterprometheus)。

service_id

服務的名稱。monmgralertmanagergrafananode-exporterprometheus 類型的規格不需要 service_id 內容。

placement

指定哪些節點將執行服務。如需更多詳細資料,請參閱第 8.2.2 節 「建立放置規格」

spec

與服務類型相關的其他規格。

提示
提示:套用特定服務

Ceph 叢集服務通常具有許多專屬內容。如需各個服務規格的範例和詳細資料,請參閱第 8.3 節 「部署 Ceph 服務」

8.2.2 建立放置規格

若要部署 Ceph 服務,cephadm 需要知道要在其上部署這些服務的節點。請使用 placement 內容並列出要套用服務的節點的主機簡短名稱:

cephuser@adm > cat cluster.yml
[...]
placement:
  hosts:
  - host1
  - host2
  - host3
[...]

8.2.3 套用叢集規格

建立包含所有服務及其放置的規格的完整 cluster.yml 檔案後,您便可透過執行以下指令來套用叢集:

cephuser@adm > ceph orch apply -i cluster.yml

若要檢視叢集的狀態,請執行 ceph orch status 指令。如需詳細資訊,請參閱第 8.1.1 節 「顯示 orchestrator 狀態」

8.2.4 輸出執行中叢集的規格

雖然您使用第 8.2 節 「服務和放置規格」中所述的規格檔案將服務部署到 Ceph 叢集,但在實際操作期間,叢集的組態可能會偏離原始規格。另外,您也可能會無意間移除規格檔案。

若要擷取執行中叢集的完整規格,請執行:

cephuser@adm > ceph orch ls --export
placement:
  hosts:
  - hostname: ses-min1
    name: ''
    network: ''
service_id: my_cephfs
service_name: mds.my_cephfs
service_type: mds
---
placement:
  count: 2
service_name: mgr
service_type: mgr
---
[...]
提示
提示

您可以附加 --format 選項以變更預設的 yaml 輸出格式。您可以從 jsonjson-prettyyaml 中進行選取。例如:

ceph orch ls --export --format json

8.3 部署 Ceph 服務

在執行基本叢集之後,您可以將 Ceph 服務部署到其他節點。

8.3.1 部署 Ceph 監控程式和 Ceph 管理員

Ceph 叢集的不同節點之間部署了三個或五個 MON。如果叢集中有五個或更多節點,則建議部署五個 MON。好的做法是,將 MGR 部署在與 MON 相同的節點上。

重要
重要:包含開機 MON

在部署 MON 和 MGR 時,請記得包含在第 7.2.5 節 「指定第一個 MON/MGR 節點」中設定基本叢集時新增的第一個 MON。

若要部署 MON,請套用以下規格:

service_type: mon
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
注意
注意

如果需要新增另一個節點,請在同一 YAML 清單中附加主機名稱。例如:

service_type: mon
placement:
 hosts:
 - ses-min1
 - ses-min2
 - ses-min3
 - ses-min4

同樣,若要部署 MGR,請套用以下規格:

重要
重要

確定您的部署在每個部署中至少具有三個 Ceph 管理員。

service_type: mgr
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
提示
提示

如果 MON 或 MGR 在同一子網路中,則需要附加子網路位址。例如:

service_type: mon
placement:
  hosts:
  - ses-min1:10.1.2.0/24
  - ses-min2:10.1.5.0/24
  - ses-min3:10.1.10.0/24

8.3.2 部署 Ceph OSD

重要
重要:當儲存裝置可用時

如果滿足以下所有條件,則儲存裝置將被視為可用

  • 裝置沒有分割區。

  • 裝置沒有任何 LVM 狀態。

  • 裝置未掛接。

  • 裝置不包含檔案系統。

  • 裝置不包含 BlueStore OSD。

  • 裝置大於 5 GB。

如果不滿足上述條件,Ceph 將拒絕佈建此類 OSD。

可以使用以下兩種方式來部署 OSD:

  • 告知 Ceph 使用所有可用和未使用的儲存裝置:

    cephuser@adm > ceph orch apply osd --all-available-devices
  • 使用 DriveGroups (參閱第 13.4.3 節 「使用 DriveGroups 規格新增 OSD。」) 建立 OSD 規格,該規格描述了將依據裝置內容 (例如裝置類型 (SSD 或 HDD)、裝置型號名稱、大小或裝置所在的節點) 部署的裝置。然後透過執行以下指令套用規格:

    cephuser@adm > ceph orch apply osd -i drive_groups.yml

8.3.3 部署中繼資料伺服器

CephFS 需要一或多個中繼資料伺服器 (MDS) 服務。若要建立 CephFS,首先要透過套用以下規格來建立 MDS 伺服器:

注意
注意

在套用以下規格之前,請確定至少建立了兩個池,一個用於儲存 CephFS 資料,另一個用於儲存 CephFS 中繼資料。

service_type: mds
service_id: CEPHFS_NAME
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3

MDS 正常執行後,建立 CephFS:

ceph fs new CEPHFS_NAME metadata_pool data_pool

8.3.4 部署物件閘道

cephadm 會將物件閘道部署為管理特定領域區域的精靈的集合。

您可以將物件閘道服務與現有的領域和區域相關聯 (如需更多詳細資料,請參閱第 21.13 節 「多站台物件閘道」),也可以指定不存在的 REALM_NAMEZONE_NAME,套用以下組態後會自動建立相應領域和區域:

service_type: rgw
service_id: REALM_NAME.ZONE_NAME
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
spec:
  rgw_realm: RGW_REALM
  rgw_zone: RGW_ZONE

8.3.4.1 使用安全 SSL 存取

若要使用連接至物件閘道的安全 SSL 連接,您需要一組有效的 SSL 證書和金鑰檔案 (如需更多詳細資料,請參閱第 21.7 節 「為物件閘道啟用 HTTPS/SSL」)。您需要啟用 SSL,指定 SSL 連接的連接埠號碼以及 SSL 證書和金鑰檔案。

若要啟用 SSL 並指定連接埠號碼,請在規格中包含以下內容:

spec:
  ssl: true
  rgw_frontend_port: 443

若要指定 SSL 證書和金鑰,可以將其內容直接貼至 YAML 規格檔案中。行末的縱線符號 (|) 告知剖析程式預期的值為多行字串。例如:

spec:
  ssl: true
  rgw_frontend_port: 443
  rgw_frontend_ssl_certificate: |
   -----BEGIN CERTIFICATE-----
   MIIFmjCCA4KgAwIBAgIJAIZ2n35bmwXTMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV
   BAYTAkFVMQwwCgYDVQQIDANOU1cxHTAbBgNVBAoMFEV4YW1wbGUgUkdXIFNTTCBp
   [...]
   -----END CERTIFICATE-----
   rgw_frontend_ssl_key: |
   -----BEGIN PRIVATE KEY-----
   MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDLtFwg6LLl2j4Z
   BDV+iL4AO7VZ9KbmWIt37Ml2W6y2YeKX3Qwf+3eBz7TVHR1dm6iPpCpqpQjXUsT9
   [...]
   -----END PRIVATE KEY-----
提示
提示

您可以省略 rgw_frontend_ssl_certificate:rgw_frontend_ssl_key: 關鍵字,並將它們上傳到組態資料庫,而不是粘貼 SSL 證書和金鑰檔案的內容:

cephuser@adm > ceph config-key set rgw/cert/REALM_NAME/ZONE_NAME.crt \
 -i SSL_CERT_FILE
cephuser@adm > ceph config-key set rgw/cert/REALM_NAME/ZONE_NAME.key \
 -i SSL_KEY_FILE
8.3.4.1.1 將物件閘道設定為同時監聽連接埠 443 和 80

若要將物件閘道設定為同時監聽連接埠 443 (HTTPS) 和 80 (HTTP),請執行以下步驟:

注意
注意

該程序中的指令使用 default 領域和區域。

  1. 提供規格檔案以部署物件閘道。如需物件閘道規格的更多詳細資訊,請參閱第 8.3.4 節 「部署物件閘道」。使用以下指令:

    cephuser@adm > ceph orch apply -i SPEC_FILE
  2. 如果規格檔案中未提供 SSL 證書,請使用以下指令新增證書:

    cephuser@adm > ceph config-key set rgw/cert/default/default.crt -i certificate.pem
    cephuser@adm > ceph config-key set rgw/cert/default/default.key -i key.pem
  3. 變更 rgw_frontends 選項的預設值:

    cephuser@adm > ceph config set client.rgw.default.default rgw_frontends \
     "beast port=80 ssl_port=443"
  4. 移除 cephadm 建立的特定組態。執行以下指令以識別 rgw_frontends 選項是為哪個目標設定的:

    cephuser@adm > ceph config dump | grep rgw

    例如,目標是 client.rgw.default.default.node4.yiewdu。移除 rgw_frontends 目前的具體值:

    cephuser@adm > ceph config rm client.rgw.default.default.node4.yiewdu rgw_frontends
    提示
    提示

    您也可以不移除 rgw_frontends 的值,而是指定其值。例如:

    cephuser@adm > ceph config set client.rgw.default.default.node4.yiewdu \
     rgw_frontends "beast port=80 ssl_port=443"
  5. 重新啟動物件閘道:

    cephuser@adm > ceph orch restart rgw.default.default

8.3.4.2 使用子叢集部署

子叢集可協助您組織叢集中的節點,以隔離工作負載,讓彈性縮放更輕鬆。如果使用子叢集進行部署,請套用以下組態:

service_type: rgw
service_id: REALM_NAME.ZONE_NAME.SUBCLUSTER
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
spec:
  rgw_realm: RGW_REALM
  rgw_zone: RGW_ZONE
  subcluster: SUBCLUSTER

8.3.5 部署 iSCSI 閘道

cephadm 可部署 iSCSI 閘道,它是一種儲存區域網路 (SAN) 通訊協定,可讓用戶端 (稱為啟動器) 將 SCSI 指令傳送至遠端伺服器上的 SCSI 儲存裝置 (目標)。

套用以下組態進行部署。確定 trusted_ip_list 包含所有 iSCSI 閘道和 Ceph 管理員節點的 IP 位址 (請參閱下面的輸出範例)。

注意
注意

請確定在套用以下規格之前建立池。

service_type: iscsi
service_id: EXAMPLE_ISCSI
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
spec:
  pool: EXAMPLE_POOL
  api_user: EXAMPLE_USER
  api_password: EXAMPLE_PASSWORD
  trusted_ip_list: "IP_ADDRESS_1,IP_ADDRESS_2"
注意
注意

請確定針對 trusted_ip_list 列出的 IP 在逗號分隔後沒有空白。

8.3.5.1 安全 SSL 組態

若要在 Ceph Dashboard 和 iSCSI 目標 API 之間使用安全 SSL 連接,您需要一組有效的 SSL 證書和金鑰檔案。它們可以是 CA 核發的,也可以是自行簽署的 (參閱第 10.1.1 節 「建立自行簽署的證書」)。若要啟用 SSL,請在您的規格檔案中包含 api_secure: true 設定:

spec:
  api_secure: true

若要指定 SSL 證書和金鑰,可以將其內容直接貼至 YAML 規格檔案中。行末的縱線符號 (|) 告知剖析程式預期的值為多行字串。例如:

spec:
  pool: EXAMPLE_POOL
  api_user: EXAMPLE_USER
  api_password: EXAMPLE_PASSWORD
  trusted_ip_list: "IP_ADDRESS_1,IP_ADDRESS_2"
  api_secure: true
  ssl_cert: |
    -----BEGIN CERTIFICATE-----
    MIIDtTCCAp2gAwIBAgIYMC4xNzc1NDQxNjEzMzc2MjMyXzxvQ7EcMA0GCSqGSIb3
    DQEBCwUAMG0xCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARVdGFoMRcwFQYDVQQHDA5T
    [...]
    -----END CERTIFICATE-----
  ssl_key: |
    -----BEGIN PRIVATE KEY-----
    MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5jdYbjtNTAKW4
    /CwQr/7wOiLGzVxChn3mmCIF3DwbL/qvTFTX2d8bDf6LjGwLYloXHscRfxszX/4h
    [...]
    -----END PRIVATE KEY-----

8.3.6 部署 NFS Ganesha

重要
重要

NFS Ganesha 支援 NFS 4.1 和更新版本,不支援 NFS 3 版本。

cephadm 可使用預先定義的 RADOS 池和選擇性的名稱空間來部署 NFS Ganesha。若要部署 NFS Ganesha,請套用以下規格:

注意
注意

您需要有一個預先定義的 RADOS 池,否則 ceph orch apply 操作將失敗。如需建立池的詳細資訊,請參閱第 18.1 節 「建立池」

service_type: nfs
service_id: EXAMPLE_NFS
placement:
  hosts:
  - ses-min1
  - ses-min2
spec:
  pool: EXAMPLE_POOL
  namespace: EXAMPLE_NAMESPACE
  • EXAMPLE_NFS,包含用於識別 NFS 輸出項的任意字串。

  • EXAMPLE_POOL,包含將要儲存 NFS Ganesha RADOS 組態物件的池的名稱。

  • EXAMPLE_NAMESPACE (選擇性),包含所需的物件閘道 NFS 名稱空間 (例如,ganesha)。

8.3.7 部署 rbd-mirror

rbd-mirror 服務負責在兩個 Ceph 叢集之間同步 RADOS 區塊裝置影像 (如需更多詳細資料,請參閱第 20.4 節 「RBD 影像鏡像」)。若要部署 rbd-mirror,請使用以下規格:

service_type: rbd-mirror
service_id: EXAMPLE_RBD_MIRROR
placement:
  hosts:
  - ses-min3

8.3.8 部署監控堆疊

監控堆疊包含 Prometheus、Prometheus 輸出程式、Prometheus 警示管理員和 Grafana。Ceph Dashboard 使用這些元件來儲存並直觀呈現有關叢集使用率和效能的詳細度量。

提示
提示

如果您的部署需要監控堆疊服務的自訂或本地提供的容器影像,請參閱第 16.1 節 「設定自訂或本地影像」

若要部署監控堆疊,請執行以下步驟:

  1. 在 Ceph 管理員精靈中啟用 prometheus 模組。這將公開內部 Ceph 度量,以便 Prometheus 可以讀取這些資訊:

    cephuser@adm > ceph mgr module enable prometheus
    注意
    注意

    請確定在部署 Prometheus 之前執行此指令。如果部署前未執行該指令,則必須重新部署 Prometheus 才能更新 Prometheus 的組態:

    cephuser@adm > ceph orch redeploy prometheus
  2. 建立包含如下內容的規格檔案 (例如 monitoring.yaml):

    service_type: prometheus
    placement:
      hosts:
      - ses-min2
    ---
    service_type: node-exporter
    ---
    service_type: alertmanager
    placement:
      hosts:
      - ses-min4
    ---
    service_type: grafana
    placement:
      hosts:
      - ses-min3
  3. 透過執行以下指令套用監控服務:

    cephuser@adm > ceph orch apply -i monitoring.yaml

    部署監控服務可能需要一到兩分鐘。

重要
重要

Prometheus、Grafana 和 Ceph Dashboard 全都會自動設定為相互通訊,因此如上述般進行部署時,Ceph Dashboard 中將實現功能完整的 Grafana 整合。

但使用 RBD 影像進行監控時不適用於此規則。如需詳細資訊,請參閱第 16.5.4 節 「啟用 RBD 影像監控」