注意
本文档适用于 Ceph 开发版本。
NFS 服务
Note
仅支持NFSv4协议。
管理NFS最简单的方法是通过ceph nfs cluster ...
命令;参见CephFS 和 RGW 导出 over NFS。本文件涵盖了如何直接管理cephadm服务,这仅在不寻常的NFS配置中才需要。
部署NFS ganesha
Cephadm部署NFS Ganesha守护进程(或一组守护进程)。NFS的配置存储在.nfs
池中,导出通过ceph nfs export ...
命令和通过仪表板进行管理。
要部署一个NFS Ganesha网关,运行以下命令:
ceph orch apply nfs *<svc_id>* [--port *<port>*] [--placement ...]
例如,要在默认foo:
ceph orch apply nfs foo
请参阅守护进程放置请参阅关于放置规范的详细信息。
服务规范
或者,可以使用YAML规范应用NFS服务。
service_type: nfs
service_id: mynfs
placement:
hosts:
- host1
- host2
spec:
port: 12345
在此示例中,我们在非默认port
的host1
和host2
.
运行服务器。然后可以通过运行以下命令应用规范:
ceph orch apply -i nfs.yaml
高可用性NFS
部署一个ingress服务为现有的nfs服务将提供:
一个稳定的虚拟IP,可用于访问NFS服务器
主机之间的故障转移,如果发生主机故障
负载分布在多个NFS网关之间(尽管这很少必要)
对于现有的NFS服务nfs.mynfs
在此示例中)的NFS入口可以部署以下规范:
service_type: ingress
service_id: nfs.mynfs
placement:
count: 2
spec:
backend_service: nfs.mynfs
frontend_port: 2049
monitor_port: 9000
virtual_ip: 10.0.0.123/24
有几点需要注意:
The virtual_ip必须包含CIDR前缀长度,如上例所示。虚拟IP通常配置在具有相同子网中现有IP的第一个识别的网络接口上。您还可以指定一个virtual_interface_networks属性来匹配其他网络中的IP;参见选择虚拟IP的网络接口 for more information.
The monitor_port用于访问haproxy负载状态页面。默认情况下,用户是
admin
,但可以通过admin规范中的属性进行修改。如果未通过规范中的password属性指定密码,则可以找到自动生成的密码:ceph config-key get mgr/cephadm/ingress.*{svc_id}*/monitor_password
例如:
ceph config-key get mgr/cephadm/ingress.nfs.myfoo/monitor_password
后端服务
nfs.mynfs
在此示例中)应包括port属性,该属性不是2049,以避免与入口服务冲突,该服务可以放置在同一主机上。
带虚拟IP但不带haproxy的NFS
Cephadm还支持使用keepalived但不使用haproxy部署nfs。这提供了由keepalived支持的虚拟IP,NFS守护进程可以直接绑定到该IP,而不是让流量通过haproxy。
在这种设置中,您要么想使用nfs模块设置服务(参见创建NFS Ganesha集群),要么先放置入口服务,以便虚拟IP对nfs守护进程可用。入口服务应包括属性keepalive_only
设置为true。例如
service_type: ingress
service_id: nfs.foo
placement:
count: 1
hosts:
- host1
- host2
- host3
spec:
backend_service: nfs.foo
monitor_port: 9049
virtual_ip: 192.168.122.100/24
keepalive_only: true
然后,可以创建一个nfs服务,该服务指定一个virtual_ip
属性
service_type: nfs
service_id: foo
placement:
count: 1
hosts:
- host1
- host2
- host3
spec:
port: 2049
virtual_ip: 192.168.122.100
注意在这些设置中,应确保在nfs放置中包含count: 1
,因为只有一个nfs守护进程可以绑定到虚拟IP。
带HAProxy协议支持的NFS
Cephadm支持以高可用模式部署NFS,并具有额外的HAProxy协议支持。这就像高可用性NFS一样工作,但还支持NFS导出上的客户端IP级配置。此功能需要NFS-Ganesha v5.0或更高版本。
要使用此模式,您要么想使用nfs模块设置服务(参见创建NFS Ganesha集群)或手动创建服务,并将额外参数enable_haproxy_protocol
设置为true。NFS服务和enable_haproxy_protocol
设置为相同的值。
service_type: ingress
service_id: nfs.foo
placement:
count: 1
hosts:
- host1
- host2
- host3
spec:
backend_service: nfs.foo
monitor_port: 9049
virtual_ip: 192.168.122.100/24
enable_haproxy_protocol: true
service_type: nfs
service_id: foo
placement:
count: 1
hosts:
- host1
- host2
- host3
spec:
port: 2049
enable_haproxy_protocol: true
更多阅读
CephFS:NFS
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.