Remarques :

Déploiement d'un cluster HA Samba avec Windows Active Directory sur OCI

Introduction

Nous expliquerons comment configurer la haute disponibilité avec le basculement automatique de Samba sur les instances Ubuntu dans Oracle Cloud Infrastructure (OCI). Cette solution est une infrastructure de serveur de fichiers robuste et fiable, tirant parti de la puissance d'une configuration SMB (Server Message Block (SMB) en cluster et sans licence complète. Le coût est uniquement lié à la consommation (taille d'OCPU et de volume de blocs).

Les avantages de l'implémentation d'un service de serveur de fichiers SMB en cluster dans une organisation sont les suivants :

Architecture

image

Objectif

Prérequis

Tâche 1 : configurer l'environnement

  1. Créez deux instances de calcul Ubuntu 22.04.

  2. Sur les deux instances de calcul, établissez le répertoire dans lequel vous souhaitez stocker les fichiers et configurez le serveur Samba. Exemple : /mnt/smb.

  3. Créez un volume de blocs avec la taille requise pour votre banque de données SMB, et attachez-le aux deux instances de calcul (iSCSI, lecture/écriture - partageable). Pour plus d'informations, reportez-vous à Attachement d'un volume à plusieurs instances.

  4. Notez le nom de développement affecté au volume de blocs attaché à l'aide de la commande suivante.

    sudo lsblk
    
  5. Affectez une adresse IP privée secondaire au premier noeud. Il s'agit d'une adresse IP flottante. Exemple : 10.10.1.254.

  6. Mettez à jour le fichier /etc/hosts sur les deux instances Ubuntu pour inclure les adresses IP et les noms d'hôte de tous les noeuds, y compris le serveur Windows Active Directory qui sera utilisé pour l'authentification de l'utilisateur. Par exemple : 10.10.1.60 smb1, 10.10.1.29 smb2, 10.10.1.59 ad.testad.oci testad.oci AD.

  7. Configurez iptables sur les deux instances Ubuntu en fonction des besoins.

    Remarque : les instances Ubuntu sont fournies avec des iptables préconfigurés. La sixième règle de la section INPUT rejette tout le reste. Vous avez donc la possibilité de la supprimer ou d'ajouter des protocoles et ports spécifiques autorisés avant cette règle.

  8. Installez et configurez l'interface de ligne de commande Oracle Cloud Infrastructure (interface de ligne de commande OCI) sur les deux instances Ubuntu. Pour plus d'informations, reportez-vous à Installation de l'interface de ligne de commande OCI et configuration (commande de configuration : oci setup config).

    Remarque : installez l'interface de ligne de commande OCI dans /usr/bin ou votre chemin utilisateur pour éviter les problèmes d'autorisation. Par défaut, il s'agit de l'interface racine.

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

Tâche 2 : configurer Oracle Cluster File System version 2 (OCFS2)

Oracle Cluster File System version 2 (OCFS2) est un système de fichiers de disque partagé à usage général développé par Oracle Corporation et publié sous la licence GNU General Public License.

Pour gérer un volume de blocs accessible en écriture partagé, nous devons déployer OCFS2. Pour plus d'informations, reportez-vous à Guide simplifié d'utilisation du système de fichiers Oracle Cluster (OCFS2) avec iSCSI sur Oracle Cloud Infrastructure.

  1. Exécutez la commande suivante sur les deux noeuds.

    sudo apt-get install ocfs2-tools -y
    
  2. Mettez à jour la valeur de O2CB_ENABLED de false sur true dans le fichier /etc/default/o2cb.

    O2CB_ENABLED=true
    
  3. Entrez le code suivant dans le fichier /etc/ocfs2/cluster.conf.

    Remarque : prenez soin de l'indentation et du format du fichier.

    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. Démarrez le service o2cb.

    sudo /etc/init.d/o2cb start
    
  5. Formatez l'unité de volume de blocs avec le système de fichiers OCFS2. Exécutez la commande suivante uniquement sur le premier noeud.

    Remarque : chemin du périphérique noté à l'étape 3.

    sudo mkfs.ocfs2 "MyOCFS2Cluster" /dev/sd*
    
  6. Enregistrez le cluster à l'aide de la commande suivante.

    sudo o2cb register-cluster ocfs2
    
  7. Montez le volume de blocs sur le répertoire affecté au serveur Samba. Exemple : /mnt/smb.

    sudo mount /dev/sd* /mnt/smb
    
  8. Vérifiez le statut du cluster à l'aide de la commande suivante.

    sudo o2cb list-nodes ocfs2
    
  9. Activez les services à l'aide de la commande suivante.

    sudo systemctl enable o2cb
    sudo systemctl enable ocfs2
    
  10. Mettez à jour fstab dans /etc/fstab pour monter automatiquement le volume de blocs au démarrage.

    Remarque : ajustez le périphérique /dev/sd\* en fonction de votre nom de développement.

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

Tâche 3 : configurer le cluster Samba

Samba permet le partage de fichiers et d'impressions entre les ordinateurs fonctionnant sous Microsoft Windows et Unix. Il s'agit d'une implémentation de dizaines de services et de protocoles, notamment : NetBIOS sur TCP/IP (NBT) et SMB - parfois appelé Common Internet File System (CIFS).

  1. Installez Samba et Cluster Trivial Database (CTDB) sur les deux noeuds à l'aide de la commande suivante.

    sudo apt-get install ctdb samba samba-common winbind smbclient -y
    
  2. Modifiez le fichier de configuration Samba.

    sudo nano /etc/samba/smb.conf
    

    Copiez et collez les paramètres suivants.

    Remarque :

    • Vous devez le configurer en conséquence avec votre environnement et Windows domain/workgroup.
    • Le paramètre netbios name doit être le même pour tous les noeuds.
    [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. Pour configurer le cluster, modifiez le fichier de configuration CTDB.

    sudo nano  /etc/ctdb/ctdb.conf
    

    Copiez et collez les paramètres suivants.

    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. Modifiez le fichier de configuration des noeuds pour configurer le cluster.

    sudo nano /etc/ctdb/nodes
    

    Ajoutez les adresses IP de vos noeuds.

    10.10.1.60
    10.10.1.29
    
  5. Modifiez le fichier de configuration d'adresse publique CTDB (adresse IP flottante).

    Sudo nano /etc/ctdb/public_addresses
    

    Ajoutez une adresse IP flottante.

    10.10.1.254/0 ens3
    
  6. Nous devons ajouter le script pour gérer l'adresse IP flottante au niveau OCI et la migrer automatiquement en cas de basculement.

    Sudo nano /etc/ctdb/functions
    

    Ajoutez le code suivant après la section add_ip_to_iface ().

    Remarque : modifiez l'OCID (identificateur Oracle Cloud) et le nom d'hôte avec l'OCID et le nom d'hôte de vos cartes d'interface réseau virtuelles de noeud.

    ##### 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. Utilisez la commande suivante pour dépanner la migration d'adresses IP flottantes si elle ne fonctionne pas.

    sudo journalctl -u ctdb.service
    

Tâche 4 : intégration de Windows Active Directory

  1. Pour intégrer l'accès utilisateur au serveur Windows Active Directory, nous devons installer Kerberos sur les deux noeuds.

    sudo apt -y install winbind libpam-winbind libnss-winbind krb5-config samba-dsdb-modules samba-vfs-modules
    
  2. Utilisez la commande suivante pour configurer Kerberos.

    sudo nano /etc/krb5.conf
    
  3. Vérifiez le fichier de configuration avec le code suivant.

    Remarque : n'oubliez pas d'utiliser le domaine/domaine Windows configuré dans votre environnement.

    [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. La dernière étape consiste à joindre les deux hôtes au domaine Windows à l'aide de la commande suivante.

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

Essayez maintenant de connecter votre client au serveur Samba à l'aide de l'adresse IP flottante et des utilisateurs Windows Active Directory (par exemple : //10.10.1.254/samba_test) et de tester la continuité d'activité si un noeud est arrêté ou redémarré.

Le nouveau cluster Samba est prêt !

Remerciements

Ressources de formation supplémentaires

Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.