7 使用 ceph-salt
部署開機叢集 #
本節將引導您完成部署基本 Ceph 叢集的程序。請仔細閱讀下面的小節,並依給定的順序執行所包含的指令。
7.1 安裝 ceph-salt
#
ceph-salt
提供了用於部署由 cephadm 管理的 Ceph 叢集的工具。ceph-salt
使用 Salt 基礎架構來執行作業系統管理 (例如,軟體更新或時間同步),並為 Salt Minion 定義角色。
在 Salt Master 上安裝 ceph-salt 套件:
root@master #
zypper install ceph-salt
上面的指令將 ceph-salt-formula 安裝為相依項,它透過在 /etc/salt/master.d
目錄中插入額外的檔案修改了 Salt Master 組態。若要套用變更,請重新啟動 salt-master.service
並同步 Salt 模組:
root@master #
systemctl restart salt-master.serviceroot@master #
salt \* saltutil.sync_all
7.2 設定叢集內容 #
使用 ceph-salt config
指令可設定叢集的基本內容。
/etc/ceph/ceph.conf
檔案由 cephadm 管理,使用者不得編輯該檔案。應使用新的 ceph config
指令設定 Ceph 組態參數。如需詳細資訊,請參閱第 28.2 節 「組態資料庫」。
7.2.1 使用 ceph-salt
外圍程序 #
如果在不附帶任何路徑或子指令的情況下執行 config
,您將進入互動 ceph-salt
ceph-salt 外圍程序。如果您需要在一個批次中設定多個內容,並且不想輸入完整的指令語法,使用外圍程序會非常方便。
root@master #
ceph-salt config/>
ls o- / ............................................................... [...] o- ceph_cluster .................................................. [...] | o- minions .............................................. [no minions] | o- roles ....................................................... [...] | o- admin .............................................. [no minions] | o- bootstrap ........................................... [no minion] | o- cephadm ............................................ [no minions] | o- tuned ..................................................... [...] | o- latency .......................................... [no minions] | o- throughput ....................................... [no minions] o- cephadm_bootstrap ............................................. [...] | o- advanced .................................................... [...] | o- ceph_conf ................................................... [...] | o- ceph_image_path .................................. [ no image path] | o- dashboard ................................................... [...] | | o- force_password_update ................................. [enabled] | | o- password ................................................ [admin] | | o- ssl_certificate ....................................... [not set] | | o- ssl_certificate_key ................................... [not set] | | o- username ................................................ [admin] | o- mon_ip .................................................. [not set] o- containers .................................................... [...] | o- registries_conf ......................................... [enabled] | | o- registries .............................................. [empty] | o- registry_auth ............................................... [...] | o- password .............................................. [not set] | o- registry .............................................. [not set] | o- username .............................................. [not set] o- ssh ............................................... [no key pair set] | o- private_key .................................. [no private key set] | o- public_key .................................... [no public key set] o- time_server ........................... [enabled, no server host set] o- external_servers .......................................... [empty] o- servers ................................................... [empty] o- subnet .................................................. [not set]
從 ceph-salt
的 ls
指令輸出中您會看到,叢集組態以樹狀結構組織。若要在 ceph-salt
外圍程序中設定叢集的特定內容,可使用以下兩個選項:
從目前位置執行指令,並輸入內容的絕對路徑做為第一個引數:
/>
/cephadm_bootstrap/dashboard ls o- dashboard ....................................................... [...] o- force_password_update ..................................... [enabled] o- password .................................................... [admin] o- ssl_certificate ........................................... [not set] o- ssl_certificate_key ....................................... [not set] o- username .................................................... [admin]/> /cephadm_bootstrap/dashboard/username set ceph-admin
Value set.變更為需要設定的內容的路徑,並執行指令:
/>
cd /cephadm_bootstrap/dashboard//ceph_cluster/minions>
ls o- dashboard ....................................................... [...] o- force_password_update ..................................... [enabled] o- password .................................................... [admin] o- ssl_certificate ........................................... [not set] o- ssl_certificate_key ....................................... [not set] o- username ................................................[ceph-admin]
在 ceph-salt
外圍程序中,您可以使用類似於一般 Linux 外圍程序 (Bash) 自動完成的自動完成功能。它可以完成組態路徑、子指令或 Salt Minion 名稱。自動完成組態路徑時,可使用以下兩個選項:
若要讓外圍程序完成您目前位置的相對路徑,請按 TAB 鍵 →| 兩次。
若要讓外圍程序完成絕對路徑,請輸入 / 並按 TAB 鍵 →| 兩次。
如果從 外圍程序輸入
cdceph-salt
而不附帶任何路徑,則該指令將列印叢集組態的樹狀結構,其中目前路徑對應的行處於使用中狀態。您可以使用向上和向下游標鍵在各行之間導覽。按一下 Enter 進行確認後,組態路徑將變更為最後一個使用中路徑。
為了保持文件的一致性,我們將使用單一指令語法,而不輸入 ceph-salt
外圍程序。例如,您可以使用以下指令列出叢集組態樹:
root@master #
ceph-salt config ls
7.2.2 新增 Salt Minion #
將我們在第 6 章 「部署 Salt」中部署並接受的所有或部分 Salt Minion 包含到 Ceph 叢集組態中。您可以透過其全名指定 Salt Minion,也可以使用 glob 運算式「*」和「?」一次包含多個 Salt Minion。在 /ceph_cluster/minions
路徑下使用 add
子指令。以下指令包含所有已接受的 Salt Minion:
root@master #
ceph-salt config /ceph_cluster/minions add '*'
確認是否新增了指定的 Salt Minion:
root@master #
ceph-salt config /ceph_cluster/minions ls
o- minions ................................................. [Minions: 5]
o- ses-master.example.com .................................. [no roles]
o- ses-min1.example.com .................................... [no roles]
o- ses-min2.example.com .................................... [no roles]
o- ses-min3.example.com .................................... [no roles]
o- ses-min4.example.com .................................... [no roles]
7.2.3 指定由 cephadm 管理的 Salt Minion #
指定哪些節點將屬於 Ceph 叢集並由 cephadm 管理。包含將執行 Ceph 服務的所有節點以及管理節點:
root@master #
ceph-salt config /ceph_cluster/roles/cephadm add '*'
7.2.4 指定管理節點 #
管理節點是安裝 ceph.conf
組態檔案和 Ceph 管理金鑰圈的節點。您通常會在管理節點上執行與 Ceph 相關的指令。
在所有或大多數主機都屬於 SUSE Enterprise Storage 的同質環境中,建議您將管理節點與 Salt Master 置於同一主機。
而對於一個 Salt 基礎架構代管多個叢集 (例如 SUSE Enterprise Storage 和 SUSE Manager) 的異質環境,請勿將管理節點與 Salt Master 置於同一主機。
若要指定管理節點,請執行以下指令:
root@master #
ceph-salt config /ceph_cluster/roles/admin add ses-master.example.com 1 minion added.root@master #
ceph-salt config /ceph_cluster/roles/admin ls o- admin ................................................... [Minions: 1] o- ses-master.example.com ...................... [Other roles: cephadm]
ceph.conf
和管理金鑰圈如果是部署所需,您可以在多個節點上安裝 Ceph 組態檔案和管理金鑰圈。出於安全原因,請避免將其安裝在叢集的所有節點上。
7.2.5 指定第一個 MON/MGR 節點 #
您需要指定將叢集開機的叢集 Salt Minion。此 Minion 將成為第一個執行 Ceph 監控程式和 Ceph 管理員服務的 Minion。
root@master #
ceph-salt config /ceph_cluster/roles/bootstrap set ses-min1.example.com Value set.root@master #
ceph-salt config /ceph_cluster/roles/bootstrap ls o- bootstrap ..................................... [ses-min1.example.com]
此外,您還需要在公用網路上指定開機 MON 的 IP 位址,以確定 public_network
參數設定正確,例如:
root@master #
ceph-salt config /cephadm_bootstrap/mon_ip set 192.168.10.20
7.2.6 指定調整的設定檔 #
您需要指定叢集的哪些 Minion 具有主動調整的設定檔。為此,請使用以下指令明確新增這些角色:
一個 Minion 不能同時擁有 latency
和 throughput
角色。
root@master #
ceph-salt config /ceph_cluster/roles/tuned/latency add ses-min1.example.com Adding ses-min1.example.com... 1 minion added.root@master #
ceph-salt config /ceph_cluster/roles/tuned/throughput add ses-min2.example.com Adding ses-min2.example.com... 1 minion added.
7.2.7 產生 SSH 金鑰組 #
cephadm 使用 SSH 通訊協定與叢集節點通訊。將自動建立名為 cephadm
的使用者帳戶並用於 SSH 通訊。
您需要產生 SSH 金鑰組的私人和公用部分:
root@master #
ceph-salt config /ssh generate Key pair generated.root@master #
ceph-salt config /ssh ls o- ssh .................................................. [Key Pair set] o- private_key ..... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83] o- public_key ...... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
7.2.8 設定時間伺服器 #
所有叢集節點都需要與可靠的時間來源進行時間同步。有以下幾種方案可以實現時間同步:
如果所有叢集節點都已設定為使用所選 NTP 服務同步其時間,請完全停用時間伺服器處理:
root@master #
ceph-salt config /time_server disable如果您的站台已有單一時間來源,請指定時間來源的主機名稱:
root@master #
ceph-salt config /time_server/servers add time-server.example.com另外,
ceph-salt
可以設定一個 Salt Minion 來充當叢集其餘 Minion 的時間伺服器。有時,它被稱為「內部時間伺服器」。在此方案中,ceph-salt
將設定內部時間伺服器 (應為其中一個 Salt Minion) 以使其時間與外部時間伺服器 (例如pool.ntp.org
) 同步,並將所有其他 Minion 設定為從內部時間伺服器獲取時間。可透過以下指令來實現:root@master #
ceph-salt config /time_server/servers add ses-master.example.comroot@master #
ceph-salt config /time_server/external_servers add pool.ntp.org/time_server/subnet
選項指定允許 NTP 用戶端透過其存取 NTP 伺服器的子網路。當您指定/time_server/servers
時,會自動設定該選項。如果需要變更該選項或手動指定,請執行:root@master #
ceph-salt config /time_server/subnet set 10.20.6.0/24
檢查時間伺服器設定:
root@master #
ceph-salt config /time_server ls
o- time_server ................................................ [enabled]
o- external_servers ............................................... [1]
| o- pool.ntp.org ............................................... [...]
o- servers ........................................................ [1]
| o- ses-master.example.com ..................................... [...]
o- subnet .............................................. [10.20.6.0/24]
如需設定時間同步的詳細資訊,請參閱 https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-ntp.html#sec-ntp-yast。
7.2.9 設定 Ceph Dashboard 登入身分證明 #
部署基本叢集後便可使用 Ceph Dashboard。若要存取 Ceph Dashboard,您需要設定有效的使用者名稱和密碼,例如:
root@master #
ceph-salt config /cephadm_bootstrap/dashboard/username set adminroot@master #
ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
依預設,系統將強制第一位儀表板使用者在首次登入儀表板時變更其密碼。若要停用此功能,請執行以下指令:
root@master #
ceph-salt config /cephadm_bootstrap/dashboard/force_password_update disable
7.2.10 使用容器登錄 #
Ceph 叢集需要能夠存取容器登錄,以便能下載和部署容器化 Ceph 服務。可以使用以下兩種方式來存取登錄:
如果您的叢集可以 (直接或透過代理) 存取
registry.suse.com
上的預設登錄,您可以將ceph-salt
直接指向此 URL,而無需建立本地登錄。繼續執行第 7.2.10.2 節 「設定容器影像的路徑」中的步驟。如果叢集無法存取預設登錄 (例如,若為實體隔離部署),您需要設定本地容器登錄。建立並設定本地登錄後,需要將
ceph-salt
指向它。
7.2.10.1 建立並設定本地登錄 (選擇性) #
建立本地登錄的方法非常多。本節中的說明是有關建立安全和不安全登錄的範例。如需執行容器影像登錄的一般資訊,請參閱 https://documentation.suse.com/sles/15-SP3/single-html/SLES-container/#sec-docker-registry-installation。
在叢集中的所有節點都可存取的機器上部署登錄。建議在管理節點上部署。登錄預設會監聽連接埠 5000。
在登錄節點上,使用以下指令確定連接埠未被佔用:
ss -tulpn | grep :5000
如果其他程序 (例如 iscsi-tcmu
) 已在監聽連接埠 5000,則確定可用於對應至登錄容器中的連接埠 5000 的另一個未被佔用的連接埠。
確認 Containers Module 延伸已啟用。
>
SUSEConnect --list-extensions | grep -A2 "Containers Module" Containers Module 15 SP3 x86_64 (Activated)確認已安裝以下套件:apache2-utils (如果啟用了安全登錄)、cni、cni-plugins、podman、podman-cni-config 和 skopeo。
收集以下資訊:
登錄主機的完整網域名稱 (
REG_HOST_FQDN
)。用於對應至登錄容器連接埠 5000 的可用連接埠號碼 (
REG_HOST_PORT
)。登錄是否安全 (
insecure=[true|false]
)。
若要啟動不安全的登錄 (未經過 SSL 加密),請執行以下步驟:
為不安全的登錄設定
ceph-salt
:cephuser@adm >
ceph-salt config containers/registries_conf enablecephuser@adm >
ceph-salt config containers/registries_conf/registries \ add prefix=REG_HOST_FQDN
insecure=true \ location=REG_HOST_PORT
:5000啟動不安全的登錄,具體做法是建立必要的目錄 (例如
/var/lib/registry
) 並使用podman
指令啟動登錄:#
mkdir -p /var/lib/registry#
podman run --privileged -d --name registry \ -pREG_HOST_PORT
:5000 -v /var/lib/registry:/var/lib/registry \ --restart=always registry:2若要使登錄在重新開機後啟動,請為其建立並啟用
systemd
單位檔案:>
sudo
podman generate systemd --files --name registry>
sudo
mv container-registry.service /etc/systemd/system/>
sudo
systemctl enable container-registry.service
若要啟動安全登錄,請執行以下步驟:
建立必要目錄:
#
mkdir -p /var/lib/registry/{auth,certs}產生 SSL 證書:
#
openssl req -newkey rsa:4096 -nodes -sha256 \ -keyout /var/lib/registry/certs/domain.key -x509 -days 365 \ -out /var/lib/registry/certs/domain.crt注意將
Cn=[value]
的值設定為主機的完整網域名稱 ([REG_HOST_FQDN
])。將該證書複製到叢集的所有節點上並重新整理證書快取:
#
salt-cp '*' /var/lib/registry/certs/domain.crt \ /etc/pki/trust/anchors/#
salt '*' cmd.shell "update-ca-certificates"產生用於向登錄進行驗證的使用者名稱和密碼組合:
#
htpasswd2 -bBc /var/lib/registry/auth/htpasswd \REG_USERNAME
REG_PASSWORD
啟動安全登錄。請使用
REGISTRY_STORAGE_DELETE_ENABLED=true
旗標,以便之後能使用skopeo delete
指令刪除影像。podman run --name myregistry -p
REG_HOST_PORT
:5000 \ -v /var/lib/registry:/var/lib/registry \ -v /var/lib/registry/auth:/auth:z \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -v /var/lib/registry/certs:/certs:z \ -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt" \ -e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key" \ -e REGISTRY_STORAGE_DELETE_ENABLED=true \ -e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true -d registry:2測試對登錄的安全存取:
>
curl https://REG_HOST_FQDN
:REG_HOST_PORT
/v2/_catalog \ -uREG_USERNAME
:REG_PASSWORD
建立本地登錄後,需要將
registry.suse.com
上官方 SUSE 登錄中的容器影像同步到本地登錄。可以使用 skopeo 套件中的skopeo sync
指令來實現此目的。如需詳細資訊,請參閱手冊頁 (man 1 skopeo-sync
)。請考量以下幾個範例:範例 7.1︰ 檢視清單檔案 #skopeo inspect docker://registry.suse.com/ses/7.1/ceph/ceph | jq .RepoTags skopeo inspect docker://registry.suse.com/ses/7.1/ceph/grafana | jq .RepoTags skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-server:2.32.1 | jq .RepoTags skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-node-exporter:1.1.2 | jq .RepoTags skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-alertmanager:0.21.0 | jq .RepoTags
範例 7.2︰ 同步到目錄 #同步所有 Ceph 影像:
skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph /root/images/
僅同步最新的影像:
skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph:latest /root/images/
範例 7.3︰ 同步 Grafana 影像: #skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana /root/images/
僅同步最新的 Grafana 影像:
skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana:latest /root/images/
範例 7.4︰ 同步最新的 Prometheus 影像 #skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-server:2.32.1 /root/images/ skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-node-exporter:1.1.2 /root/images/ skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-alertmanager:0.21.0 /root/images/
設定本地登錄的 URL:
cephuser@adm >
ceph-salt config /containers/registry_auth/registry set REG_HOST_URL設定使用者名稱和密碼以存取本地登錄:
cephuser@adm >
ceph-salt config /containers/registry_auth/username set REG_USERNAMEcephuser@adm >
ceph-salt config /containers/registry_auth/password set REG_PASSWORD
若要避免在出現新的更新容器時重新同步本地登錄,您可以設定登錄快取。
7.2.10.2 設定容器影像的路徑 #
本節可協助您設定開機叢集 (部署的第一個 Ceph 監控程式和 Ceph 管理員對) 的容器影像的路徑。該路徑不適用於附加服務 (如監控堆疊) 的容器影像。
如果您需要使用代理來與容器登錄伺服器通訊,請在所有叢集節點上執行以下組態步驟:
複製容器的組態檔案:
>
sudo
cp /usr/share/containers/containers.conf /etc/containers/containers.conf編輯新複製的檔案,將
http_proxy
設定新增至檔案的[engine]
區段,例如:>
cat /etc/containers/containers.conf [engine] http_proxy=proxy.example.com [...]
cephadm 需要知道容器影像的有效 URI 路徑。執行以下指令以驗證預設設定
root@master #
ceph-salt config /cephadm_bootstrap/ceph_image_path ls
如果您不需要備用或本地登錄,請指定預設的 SUSE 容器登錄:
root@master #
ceph-salt config /cephadm_bootstrap/ceph_image_path set registry.suse.com/ses/7.1/ceph/ceph
如果您的部署需要特定路徑 (例如本地登錄的路徑),請依如下所示進行設定:
root@master #
ceph-salt config /cephadm_bootstrap/ceph_image_path set LOCAL_REGISTRY_PATH
7.2.11 啟用資料傳輸中加密 (msgr2) #
Messenger v2 通訊協定 (MSGR2) 是 Ceph 的線上傳輸通訊協定。它提供了一種可對正在透過網路傳輸的所有資料進行加密的安全模式,封裝了驗證封包內容,並支援未來整合新的驗證模式 (例如 Kerberos)。
Linux 核心 Ceph 用戶端 (例如 CephFS 和 RADOS 區塊裝置) 目前不支援 msgr2。
Ceph 精靈可以結合到多個連接埠,以便讓舊 Ceph 用戶端和支援 v2 的新用戶端能夠連接至同一叢集。依預設,針對新的 v2 通訊協定,MON 現在會結合到 IANA 指定的新連接埠 3300 (CE4h 或 0xCE4),而針對舊版 v1 通訊協定,則會結合到舊的預設連接埠 6789。
v2 通訊協定 (MSGR2) 支援以下兩種連接模式:
- crc 模式
建立連接時進行強初始驗證和 CRC32C 完整性檢查。
- secure 模式
建立連接時進行強初始驗證,並對所有驗證後流量進行完全加密,包括加密完整性檢查。
對於大多數連接,有一些選項可以控制使用哪種模式:
- ms_cluster_mode
用於 Ceph 精靈之間的叢集內通訊的連接模式 (或允許的模式)。如果列出了多種模式,則偏好最先列出的模式。
- ms_service_mode
連接至叢集時允許用戶端使用的模式清單。
- ms_client_mode
與 Ceph 叢集通訊時,供用戶端使用 (或允許) 的連接模式清單,依偏好設定排序。
有一組專用於監控程式的平行選項集,可讓管理員設定與監控程式通訊的不同 (通常更安全) 要求。
- ms_mon_cluster_mode
在監控程式之間使用的連接模式 (或允許的模式)。
- ms_mon_service_mode
連接至監控程式時,供用戶端或其他 Ceph 精靈使用的允許模式清單。
- ms_mon_client_mode
連接至監控程式時,供用戶端或非監控程式精靈使用的連接模式的清單,依偏好設定排序。
若要在部署期間啟用 MSGR2 加密模式,您需要在執行 ceph-salt
apply 之前向
ceph-salt 組態新增一些組態選項。
若要使用 secure
模式,請執行以下指令。
向 組態工具中的
ceph_confceph-salt
新增全域區段。
root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf add global
設定下列選項:
root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_cluster_mode "secure crc"root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode "secure crc"root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode "secure crc"
確定 secure
先於 crc
。
若要強制使用 secure
模式,請執行以下指令:
root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_cluster_mode secureroot@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode secureroot@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode secure
如果您要變更上述任何設定,請在監控程式組態儲存中設定組態變更。可使用 ceph config set
指令實現。
root@master #
ceph config set global CONNECTION_OPTION CONNECTION_MODE [--force]
例如:
root@master #
ceph config set global ms_cluster_mode "secure crc"
如果要檢查目前值 (包括預設值),請執行以下指令:
root@master #
ceph config get CEPH_COMPONENT CONNECTION_OPTION
例如,若要獲取 OSD 的 ms_cluster_mode
,請執行:
root@master #
ceph config get osd ms_cluster_mode
7.2.12 設定叢集網路 #
(選擇性) 如果執行的是獨立的叢集網路,則可能需要設定叢集網路 IP 位址並後接斜線符號及子網路遮罩部分,例如 192.168.10.22/24
。
執行以下指令可啟用 cluster_network
:
root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf add globalroot@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set cluster_network NETWORK_ADDR
7.2.13 確認叢集組態 #
最低叢集組態已完成。請檢查是否存在明顯錯誤:
root@master #
ceph-salt config ls
o- / ............................................................... [...]
o- ceph_cluster .................................................. [...]
| o- minions .............................................. [Minions: 5]
| | o- ses-master.example.com .................................. [admin]
| | o- ses-min1.example.com ......................... [bootstrap, admin]
| | o- ses-min2.example.com ................................. [no roles]
| | o- ses-min3.example.com ................................. [no roles]
| | o- ses-min4.example.com ................................. [no roles]
| o- roles ....................................................... [...]
| o- admin .............................................. [Minions: 2]
| | o- ses-master.example.com ....................... [no other roles]
| | o- ses-min1.example.com ................. [other roles: bootstrap]
| o- bootstrap ................................ [ses-min1.example.com]
| o- cephadm ............................................ [Minions: 5]
| o- tuned ..................................................... [...]
| o- latency .......................................... [no minions]
| o- throughput ....................................... [no minions]
o- cephadm_bootstrap ............................................. [...]
| o- advanced .................................................... [...]
| o- ceph_conf ................................................... [...]
| o- ceph_image_path .............. [registry.suse.com/ses/7.1/ceph/ceph]
| o- dashboard ................................................... [...]
| o- force_password_update ................................. [enabled]
| o- password ................................... [randomly generated]
| o- username ................................................ [admin]
| o- mon_ip ............................................ [192.168.10.20]
o- containers .................................................... [...]
| o- registries_conf ......................................... [enabled]
| | o- registries .............................................. [empty]
| o- registry_auth ............................................... [...]
| o- password .............................................. [not set]
| o- registry .............................................. [not set]
| o- username .............................................. [not set]
o- ssh .................................................. [Key Pair set]
| o- private_key ..... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
| o- public_key ...... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
o- time_server ............................................... [enabled]
o- external_servers .............................................. [1]
| o- 0.pt.pool.ntp.org ......................................... [...]
o- servers ....................................................... [1]
| o- ses-master.example.com .................................... [...]
o- subnet ............................................. [10.20.6.0/24]
您可以透過執行以下指令檢查叢集的組態是否有效:
root@master #
ceph-salt status
cluster: 5 minions, 0 hosts managed by cephadm
config: OK
7.2.14 輸出叢集組態 #
在設定了基本叢集並且確認其組態有效之後,最好將其組態輸出至檔案中:
root@master #
ceph-salt export > cluster.json
ceph-salt export
的輸出中包含 SSH 私密金鑰。如果您擔心安全問題,請不要在未採取適當預防措施的情況下執行此指令。
如果叢集組態損毀並需要復原到備份狀態,請執行:
root@master #
ceph-salt import cluster.json
7.3 更新節點並將最小叢集開機 #
部署叢集之前,請更新所有節點上的所有軟體套件:
root@master #
ceph-salt update
如果節點在更新期間報告 Reboot is needed
,則表示重要的作業系統套件 (例如核心) 已更新至更新版本,您需要將節點重新開機才能套用變更。
若要將所有需要重新開機的節點重新開機,請附加 --reboot
選項
root@master #
ceph-salt update --reboot
或者在單獨的步驟中將這些節點重新開機:
root@master #
ceph-salt reboot
永遠不會透過 ceph-salt update --reboot
或 ceph-salt reboot
指令將 Salt Master 重新開機。如果 Salt Master 需要重新開機,您需要手動進行重新開機。
更新節點後,請將最小叢集開機:
root@master #
ceph-salt apply
開機完成後,叢集將擁有一個 Ceph 監控程式和一個 Ceph 管理員。
以上指令將開啟一個互動使用者介面,其中會顯示每個 Minion 的目前進度。
如果您需要從程序檔套用組態,還有一種非互動的部署模式。此模式在從遠端機器部署叢集時也很有用,因為透過網路不斷更新螢幕上的進度資訊可能會對使用者造成干擾:
root@master #
ceph-salt apply --non-interactive
7.4 檢視最後的步驟 #
在 ceph-salt apply
指令完成後,您便應該會擁有一個 Ceph 監控程式和一個 Ceph 管理員。您應該能夠在任何以 root
身分或使用 sudo
的 cephadm
使用者身分被授予 admin
角色的 Minion 上成功執行 ceph status
指令。
後續步驟包括使用 cephadm 部署額外的 Ceph 監控程式、Ceph 管理員、OSD、監控堆疊和閘道。
繼續之前,請檢視新叢集的網路設定。此時,已依據在 ceph-salt
組態中針對 /cephadm_bootstrap/mon_ip
輸入的值填入了 public_network
設定。不過,此設定僅適用於 Ceph 監控程式。您可以使用以下指令檢視此設定:
root@master #
ceph config get mon public_network
這是 Ceph 正常工作所需的最低設定,但還是建議您將此 public_network
設定為 global
,這表示它將套用於所有類型的 Ceph 精靈,而不僅套用於 MON:
root@master #
ceph config set global public_network "$(ceph config get mon public_network)"
此步驟不是必需的。但如果不使用此設定,Ceph OSD 和其他精靈 (Ceph 監控程式除外) 將監聽所有位址。
如果您希望在各 OSD 之間使用完全獨立的網路進行通訊,請執行以下指令:
root@master #
ceph config set global cluster_network "cluster_network_in_cidr_notation"
執行此指令將確保您部署中所建立的 OSD 從一開始就使用預期的叢集網路。
如果您的叢集設定為具有密集節點 (每個主機有超過 62 個 OSD),請確保為 Ceph OSD 指定足夠的連接埠。預設範圍 (6800-7300) 目前允許每個主機有不超過 62 個 OSD。對於具有密集節點的叢集,請將設定 ms_bind_port_max
調整到適當的值。每個 OSD 將使用 8 個額外的連接埠。例如,如果一部主機設定為執行 96 個 OSD,則需要 768 個連接埠。透過執行以下指令,應將 ms_bind_port_max
至少設定為 7568:
root@master #
ceph config set osd.* ms_bind_port_max 7568
您需要相應地調整防火牆設定才能使其正常工作。如需詳細資訊,請參閱Section 13.7, “Firewall settings for Ceph”。
7.5 停用不安全的用戶端 #
從 Pacific v15.2.11 起,引入了新的狀況警告來告知您允許了不安全的用戶端加入叢集。此警告預設處於開啟狀態。Ceph Dashboard 會表明叢集處於 HEALTH_WARN
狀態,在指令行上驗證叢集狀態時會告知您如下資訊:
cephuser@adm >
ceph status
cluster:
id: 3fe8b35a-689f-4970-819d-0e6b11f6707c
health: HEALTH_WARN
mons are allowing insecure global_id reclaim
[...]
此警告表示 Ceph 監控程式仍在允許未修補的舊版用戶端連接叢集。這樣可確保在升級叢集時,現有用戶端仍可連接叢集,但會警告您存在需要解決的問題。當叢集和所有用戶端都升級至最新版本的 Ceph 後,執行以下指令停用未修補的用戶端:
cephuser@adm >
ceph config set mon auth_allow_insecure_global_id_reclaim false