Nota

Distribuire un cluster HA Samba con Windows Active Directory su OCI

Introduzione

Discuteremo come configurare l'alta disponibilità (HA) con il failover automatico di Samba sulle istanze Ubuntu in Oracle Cloud Infrastructure (OCI). Questa soluzione è un'infrastruttura di file server solida e affidabile, che sfrutta la potenza di un'impostazione SMB (Server Message Block (SMB) in cluster e completamente priva di licenza. Il costo è correlato solo al consumo (oCPU e dimensione del volume a blocchi).

I vantaggi dell'implementazione di un servizio di file server SMB in cluster in un'organizzazione sono i seguenti:

Architettura

immagine

Obiettivo

Prerequisiti

Task 1: Impostare l'ambiente

  1. Crea due istanze di computazione Ubuntu 22.04.

  2. In entrambe le istanze di computazione, stabilire la directory in cui si intende memorizzare i file e configurare il server Samba. Ad esempio: /mnt/smb.

  3. Crea un volume a blocchi con la dimensione necessaria per il data store SMB e collegalo a entrambe le istanze di computazione (iSCSI, di lettura/scrittura, condivisibile). Per ulteriori informazioni, vedere Collegamento di un volume a più istanze.

  4. Prendere nota del nome dev assegnato al volume a blocchi collegato utilizzando il comando seguente.

    sudo lsblk
    
  5. Assegnare un indirizzo IP privato secondario nel primo nodo. Questo è un indirizzo IP mobile. Ad esempio: 10.10.1.254.

  6. Aggiornare il file /etc/hosts in entrambe le istanze Ubuntu in modo da includere gli indirizzi IP e i nomi host di tutti i nodi, incluso il server Windows Active Directory che verrà utilizzato per l'autenticazione degli utenti. Ad esempio: 10.10.1.60 smb1, 10.10.1.29 smb2, 10.10.1.59 ad.testad.oci testad.oci AD.

  7. Configurare iptables su entrambe le istanze Ubuntu in base alle esigenze.

    Nota: le istanze Ubuntu sono dotate di iptables preconfigurato. La sesta regola nella sezione INPUT rifiuta tutto il resto, quindi è possibile eliminarla o aggiungere protocolli e porte specifici consentiti prima di questa regola.

  8. Installare e configurare l'interfaccia della riga di comando di Oracle Cloud Infrastructure (OCI CLI) su entrambe le istanze Ubuntu. Per ulteriori informazioni, vedere Installare l'interfaccia CLI OCI e configurarla (comando di configurazione: oci setup config).

    Nota: installare l'interfaccia CLI OCI in /usr/bin o nel percorso utente per evitare problemi di autorizzazione, per impostazione predefinita è root.

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

Task 2: configurare Oracle Cluster File System versione 2 (OCFS2)

Oracle Cluster File System versione 2 (OCFS2) è un file system su disco condiviso per uso generico sviluppato da Oracle Corporation e rilasciato sotto la GNU General Public License.

Per gestire un volume a blocchi scrivibile condiviso, è necessario distribuire OCFS2. Per ulteriori informazioni, vedere A Simple Guide to Oracle Cluster File System (OCFS2) using iSCSI on Oracle Cloud Infrastructure.

  1. Eseguire il comando seguente su entrambi i nodi.

    sudo apt-get install ocfs2-tools -y
    
  2. Aggiornare il valore di O2CB_ENABLED da false a true nel file /etc/default/o2cb.

    O2CB_ENABLED=true
    
  3. Immettere il codice seguente nel file /etc/ocfs2/cluster.conf.

    Nota: gestire il rientro e il formato del file.

    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. Avviare il servizio o2cb.

    sudo /etc/init.d/o2cb start
    
  5. Formatta il dispositivo del volume a blocchi con il file system OCFS2. Eseguire il comando seguente solo sul primo nodo.

    Nota: il percorso del dispositivo indicato al passo 3.

    sudo mkfs.ocfs2 "MyOCFS2Cluster" /dev/sd*
    
  6. Registrare il cluster utilizzando il comando seguente.

    sudo o2cb register-cluster ocfs2
    
  7. Installare il volume a blocchi nella directory assegnata per il server Samba. Ad esempio: /mnt/smb.

    sudo mount /dev/sd* /mnt/smb
    
  8. Controllare lo stato del cluster utilizzando il comando seguente.

    sudo o2cb list-nodes ocfs2
    
  9. Abilitare i servizi utilizzando il comando seguente.

    sudo systemctl enable o2cb
    sudo systemctl enable ocfs2
    
  10. Aggiornare il file fstab in /etc/fstab per eseguire automaticamente il MOUNT del volume a blocchi all'avvio.

    Nota: regolare il dispositivo /dev/sd\* in base al nome del dispositivo.

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

Task 3: Impostare il cluster Samba

Samba consente la condivisione di file e stampa tra computer in esecuzione su Microsoft Windows e Unix. Si tratta di un'implementazione di decine di servizi e protocolli, tra cui: NetBIOS su TCP/IP (NBT) e SMB - a volte indicato come Common Internet File System (CIFS).

  1. Installare Samba e Cluster Trivial Database (CTDB) su entrambi i nodi utilizzando il seguente comando.

    sudo apt-get install ctdb samba samba-common winbind smbclient -y
    
  2. Modificare il file di configurazione Samba.

    sudo nano /etc/samba/smb.conf
    

    Copiare e incollare i seguenti parametri.

    Nota:

    • È necessario configurarlo di conseguenza con l'ambiente e le finestre domain/workgroup.
    • Il parametro netbios name deve essere lo stesso per tutti i nodi.
    [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. Per impostare il cluster, modificare il file di configurazione CTDB.

    sudo nano  /etc/ctdb/ctdb.conf
    

    Copiare e incollare i seguenti parametri.

    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. Modificare il file di configurazione dei nodi per la configurazione del cluster.

    sudo nano /etc/ctdb/nodes
    

    Aggiungere gli indirizzi IP dei nodi.

    10.10.1.60
    10.10.1.29
    
  5. Modificare il file di configurazione dell'indirizzo pubblico CTDB (l'indirizzo IP mobile).

    Sudo nano /etc/ctdb/public_addresses
    

    Aggiungere un indirizzo IP mobile.

    10.10.1.254/0 ens3
    
  6. Dobbiamo aggiungere lo script per gestire l'indirizzo IP mobile a livello OCI ed eseguirne la migrazione automatica in caso di failover.

    Sudo nano /etc/ctdb/functions
    

    Aggiungere il codice seguente dopo la sezione add_ip_to_iface ().

    Nota: modificare l'OCID (Oracle Cloud Identifier) e il nome host con l'OCID delle VNIC dei nodi e il nome 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. Utilizzare il comando seguente per risolvere i problemi relativi alla migrazione dell'indirizzo IP mobile se non funziona.

    sudo journalctl -u ctdb.service
    

Task 4: Integrare Windows Active Directory

  1. Per integrare l'accesso utente con il server Windows Active Directory, è necessario installare Kerberos su entrambi i nodi.

    sudo apt -y install winbind libpam-winbind libnss-winbind krb5-config samba-dsdb-modules samba-vfs-modules
    
  2. Utilizzare il comando riportato di seguito per configurare Kerberos.

    sudo nano /etc/krb5.conf
    
  3. Controllare il file di configurazione con il codice seguente.

    Nota: ricordarsi di utilizzare il dominio o il realm Windows configurato nell'ambiente.

    [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. L'ultimo passo è unire entrambi gli host nel dominio Windows utilizzando il seguente comando.

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

Ora, prova a connettere il tuo client al server Samba utilizzando l'indirizzo IP mobile e gli utenti di Windows Active Directory (ad esempio: //10.10.1.254/samba_test) e verifica la continuità aziendale se un nodo viene chiuso o riavviato.

Il nuovo cluster Samba è pronto!

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.