注意

本文档适用于 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

在此示例中,我们在非默认porthost1host2.

运行服务器。然后可以通过运行以下命令应用规范:

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

更多阅读

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.