Note:

Despliegue de un cluster de HA Samba con Windows Active Directory en OCI

Introducción

Analizaremos cómo configurar la alta disponibilidad (HA) con failover automático de Samba en instancias de Ubuntu en Oracle Cloud Infrastructure (OCI). Esta solución es una infraestructura de servidor de archivos sólida y fiable, que aprovecha la potencia de una configuración de bloque de mensajes de Server Message Block (SMB) en cluster y está completamente libre de licencia. El costo solo está relacionado con el consumo (oCPU y tamaño de volumen en bloque).

Las ventajas de implementar un servicio de servidor de archivos SMB en cluster en una organización son:

Arquitectura

image

Objetivo

Requisitos

Tarea 1: Configuración del entorno

  1. Cree dos instancias informáticas de Ubuntu 22.04.

  2. En ambas instancias informáticas, establezca el directorio donde desea almacenar los archivos y configure el servidor Samba. Por ejemplo: /mnt/smb.

  3. Cree un volumen en bloque con el tamaño necesario para el almacén de datos de SMB y asócielo a ambas instancias informáticas (iSCSI, lectura/escritura - compartible). Para obtener más información, consulte Asociación de un volumen a varias instancias.

  4. Observe el nombre del dispositivo asignado al volumen en bloque asociado mediante el siguiente comando.

    sudo lsblk
    
  5. Asigne una dirección IP privada secundaria en el primer nodo. Esta es una dirección IP flotante. Por ejemplo: 10.10.1.254.

  6. Actualice el archivo /etc/hosts en ambas instancias de Ubuntu para incluir las direcciones IP y los nombres de host de todos los nodos, incluido el servidor de Windows Active Directory que se utilizará para la autenticación de usuarios. Por ejemplo: 10.10.1.60 smb1, 10.10.1.29 smb2, 10.10.1.59 ad.testad.oci testad.oci AD.

  7. Configure iptables en ambas instancias de Ubuntu según las necesidades.

    Nota: Las instancias de Ubuntu incluyen iptables preconfigurados. La sexta regla de la sección INPUT rechaza todo lo demás, por lo que tiene la opción de suprimirla o agregar protocolos y puertos específicos permitidos antes de esta regla.

  8. Instale y configure la interfaz de línea de comandos (CLI de OCI) de Oracle Cloud Infrastructure en ambas instancias de Ubuntu. Para obtener más información, consulte Instalación de la CLI de OCI y configuración (comando de configuración: configuración de oci).

    Nota: Instale la CLI de OCI en /usr/bin o en la ruta de usuario para evitar problemas de permisos, por defecto es raíz.

    bash -c "$(curl -L https://raw.githubusercontent.com/oracle/ocicli/master/scripts/install/install.sh)"
    

Tarea 2: Configuración de Oracle Cluster File System versión 2 (OCFS2)

Oracle Cluster File System versión 2 (OCFS2) es un sistema de archivos de disco compartido de uso general desarrollado por Oracle Corporation y lanzado bajo la Licencia Pública General de GNU.

Para gestionar un volumen en bloque de escritura compartida, tenemos que desplegar OCFS2. Para obtener más información, consulte Guía sencilla para el sistema de archivos de Oracle Cluster (OCFS2) mediante iSCSI en Oracle Cloud Infrastructure.

  1. Ejecute el siguiente comando en ambos nodos.

    sudo apt-get install ocfs2-tools -y
    
  2. Actualice el valor de O2CB_ENABLED de false a true en el archivo /etc/default/o2cb.

    O2CB_ENABLED=true
    
  3. Introduzca el siguiente código en el archivo /etc/ocfs2/cluster.conf.

    Nota: Tenga cuidado con la sangría y el formato del archivo.

    cluster:
       name = ocfs2
       heartbeat_mode = local
       node_count = 2
    node:
       cluster = ocfs2
       number = 0
       ip_port = 7777
       ip_address = 10.10.1.60
       name = smb1
    node:
       cluster = ocfs2
       number = 1
       ip_port = 7777
       ip_address = 10.10.1.29
       name = smb2
    
  4. Ahora, inicie el servicio o2cb.

    sudo /etc/init.d/o2cb start
    
  5. Aplique formato al dispositivo de volumen en bloque con el sistema de archivos OCFS2. Ejecute el siguiente comando sólo en el primer nodo.

    Nota: La ruta del dispositivo que hemos anotado en el paso 3.

    sudo mkfs.ocfs2 "MyOCFS2Cluster" /dev/sd*
    
  6. Registre el cluster con el siguiente comando.

    sudo o2cb register-cluster ocfs2
    
  7. Monte el volumen en bloque en el directorio asignado para el servidor Samba. Por ejemplo: /mnt/smb.

    sudo mount /dev/sd* /mnt/smb
    
  8. Compruebe el estado del cluster con el siguiente comando.

    sudo o2cb list-nodes ocfs2
    
  9. Active los servicios con el siguiente comando.

    sudo systemctl enable o2cb
    sudo systemctl enable ocfs2
    
  10. Actualice fstab en /etc/fstab para montar el volumen en bloque automáticamente al iniciar.

    Nota: Ajuste el dispositivo /dev/sd\* según el nombre del dispositivo.

    /dev/sd* /mnt/smb ocfs2     _netdev,defaults   0 0
    

Tarea 3: Configuración del cluster de Samba

Samba permite compartir archivos e impresiones entre equipos que se ejecutan en Microsoft Windows y Unix. Es una implementación de docenas de servicios y protocolos, que incluyen: NetBIOS sobre TCP/IP (NBT) y SMB, a veces denominado Sistema Común de Archivos de Internet (CIFS).

  1. Instale la base de datos trivial de cluster y Samba (CTDB) en ambos nodos mediante el siguiente comando.

    sudo apt-get install ctdb samba samba-common winbind smbclient -y
    
  2. Edite el archivo de configuración de Samba.

    sudo nano /etc/samba/smb.conf
    

    Copie y pegue los siguientes parámetros.

    Nota:

    • Debe configurarlo en consecuencia con el entorno y las ventanas domain/workgroup.
    • El parámetro netbios name debe ser el mismo para todos los nodos.
    [global]
          server string = samba_server
          workgroup = TESTAD
          password server = ad.testad.oci
          realm = testad.oci
          winbind enum groups = yes
          winbind enum users = yes
          winbind use default domain = yes
          security = ADS
          debuglevel = 2
          wins support = no
          idmap config TESTAD : backend = rid
          idmap config TESTAD : range = 10000 - 50000
          idmap config * : backend = tdb
          idmap config * : range = 1000-9999
          template shell = /bin/false
          winbind offline logon = false
          interfaces = lo ens3
          clustering = yes
          guest ok = yes
          bind interfaces only = no
          disable netbios = no
          netbios name = sambacluster1
          smb ports = 445
          log file = /var/log/samba/smb.log
          max log size = 10000
          veto files = /._*/.DS_Store/.Trashes/.TemporaryItems/
          delete veto files = yes
          nt acl support = yes
          inherit acls = yes
          map acl inherit = yes
          map archive = yes
          map hidden = yes
          map read only = yes
          map system = yes
          store dos attributes = yes
          inherit permissions = yes
          unix extensions = no
    [samba_test]
          path = /mnt/smb
          browseable = yes
          writeable = yes
          read only = no
          public = yes
          inherit acls = no
          admin users = "testad.oci\administrator"
          create mask = 0744
          directory mask = 0755
    
    
  3. Para configurar el cluster, edite el archivo de configuración de CTDB.

    sudo nano  /etc/ctdb/ctdb.conf
    

    Copie y pegue los siguientes parámetros.

    CTDB_NODES=/etc/ctdb/nodes
    CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
    CTDB_RECOVERY_LOCK="/mnt/Samba/ctdb/.ctdb.lock"
    CTDB_MANAGES_SAMBA=yes
    CTDB_MANAGES_WINBIND=yes
    CTDB_SERVICE_SMB=smbd
    
  4. Edite el archivo de configuración de nodos para configurar el cluster.

    sudo nano /etc/ctdb/nodes
    

    Agregue las direcciones IP de los nodos.

    10.10.1.60
    10.10.1.29
    
  5. Edite el archivo de configuración de la dirección pública de CTDB (la dirección IP flotante).

    Sudo nano /etc/ctdb/public_addresses
    

    Agregue una dirección IP flotante.

    10.10.1.254/0 ens3
    
  6. Tenemos que agregar el script para gestionar la dirección IP flotante en el nivel de OCI y migrarlo automáticamente en caso de failover.

    Sudo nano /etc/ctdb/functions
    

    Agregue el siguiente código después de la sección add_ip_to_iface ().

    Nota: Cambie el identificador de Oracle Cloud (OCID) y el nombre de host con el OCID de las VNIC de los nodos y el nombre de host.

    ##### OCI vNIC variables
       server="`hostname -s`"
       smb1vnic="ocid1.vnic.oc1.eu-frankfurt-1.YOUR_NODE1_VNIC_OCID"
       smb2vnic="ocid1.vnic.oc1.eu-frankfurt-1.YOUR_NODE2_VNIC_OCID"
       vnicip="10.10.1.254"
       #export LC_ALL=C.UTF-8
       #export LANG=C.UTF-8
       #touch /tmp/vip.log
       ##### OCI/IPaddr Integration
          if [ $server = "smb1" ]; then
             /usr/bin/oci network vnic assign-private-ip --unassign-if-already-assigned --vnic-id $smb1vnic --ip-address $vnicip 2>/dev/null
          else
             /usr/bin/oci network vnic assign-private-ip --unassign-if-already-assigned --vnic-id $smb2vnic --ip-address $vnicip 2>/dev/null
          fi
    
  7. Utilice el siguiente comando para solucionar problemas de migración de direcciones IP flotantes si no funciona.

    sudo journalctl -u ctdb.service
    

Tarea 4: Integración de Windows Active Directory

  1. Para integrar el acceso de usuario con el servidor de Windows Active Directory, tenemos que instalar Kerberos en ambos nodos.

    sudo apt -y install winbind libpam-winbind libnss-winbind krb5-config samba-dsdb-modules samba-vfs-modules
    
  2. Utilice el siguiente comando para configurar Kerberos.

    sudo nano /etc/krb5.conf
    
  3. Compruebe el archivo de configuración con el siguiente código.

    Nota: Recuerde utilizar el dominio/dominio de Windows configurado en el entorno.

    [libdefaults]
          default_realm = TESTAD.OCI
    # The following krb5.conf variables are only for MIT Kerberos.
          kdc_timesync = 1
          ccache_type = 4
          forwardable = true
          proxiable = true
    # The following encryption type specification will be used by MIT Kerberos.
    # if uncommented. In general, the defaults in the MIT Kerberos code are
    # correct and overriding these specifications only serves to disable new
    # encryption types as they are added, creating interoperability problems.
    # The only time when you might need to uncomment these lines and change
    # the enctypes is if you have local software that will break on ticket
    # caches containing ticket encryption types it doesn't know about (such as # old versions of Sun Java).
    # default_tgs_enctypes = des3-hmac-sha1
    # default_tkt_enctypes = des3-hmac-sha1
    # permitted_enctypes = des3-hmac-sha1
    # The following libdefaults parameters are only for Heimdal Kerberos.
          fcc-mit-ticketflags = true
    [realms]
          TESTAD.OCI = {
                   kdc = ad.testad.oci
                   admin_server = ad.testad.oci
    
  4. El último paso es unir ambos hosts al dominio de Windows mediante el siguiente comando.

    Sudo net ads join -U Administrator -S testad.oci
    

Ahora, intente conectar el cliente al servidor Samba utilizando la dirección IP flotante y los usuarios de Windows Active Directory (por ejemplo: //10.10.1.254/samba_test) y pruebe la continuidad del negocio si se cierra o se reinicia un nodo.

¡El nuevo cluster de Samba ya está listo!

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.