11.7. 使用规格文件为 CephFS/NFS 部署 HA
您可以首先部署 NFS 服务,然后部署到相同 NFS 服务的 ingress
来使用规格文件部署 HA。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 部署所有管理器、监控和 OSD 守护进程。
- 确保启用了 NFS 模块。
流程
登录到 Cephadm shell:
示例
[root@host01 ~]# cephadm shell
确定启用了 NFS 模块:
示例
[ceph: root@host01 /]# ceph mgr module ls | more
退出 Cephadm shell 并创建
nfs.yaml
文件:示例
[root@host01 ~]# touch nfs.yaml
编辑
nfs.yaml
文件,使其包含以下详情:语法
service_type: nfs service_id: SERVICE_ID placement: hosts: - HOST_NAME_1 - HOST_NAME_2 count: COUNT spec: port: PORT_NUMBER
注意为 NFS 服务分配的主机数量必须大于您要部署的活跃 NFS 服务器数量,由
placement: count
参数指定。示例
service_type: nfs service_id: cephfsnfs placement: hosts: - host02 - host03 count: 1 spec: port: 12345
在本例中,服务器在非默认端口
12345
中运行,而不是默认端口2049
,在 host02 和 host03 上运行。将 YAML 文件挂载到容器中的一个目录下:
示例
[root@host01 ~]# cephadm shell --mount nfs.yaml:/var/lib/ceph/nfs.yaml
登录 Cephadm shell 并导航至该目录:
示例
[ceph: root@host01 /]# cd /var/lib/ceph/
使用服务规格部署 NFS 服务:
语法
ceph orch apply -i FILE_NAME.yaml
示例
[ceph: root@host01 ceph]# ceph orch apply -i nfs.yaml
注意NFS 服务部署是异步的,在服务完全启动前可能会返回该命令。
检查 NFS 服务是否已成功启动:
语法
ceph orch ls --service_name=nfs.CLUSTER_ID
示例
[ceph: root@host01 /]# ceph orch ls --service_name=nfs.cephfsnfs NAME PORTS RUNNING REFRESHED AGE PLACEMENT nfs.cephfsnfs ?:12345 2/2 3m ago 13m host02;host03
退出 Cephadm shell 并创建
ingress.yaml
文件:示例
[root@host01 ~]# touch ingress.yaml
编辑
ingress.yaml
文件,使其包含以下详情:语法
service_type: SERVICE_TYPE service_id: SERVICE_ID placement: count: PLACEMENT spec: backend_service: SERVICE_ID_BACKEND frontend_port: FRONTEND_PORT monitor_port: MONITOR_PORT virtual_ip: VIRTUAL_IP_WITH_CIDR
示例
service_type: ingress service_id: nfs.cephfsnfs placement: count: 2 spec: backend_service: nfs.cephfsnfs frontend_port: 2049 monitor_port: 9000 virtual_ip: 10.10.128.75/22
注意在本例中,
placement: count: 2
在随机节点上部署keepalived
和haproxy
服务。要指定要在其上部署keepalived
和haproxy
的节点,请使用placement: hosts
选项:示例
service_type: ingress service_id: nfs.cephfsnfs placement: hosts: - host02 - host03
将 YAML 文件挂载到容器中的一个目录下:
示例
[root@host01 ~]# cephadm shell --mount ingress.yaml:/var/lib/ceph/ingress.yaml
登录 Cephadm shell 并导航至该目录:
示例
[ceph: root@host01 /]# cd /var/lib/ceph/
使用服务规格部署
入口
服务:语法
ceph orch apply -i FILE_NAME.yaml
示例
[ceph: root@host01 ceph]# ceph orch apply -i ingress.yaml
检查 ingress 服务是否已成功启动:
语法
ceph orch ls --service_name=ingress.nfs.CLUSTER_ID
示例
[ceph: root@host01 /]# ceph orch ls --service_name=ingress.nfs.cephfsnfs NAME PORTS RUNNING REFRESHED AGE PLACEMENT ingress.nfs.cephfsnfs 10.10.128.75:2049,9000 4/4 4m ago 22m count:2
验证
查看单个 NFS 守护进程的 IP 端点、IP 地址,以及
入口
服务的虚拟 IP:语法
ceph nfs cluster info CLUSTER_ID
示例
[ceph: root@host01 /]# ceph nfs cluster info cephfsnfs { "cephfsnfs": { "virtual_ip": "10.10.128.75", "backend": [ { "hostname": "host02", "ip": "10.10.128.69", "port": 12345 }, { "hostname": "host03", "ip": "10.10.128.70", "port": 12345 } ], "port": 2049, "monitor_port": 9049 } }
列出主机和进程:
示例
[ceph: root@host01 /]# ceph orch ps | grep nfs haproxy.nfs.cephfsnfs.host01.ruyyhq host01 *:2049,9000 running (27m) 6m ago 34m 9.85M - 2.2.19-7ea3822 5e6a41d77b38 328d27b3f706 haproxy.nfs.cephfsnfs.host02.ctrhha host02 *:2049,9000 running (34m) 6m ago 34m 4944k - 2.2.19-7ea3822 5e6a41d77b38 4f4440dbfde9 keepalived.nfs.cephfsnfs.host01.fqgjxd host01 running (27m) 6m ago 34m 31.2M - 2.1.5 18fa163ab18f 0e22b2b101df keepalived.nfs.cephfsnfs.host02.fqzkxb host02 running (34m) 6m ago 34m 17.5M - 2.1.5 18fa163ab18f c1e3cc074cf8 nfs.cephfsnfs.0.0.host02.emoaut host02 *:12345 running (37m) 6m ago 37m 82.7M - 3.5 91322de4f795 2d00faaa2ae5 nfs.cephfsnfs.1.0.host03.nsxcfd host03 *:12345 running (37m) 6m ago 37m 81.1M - 3.5 91322de4f795 d4bda4074f17
其他资源
- 有关在客户端主机上挂载 NFS 导出的详情,请参阅 Red Hat Ceph Storage 文件系统指南中的通过 NFS 协议导出 Ceph 文件系统命名空间部分。