Hinweis:

HA-Samba-Cluster mit Windows Active Directory auf OCI bereitstellen

Einführung

In diesem Kurs wird erläutert, wie Sie High Availability (HA) mit automatischem Failover von Samba auf Ubuntu-Instanzen in Oracle Cloud Infrastructure (OCI) konfigurieren. Diese Lösung ist eine robuste und zuverlässige Dateiserverinfrastruktur, die das Potenzial eines geclusterten Server Message Block (SMB)-Setups nutzt und vollständig lizenzfrei ist. Die Kosten beziehen sich nur auf den Verbrauch (oCPU und Block-Volume-Größe).

Die Implementierung eines geclusterten SMB-Dateiserverservice in einer Organisation bietet folgende Vorteile:

Architektur

image

Zielsetzung

Voraussetzungen

Aufgabe 1: Umgebung einrichten

  1. Erstellen Sie zwei Ubuntu 22.04-Compute-Instanzen.

  2. Richten Sie auf beiden Compute-Instanzen das Verzeichnis ein, in dem Sie Dateien speichern möchten, und konfigurieren Sie den Samba-Server. Beispiel: /mnt/smb.

  3. Erstellen Sie ein Block-Volume mit der erforderlichen Größe für Ihren SMB-Datenspeicher, und hängen Sie es an beide Compute-Instanzen an (iSCSI, Lese-/Schreibzugriff - gemeinsam nutzbar). Weitere Informationen finden Sie unter Volumes an mehrere Instanzen anhängen.

  4. Notieren Sie sich den Entwicklungsnamen, der dem angehängten Block-Volume mit dem folgenden Befehl zugewiesen ist.

    sudo lsblk
    
  5. Weisen Sie auf dem ersten Knoten eine sekundäre private IP-Adresse zu. Dies ist eine schwebende IP-Adresse. Beispiel: 10.10.1.254.

  6. Aktualisieren Sie die Datei /etc/hosts auf beiden Ubuntu-Instanzen, sodass sie die IP-Adressen und Hostnamen aller Knoten enthält, einschließlich des Windows Active Directory-Servers, der für die Benutzerauthentifizierung verwendet wird. Beispiel: 10.10.1.60 smb1, 10.10.1.29 smb2, 10.10.1.59 ad.testad.oci testad.oci AD.

  7. Konfigurieren Sie die iptables auf beiden Ubuntu-Instanzen entsprechend den Anforderungen.

    Hinweis: Ubuntu-Instanzen werden mit vorkonfigurierten iptables-Instanzen geliefert. Die sechste Regel im INPUT-Abschnitt lehnt alles andere ab, sodass Sie entweder die Regel löschen oder bestimmte Protokolle und Ports hinzufügen können, die vor dieser Regel zulässig sind.

  8. Installieren und konfigurieren Sie die Oracle Cloud Infrastructure-Befehlszeilenschnittstelle (OCI-CLI) auf beiden Ubuntu-Instanzen. Weitere Informationen finden Sie unter OCI-CLI installieren und konfigurieren (Konfigurationsbefehl: OCI-Setupkonfiguration).

    Hinweis: Installieren Sie die OCI-CLI in /usr/bin oder in Ihrem Benutzerpfad, um Berechtigungsprobleme zu vermeiden. Standardmäßig ist sie root.

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

Aufgabe 2: Oracle Cluster-Dateisystemversion 2 konfigurieren (OCFS2)

Oracle Cluster File System Version 2 (OCFS2) ist ein General-Purpose-Shared Disk-Dateisystem, das von der Oracle Corporation entwickelt und unter der GNU General Public License veröffentlicht wurde.

Um ein freigegebenes schreibbares Block-Volume zu verwalten, müssen Sie OCFS2 bereitstellen. Weitere Informationen finden Sie unter Eine einfache Anleitung zu Oracle Cluster File System (OCFS2) mit iSCSI auf Oracle Cloud Infrastructure.

  1. Führen Sie den folgenden Befehl auf beiden Knoten aus.

    sudo apt-get install ocfs2-tools -y
    
  2. Aktualisieren Sie den Wert von O2CB_ENABLED von false auf true in der Datei /etc/default/o2cb.

    O2CB_ENABLED=true
    
  3. Geben Sie den folgenden Code in die Datei /etc/ocfs2/cluster.conf ein.

    Hinweis: Achten Sie auf die Einrückung und das Format der Datei.

    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. Starten Sie jetzt den o2cb-Service.

    sudo /etc/init.d/o2cb start
    
  5. Formatieren Sie das Block-Volume-Gerät mit dem Dateisystem OCFS2. Führen Sie den folgenden Befehl nur auf dem ersten Knoten aus.

    Hinweis: Der Pfad des Geräts, den Sie in Schritt 3 notiert haben.

    sudo mkfs.ocfs2 "MyOCFS2Cluster" /dev/sd*
    
  6. Registrieren Sie das Cluster mit dem folgenden Befehl.

    sudo o2cb register-cluster ocfs2
    
  7. Hängen Sie das Block-Volume in das Verzeichnis ein, das für den Samba-Server zugewiesen ist. Beispiel: /mnt/smb.

    sudo mount /dev/sd* /mnt/smb
    
  8. Prüfen Sie den Clusterstatus mit dem folgenden Befehl.

    sudo o2cb list-nodes ocfs2
    
  9. Aktivieren Sie die Services mit dem folgenden Befehl.

    sudo systemctl enable o2cb
    sudo systemctl enable ocfs2
    
  10. Aktualisieren Sie fstab in /etc/fstab, um das Block-Volume beim Hochfahren automatisch zu mounten.

    Hinweis: Passen Sie das Gerät /dev/sd\* an Ihren Gerätenamen an.

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

Aufgabe 3: Samba-Cluster einrichten

Samba ermöglicht die Datei- und Druckfreigabe zwischen Computern, die unter Microsoft Windows und Unix ausgeführt werden. Es handelt sich um eine Implementierung von Dutzenden von Diensten und Protokollen, darunter: NetBIOS über TCP/IP (NBT) und SMB - manchmal auch als Common Internet File System (CIFS) bezeichnet.

  1. Installieren Sie Samba und Cluster Trivial Database (CTDB) auf beiden Knoten mit dem folgenden Befehl.

    sudo apt-get install ctdb samba samba-common winbind smbclient -y
    
  2. Bearbeiten Sie die Samba-Konfigurationsdatei.

    sudo nano /etc/samba/smb.conf
    

    Kopieren Sie die folgenden Parameter, und fügen Sie sie ein.

    Hinweis:

    • Sie müssen es entsprechend Ihrer Umgebung und den Fenstern domain/workgroup konfigurieren.
    • Der Parameter netbios name muss für alle Knoten identisch sein.
    [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. Um das Cluster einzurichten, bearbeiten Sie die CTDB-Konfigurationsdatei.

    sudo nano  /etc/ctdb/ctdb.conf
    

    Kopieren Sie die folgenden Parameter, und fügen Sie sie ein.

    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. Bearbeiten Sie die Knotenkonfigurationsdatei für die Konfiguration des Clusters.

    sudo nano /etc/ctdb/nodes
    

    Fügen Sie die IP-Adressen Ihrer Knoten hinzu.

    10.10.1.60
    10.10.1.29
    
  5. Bearbeiten Sie die Konfigurationsdatei der öffentlichen CTDB-Adresse (die Floating-IP-Adresse).

    Sudo nano /etc/ctdb/public_addresses
    

    Fügen Sie eine variable IP-Adresse hinzu.

    10.10.1.254/0 ens3
    
  6. Wir müssen das Skript hinzufügen, um die Floating-IP-Adresse auf OCI-Ebene zu verwalten und sie im Falle eines Failovers automatisch zu migrieren.

    Sudo nano /etc/ctdb/functions
    

    Fügen Sie den folgenden Code nach dem Abschnitt add_ip_to_iface () hinzu.

    Hinweis: Ändern Sie die Oracle Cloud-ID (OCID) und den Hostnamen mit der VNIC-OCID und dem Hostnamen der Knoten.

    ##### 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. Verwenden Sie den folgenden Befehl, um Fehler bei der Migration von Floating-IP-Adressen zu beheben, falls dies nicht funktioniert.

    sudo journalctl -u ctdb.service
    

Aufgabe 4: Windows Active Directory integrieren

  1. Um den Benutzerzugriff in den Windows Active Directory-Server zu integrieren, müssen wir Kerberos auf beiden Knoten installieren.

    sudo apt -y install winbind libpam-winbind libnss-winbind krb5-config samba-dsdb-modules samba-vfs-modules
    
  2. Mit dem folgenden Befehl können Sie Kerberos konfigurieren:

    sudo nano /etc/krb5.conf
    
  3. Prüfen Sie die Konfigurationsdatei mit dem folgenden Code.

    Hinweis: Denken Sie daran, die in Ihrer Umgebung konfigurierte Windows-Domain/Realm zu verwenden.

    [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. Der letzte Schritt besteht darin, beide Hosts mit dem folgenden Befehl mit der Windows-Domain zu verbinden.

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

Versuchen Sie nun, den Client mit der Floating-IP-Adresse und den Windows Active Directory-Benutzern (z.B. //10.10.1.254/samba_test) mit dem Samba-Server zu verbinden, und testen Sie die Geschäftskontinuität, wenn ein Knoten heruntergefahren oder neu gestartet wird.

Der neue Samba-Cluster ist jetzt fertig!

Danksagungen

Weitere Lernressourcen

Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Außerdem können Sie education.oracle.com/learning-explorer besuchen, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.