實作 HA for CephFS/NFS 服務
您可以使用 --ingress
旗標並指定虛擬 IP 位址,以部署具有高可用性 (HA) 前端系統、虛擬 IP 及負載平衡器的 NFS 。 這會部署 keepalived
與 haproxy
的組合,並為 NFS 服務提供高可用性 NFS 前端系統。
使用 --ingress
旗標建立叢集時,會額外部署入口服務,以提供 NFS 伺服器的負載平衡及高可用性。 虛擬 IP 是用來提供所有 NFS 用戶端可用來裝載的已知穩定 NFS 端點。 Ceph 會處理將虛擬 IP 上的 NFS 資料流量重新導向至適當後端 NFS 伺服器的詳細資料,並在失敗時重新部署 NFS 伺服器。
部署現有服務的入口服務可提供:
可用來存取 NFS 伺服器的穩定虛擬 IP。
跨多個 NFS 閘道的負載配送。
主機故障時主機之間的失效接手。
ingress
服務時,後端 NFS-ganesha 伺服器會看到 haproxy 的 IP 位址,而不是用戶端的 IP 位址。 因此,如果您根據 IP 位址限制用戶端存取,則 NFS 匯出的存取限制將無法如預期般運作。必要條件
執行中 IBM Storage Ceph 叢集。
主機會新增至叢集。
已部署所有管理程式、監視器及 OSD 常駐程式。
確定已啟用 NFS 模組。
登入 Cephadm Shell:
範例
[root@host01 ~]# cephadm shell
使用
--ingress
旗標建立 NFS 叢集:語法
ceph nfs cluster create CLUSTER_ID [PLACEMENT] [--port PORT_NUMBER] [--ingress --virtual-ip IP_ADDRESS/CIDR_PREFIX]
將 CLUSTER_ID 取代為用於命名 NFS Ganesha 叢集的唯一字串。
將 PLACEMENT 取代為要部署的 NFS 伺服器數目,以及您要在其上部署 NFS Ganesha 常駐程式儲存器的主機。
使用
--port
PORT_NUMBER 旗標,在預設埠 2049 以外的埠上部署 NFS 。--ingress
旗標與--virtual-ip
旗標結合,會使用高可用性前端系統 (虛擬 IP 及負載平衡器) 來部署 NFS 。將
--virtual-ip
IP_ADDRESS 取代為 IP 位址,以提供一個已知且穩定的 NFS 端點,所有用戶端都可以使用該端點來裝載 NFS 匯出。--virtual-ip
必須包含 CIDR 字首長度。 通常會在第一個識別的網路介面上配置虛擬 IP ,該介面在相同子網路中具有現有 IP。附註: 您配置給 NFS 服務的主機數目必須大於您要求部署的作用中 NFS 伺服器數目 (由placement: count
參數指定)。 在下列範例中,要求一個作用中 NFS 伺服器,並配置兩個主機。範例
[ceph: root@host01 /]# ceph nfs cluster create mycephnfs "1 host02 host03" --ingress --virtual-ip 10.10.128.75/22
附註: NFS 常駐程式及 Ingress 服務的部署是非同步的,指令可能會在服務完全啟動之前傳回。
檢查服務是否已順利啟動:
語法
ceph orch ls --service_name=nfs.CLUSTER_NAME ceph orch ls --service_name=ingress.nfs.CLUSTER_NAME
範例
[ceph: root@host01 /]# ceph orch ls --service_name=nfs.mycephnfs NAME PORTS RUNNING REFRESHED AGE PLACEMENT nfs.mycephnfs ?:12049 1/2 0s ago 20s host02;host03 [ceph: root@host01 /]# ceph orch ls --service_name=ingress.nfs.mycephnfs NAME PORTS RUNNING REFRESHED AGE PLACEMENT ingress.nfs.mycephnfs 10.10.128.75:2049,9049 4/4 46s ago 73s count:2
驗證
檢視 IP 端點、個別 NFS 常駐程式的 IP ,以及
ingress
服務的虛擬 IP。語法
ceph nfs cluster info CLUSTER_NAME
範例
[ceph: root@host01 /]# ceph nfs cluster info mycephnfs { "mycephnfs": { "virtual_ip": "10.10.128.75", "backend": [ { "hostname": "host02", "ip": "10.10.128.69", "port": 12049 }, { "hostname": "host03", "ip": "10.10.128.70", "port": 12049 } ], "port": 2049, "monitor_port": 9049 } }
列出主機及處理程序。
範例
[ceph: root@host01 /]# ceph orch ps | grep nfs haproxy.nfs.cephnfs.host01.rftylv host01 *:2049,9000 running (11m) 10m ago 11m 23.2M - 2.2.19-7ea3822 5e6a41d77b38 f8cc61dc827e haproxy.nfs.cephnfs.host02.zhtded host02 *:2049,9000 running (11m) 53s ago 11m 21.3M - 2.2.19-7ea3822 5e6a41d77b38 4cad324e0e23 keepalived.nfs.cephnfs.host01.zktmsk host01 running (11m) 10m ago 11m 2349k - 2.1.5 18fa163ab18f 66bf39784993 keepalived.nfs.cephnfs.host02.vyycvp host02 running (11m) 53s ago 11m 2349k - 2.1.5 18fa163ab18f 1ecc95a568b4 nfs.cephnfs.0.0.host02.fescmw host02 *:12049 running (14m) 3m ago 14m 76.9M - 3.5 cef6e7959b0a bb0e4ee9484e nfs.cephnfs.1.0.host03.avaddf host03 *:12049 running (14m) 3m ago 14m 74.3M - 3.5 cef6e7959b0a ea02c0c50749