Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.3. 配置 Samba

以下流程初始化 Samba 环境并在集群节点上配置 Samba。
  1. 在集群的两个节点上执行以下步骤:
    1. 安装 sambactdbcifs-utils 软件包。
      # yum install samba ctdb cifs-utils
    2. 如果您正在运行 firewalld 守护进程,请运行以下命令启用 ctdbsamba 服务所需的端口。
      # firewall-cmd --add-service=ctdb --permanent
      # firewall-cmd --add-service=samba --permanent
      # firewall-cmd --reload
    3. 输入以下命令以确保这些守护进程没有运行且不会在引导时启动。请注意,不是所有这些守护进程都可能存在或者在您的系统中运行。
      # systemctl disable ctdb
      # systemctl disable smb
      # systemctl disable nmb
      # systemctl disable winbind
      # systemctl stop ctdb
      # systemctl stop smb
      # systemctl stop nmb
      # systemctl stop winbind
    4. /etc/samba/smb.conf 文件中,配置 Samba 服务器并设置 [public] 共享定义。例如:
      # cat << END > /etc/samba/smb.conf
      [global]
      netbios name = linuxserver
      workgroup = WORKGROUP
      server string = Public File Server
      security = user
      map to guest = bad user
      guest account = smbguest
      clustering = yes
      ctdbd socket = /tmp/ctdb.socket
      [public]
      path = /mnt/gfs2share/public
      guest ok = yes
      read only = no
      END
      有关将 Samba 配置为独立服务器的详情,如本例中所示,以及使用 testparm 实用程序验证 smb.conf 文件的详情,请参考 系统管理员指南中的 File and Print Servers 部分。
    5. 将集群节点的 IP 地址添加到 /etc/ctdb/nodes 文件中。
      # cat << END > /etc/ctdb/nodes
      192.168.1.151
      192.168.1.152
      END
    6. 要在集群节点之间进行负载平衡,您可以将两个或者多个 IP 地址添加到 /etc/ctdb/public_addresses 文件中,可用于访问此集群导出的 Samba 共享。这些是在 DNS 中为 Samba 服务器的名称配置的 IP 地址,也是 SMB 客户端要连接的地址。将 Samba 服务器的名称配置为具有多个 IP 地址的 DNS 类型 A 记录,并允许轮询 DNS 在集群节点中分发客户端。
      在本例中,DNS 条目 linuxserver.example.com 是由 /etc/ctdb/public_addresses 文件中列出的地址定义的。在这个版本中,DNS 会以轮循(round-robin)方式在集群节点中分发 Samba 客户端。请注意,在执行这种情况时,DNS 条目应该与您的需要匹配。
      将可用于访问此集群导出的 Samba 共享的 IP 地址添加到 /etc/ctdb/public_addresses 文件中。
      # cat << END > /etc/ctdb/public_addresses
      192.168.1.201/24 eth0
      192.168.1.202/24 eth0
      END
    7. 创建 Samba 组,然后为公共测试共享目录添加本地用户,将之前创建的组设置为主组群。
      # groupadd smbguest
      # adduser smbguest -g smbguest
    8. 请确定在 CTDB 相关目录中 SELinux 上下文正确。
      # mkdir /var/ctdb/
      # chcon -Rv -u system_u -r object_r -t ctdbd_var_lib_t /var/ctdb/
      changing security context of ‘/var/ctdb/’
      # chcon -Rv -u system_u -r object_r -t ctdbd_var_lib_t /var/lib/ctdb/
      changing security context of ‘/var/lib/ctdb/’
      
  2. 在集群的一个节点上执行以下步骤:
    1. 为 CTDB 锁定文件和公共共享设置目录。
      [root@z1 ~]# mkdir -p /mnt/gfs2share/ctdb/
      [root@z1 ~]# mkdir -p /mnt/gfs2share/public/
    2. 更新 GFS2 共享中的 SELinux 上下文。
      [root@z1 ~]# chown smbguest:smbguest /mnt/gfs2share/public/
      [root@z1 ~]# chmod 755 /mnt/gfs2share/public/
      [root@z1 ~]# chcon -Rv -t ctdbd_var_run_t /mnt/gfs2share/ctdb/
      changing security context of ‘/mnt/gfs2share/ctdb/’
      [root@z1 ~]# chcon -Rv -u system_u -r object_r -t samba_share_t /mnt/gfs2share/public/
      changing security context of ‘/mnt/gfs2share/public’