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
參數使清單僅顯示特定類型的服務。可接受的類型有 mon
、osd
、mgr
、mds
和 rgw
。
若要列出由 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 0cephuser@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 服務 (
mon
、mgr
、mds
、crash
、osd
或rbd-mirror
)、閘道 (nfs
或rgw
) 或部分監控堆疊 (alertmanager
、grafana
、node-exporter
或prometheus
)。service_id
服務的名稱。
mon
、mgr
、alertmanager
、grafana
、node-exporter
和prometheus
類型的規格不需要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
輸出格式。您可以從 json
、json-pretty
或 yaml
中進行選取。例如:
ceph orch ls --export --format json
8.3 部署 Ceph 服務 #
在執行基本叢集之後,您可以將 Ceph 服務部署到其他節點。
8.3.1 部署 Ceph 監控程式和 Ceph 管理員 #
Ceph 叢集的不同節點之間部署了三個或五個 MON。如果叢集中有五個或更多節點,則建議部署五個 MON。好的做法是,將 MGR 部署在與 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_NAME 和 ZONE_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_FILEcephuser@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
領域和區域。
提供規格檔案以部署物件閘道。如需物件閘道規格的更多詳細資訊,請參閱第 8.3.4 節 「部署物件閘道」。使用以下指令:
cephuser@adm >
ceph orch apply -i SPEC_FILE如果規格檔案中未提供 SSL 證書,請使用以下指令新增證書:
cephuser@adm >
ceph config-key set rgw/cert/default/default.crt -i certificate.pemcephuser@adm >
ceph config-key set rgw/cert/default/default.key -i key.pem變更
rgw_frontends
選項的預設值:cephuser@adm >
ceph config set client.rgw.default.default rgw_frontends \ "beast port=80 ssl_port=443"移除 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"重新啟動物件閘道:
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 節 「設定自訂或本地影像」。
若要部署監控堆疊,請執行以下步驟:
在 Ceph 管理員精靈中啟用
prometheus
模組。這將公開內部 Ceph 度量,以便 Prometheus 可以讀取這些資訊:cephuser@adm >
ceph mgr module enable prometheus注意請確定在部署 Prometheus 之前執行此指令。如果部署前未執行該指令,則必須重新部署 Prometheus 才能更新 Prometheus 的組態:
cephuser@adm >
ceph orch redeploy prometheus建立包含如下內容的規格檔案 (例如
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
透過執行以下指令套用監控服務:
cephuser@adm >
ceph orch apply -i monitoring.yaml部署監控服務可能需要一到兩分鐘。
Prometheus、Grafana 和 Ceph Dashboard 全都會自動設定為相互通訊,因此如上述般進行部署時,Ceph Dashboard 中將實現功能完整的 Grafana 整合。
但使用 RBD 影像進行監控時不適用於此規則。如需詳細資訊,請參閱第 16.5.4 節 「啟用 RBD 影像監控」。