适用于 SUSE Enterprise Storage 5

13 通过 Samba 导出 CephFS

本章介绍如何通过 Samba/CIFS 共享导出 CephFS。可在 Windows* 客户端中使用 Samba 共享。

警告
警告:技术预览

从 SUSE Enterprise Storage 5 开始,导出 Samba 共享被视为一项技术预览,不再受支持。

13.1 示例安装

导出 CephFS 是一项预览技术,不支持该功能。要导出 Samba 共享,需要在一个集群节点上手动安装 Samba 并对其进行配置。可以通过 CTDB 和 SUSE Linux Enterprise High Availability Extension 提供故障转移功能。

  1. 请确保集群中已存在一个正常工作的 CephFS。有关详细信息,请参见第 11 章 “安装 CephFS

  2. 在 Salt Master 上创建一个特定于 Samba 网关的密钥环,并将其复制到 Samba 网关节点:

    root@master # ceph auth get-or-create client.samba.gw mon 'allow r' \
        osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyring
    root@master # scp ceph.client.samba.gw.keyring SAMBA_NODE:/etc/ceph/

    SAMBA_NODE 替换为 Samba 网关节点的名称。

  3. 在 Samba 网关节点上执行以下步骤。在 Samba 网关节点上安装 Samba 守护进程:

    root # zypper in samba samba-ceph
  4. 编辑 /etc/samba/smb.conf 并添加以下段落:

    [SHARE_NAME]
            path = /
            vfs objects = ceph
            ceph:config_file = /etc/ceph/ceph.conf
            ceph: user_id = samba.gw
            read only = no
  5. 启动并启用 Samba 守护进程:

    root # systemctl start smb.service
    root # systemctl enable smb.service
    root # systemctl start nmb.service
    root # systemctl enable nmb.service

13.2 高可用性配置

本节提供一个示例来说明如何设置 Samba 服务器的双节点高可用性配置。该设置需要 SUSE Linux Enterprise High Availability Extension。两个节点分别名为 earth (192.168.1.1) 和 mars (192.168.1.2)。

有关 SUSE Linux Enterprise High Availability Extension 的详细信息,请参见 https://www.suse.com/documentation/sle-ha-12/

此外,使用两个浮动虚拟 IP 地址可让客户端连接到服务,不管该服务在哪个物理节点上运行均如此。192.168.1.10 用于通过 Hawk2 进行集群管理,192.168.2.1 专门用于 CIFS 导出。这样,以后便可更轻松地应用安全限制。

以下过程介绍示例安装。https://www.suse.com/documentation/sle-ha-12/install-quick/data/install-quick.html 上提供了更多详细信息。

  1. 在 Salt Master 上创建一个特定于 Samba 网关的密钥环,并将其复制到上述两个节点:

    root@master # ceph auth get-or-create client.samba.gw mon 'allow r' \
        osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyring
    root@master # scp ceph.client.samba.gw.keyring earth:/etc/ceph/
    root@master # scp ceph.client.samba.gw.keyring mars:/etc/ceph/
  2. 准备好 earthmars,以托管 Samba 服务:

    1. 在继续下一步之前,请确保已安装以下包: ctdbtdb-toolssamba (smb 和 nmb 资源需要)。

      root # zypper in ctdb tdb-tools samba samba-ceph
    2. 确保服务 ctdbsmbnmb 已停止且未启用:

      root # systemctl disable ctdb
      root # systemctl disable smb
      root # systemctl disable nmb
      root # systemctl stop smb
      root # systemctl stop nmb
    3. 在所有节点上打开防火墙的端口 4379。这是为了使 CTDB 能够与其他集群节点通讯。

    4. 在共享文件系统上为 CTDB 锁定创建一个目录:

      root # mkdir -p /srv/samba/
  3. earth 上创建 Samba 的配置文件。这些文件稍后将自动同步到 mars

    1. /etc/ctdb/nodes 中插入包含集群中每个节点的所有私用 IP 地址的所有节点:

      192.168.1.1
      192.168.1.2
    2. 配置 Samba。在 /etc/samba/smb.conf[global] 部分中添加以下行。使用所选的主机名取代“CTDB-SERVER”(集群中的所有节点将显示为一个此名称的大节点,以方便操作):

      [global]
          netbios name = CTDB-SERVER
          clustering = yes
          idmap config * : backend = tdb2
          passdb backend = tdbsam
          ctdbd socket = /var/lib/ctdb/ctdb.socket

      有关 csync2 的详细信息,请参见 https://www.suse.com/documentation/sle-ha-12/singlehtml/book_sleha/book_sleha.html#pro.ha.installation.setup.csync2.start

  4. 安装并引导 SUSE Linux Enterprise High Availability 集群。

    1. earthmars 上注册 SUSE Linux Enterprise High Availability Extension。

      root@earth # SUSEConnect -r ACTIVATION_CODE -e E_MAIL
      root@mars # SUSEConnect -r ACTIVATION_CODE -e E_MAIL
    2. 在两个节点上安装 ha-cluster-bootstrap

      root@earth # zypper in ha-cluster-bootstrap
      root@mars # zypper in ha-cluster-bootstrap
    3. earth 上初始化集群:

      root@earth # ha-cluster-init
    4. mars 加入该集群:

      root@mars # ha-cluster-join -c earth
  5. 检查集群的状态。您应该会看到两个节点都已添加到集群中:

    root@earth # crm status
    2 nodes configured
    1 resource configured
    
    Online: [ earth mars ]
    
    Full list of resources:
    
     admin-ip       (ocf::heartbeat:IPaddr2):       Started earth
  6. earth 上执行以下命令,以配置 CTDB 资源:

    root@earth # crm configure
    crm(live)configure# primitive ctdb ocf:heartbeat:CTDB params \
        ctdb_manages_winbind="false" \
        ctdb_manages_samba="false" \
        ctdb_recovery_lock="!/usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper
            ceph client.samba.gw cephfs_metadata ctdb-mutex"
        ctdb_socket="/var/lib/ctdb/ctdb.socket" \
            op monitor interval="10" timeout="20" \
            op start interval="0" timeout="90" \
            op stop interval="0" timeout="100"
    crm(live)configure# primitive nmb systemd:nmb \
        op start timeout="60" interval="0" \
        op stop timeout="60" interval="0" \
        op monitor interval="60" timeout="60"
    crm(live)configure# primitive smb systemd:smb \
        op start timeout="60" interval="0" \
        op stop timeout="60" interval="0" \
        op monitor interval="60" timeout="60"
    crm(live)configure# group g-ctdb ctdb nmb smb
    crm(live)configure# clone cl-ctdb g-ctdb meta interleave="true"
    crm(live)configure# commit

    配置选项 ctdb_recovery_lock 中的二进制文件 /usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper 依序包含参数 CLUSTER_NAME CEPHX_USER CEPH_POOL CEPHX_USER

  7. 添加集群 IP 地址:

    crm(live)configure# primitive ip ocf:heartbeat:IPaddr2 params ip=192.168.2.1 \
        unique_clone_address="true" \
        op monitor interval="60" \
        meta resource-stickiness="0"
    crm(live)configure# clone cl-ip ip \
        meta interleave="true" clone-node-max="2" globally-unique="true"
    crm(live)configure# colocation col-with-ctdb 0: cl-ip cl-ctdb
    crm(live)configure# order o-with-ctdb 0: cl-ip cl-ctdb
    crm(live)configure# commit

    如果 unique_clone_address 设置为 true,IPaddr2 资源代理将向指定的地址添加一个克隆 ID,从而导致出现三个不同的 IP 地址。这些地址通常是不需要的,但有助于实现负载平衡。有关此主题的更多信息,请参见https://www.suse.com/documentation/sle-ha-12/book_sleha/data/cha_ha_lb.html

  8. 检查结果:

    root@earth # crm status
    Clone Set: base-clone [dlm]
         Started: [ factory-1 ]
         Stopped: [ factory-0 ]
     Clone Set: cl-ctdb [g-ctdb]
         Started: [ factory-1 ]
         Started: [ factory-0 ]
     Clone Set: cl-ip [ip] (unique)
         ip:0       (ocf:heartbeat:IPaddr2):       Started factory-0
         ip:1       (ocf:heartbeat:IPaddr2):       Started factory-1
  9. 从客户端计算机进行测试。在 Linux 客户端上运行以下命令,以检查能否从系统复制文件以及将文件复制到系统:

    root # smbclient //192.168.2.1/myshare
打印此页