Observação:

Implantar um Cluster HA Samba com o Windows Active Directory no OCI

Introdução

Discutiremos como configurar alta disponibilidade (HA) com failover automático do Samba em instâncias do Ubuntu na Oracle Cloud Infrastructure (OCI). Esta solução é uma infraestrutura de servidor de arquivos robusta e confiável, aproveitando o poder de uma configuração de Server Message Block (SMB) em cluster e completamente livre de licença. O custo está relacionado apenas ao consumo (tamanho de OCPU e volume em blocos).

Os benefícios de implementar um serviço de servidor de arquivos SMB clusterizado em uma organização são:

Arquitetura

image

Objetivo

Pré-requisitos

Tarefa 1: Configurar o Ambiente

  1. Crie duas instâncias de computação do Ubuntu 22.04.

  2. Em ambas as instâncias de computação, estabeleça o diretório no qual você pretende armazenar arquivos e configure o servidor Samba. Por exemplo: /mnt/smb.

  3. Crie um volume em blocos com o tamanho necessário para seu armazenamento de dados SMB e anexe-o às duas instâncias de computação (iSCSI, leitura/gravação - compartilhável). Para obter mais informações, consulte Anexando um Volume a Várias Instâncias.

  4. Observe o nome do dispositivo designado ao volume em blocos anexado usando o comando a seguir.

    sudo lsblk
    
  5. Designe um endereço IP privado secundário no primeiro nó. Este é um endereço IP flutuante. Por exemplo: 10.10.1.254.

  6. Atualize o arquivo /etc/hosts em ambas as instâncias do Ubuntu para incluir os endereços IP e os nomes de host de todos os nós, incluindo o servidor do Windows Active Directory que será usado para autenticação do usuário. Por exemplo: 10.10.1.60 smb1, 10.10.1.29 smb2, 10.10.1.59 ad.testad.oci testad.oci AD.

  7. Configure o iptables nas duas instâncias do Ubuntu de acordo com as necessidades.

    Observação: As instâncias do Ubuntu vêm com o iptables pré-configurado. A sexta regra na seção INPUT rejeita todo o resto, portanto, você tem a opção de excluí-la ou adicionar protocolos e portas específicos que são permitidos antes dessa regra.

  8. Instale e configure a CLI (Command Line Interface) do Oracle Cloud Infrastructure em ambas as instâncias do Ubuntu. Para obter mais informações, consulte Instalar a CLI do OCI e configurá-la (comando de configuração: oci setup config).

    Observação: Instale a CLI do OCI em /usr/bin ou no caminho do usuário para evitar problemas de permissão; por padrão, ela é root.

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

Tarefa 2: Configurar o Oracle Cluster File System versão 2 (OCFS2)

O Oracle Cluster File System versão 2 (OCFS2) é um sistema de arquivos de disco compartilhado para fins gerais desenvolvido pela Oracle Corporation e lançado sob a GNU General Public License.

Para gerenciar um volume em blocos gravável compartilhado, temos que implantar OCFS2. Para obter mais informações, consulte Um Guia Simples do Sistema de Arquivos do Oracle Cluster (OCFS2) usando iSCSI no Oracle Cloud Infrastructure.

  1. Execute o comando a seguir em ambos os nós.

    sudo apt-get install ocfs2-tools -y
    
  2. Atualize o valor de O2CB_ENABLED de false para true no arquivo /etc/default/o2cb.

    O2CB_ENABLED=true
    
  3. Informe o código a seguir no arquivo /etc/ocfs2/cluster.conf.

    Observação: cuide do recuo e do formato do arquivo.

    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. Agora, inicie o serviço o2cb.

    sudo /etc/init.d/o2cb start
    
  5. Formate o dispositivo de volume em blocos com o sistema de arquivos OCFS2. Execute o comando a seguir somente no primeiro nó.

    Observação: O caminho do dispositivo que anotamos na etapa 3.

    sudo mkfs.ocfs2 "MyOCFS2Cluster" /dev/sd*
    
  6. Registre o cluster usando o comando a seguir.

    sudo o2cb register-cluster ocfs2
    
  7. Monte o volume em blocos no diretório designado para o servidor Samba. Por exemplo: /mnt/smb.

    sudo mount /dev/sd* /mnt/smb
    
  8. Verifique o status do cluster usando o comando a seguir.

    sudo o2cb list-nodes ocfs2
    
  9. Ative os serviços usando o comando a seguir.

    sudo systemctl enable o2cb
    sudo systemctl enable ocfs2
    
  10. Atualize o fstab em /etc/fstab para montar o volume em blocos automaticamente na inicialização.

    Observação: Ajuste o dispositivo /dev/sd\* de acordo com o seu nome de desenvolvimento.

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

Tarefa 3: Configurar o Cluster do Samba

O Samba permite o compartilhamento de arquivos e impressões entre computadores em execução no Microsoft Windows e no Unix. É uma implementação de dezenas de serviços e protocolos, incluindo: NetBIOS sobre TCP/IP (NBT) e SMB - às vezes referido como Common Internet File System (CIFS).

  1. Instale o Samba e o Cluster Trivial Database (CTDB) em ambos os nós usando o comando a seguir.

    sudo apt-get install ctdb samba samba-common winbind smbclient -y
    
  2. Edite o arquivo de configuração do Samba.

    sudo nano /etc/samba/smb.conf
    

    Copie e cole os parâmetros a seguir.

    Observação:

    • Você precisa configurá-lo adequadamente com seu ambiente e janelas domain/workgroup.
    • O parâmetro netbios name deve ser o mesmo para todos os seus nós.
    [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 o cluster, edite o arquivo de configuração do CTDB.

    sudo nano  /etc/ctdb/ctdb.conf
    

    Copie e cole os parâmetros a seguir.

    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 o arquivo de configuração de nós para configurar o cluster.

    sudo nano /etc/ctdb/nodes
    

    Adicione os endereços IP dos seus nós.

    10.10.1.60
    10.10.1.29
    
  5. Edite o arquivo de configuração do endereço público CTDB (o endereço IP flutuante).

    Sudo nano /etc/ctdb/public_addresses
    

    Adicionar endereço IP flutuante.

    10.10.1.254/0 ens3
    
  6. Temos que adicionar o script para gerenciar o endereço IP flutuante no nível do OCI e migrá-lo automaticamente em caso de failover.

    Sudo nano /etc/ctdb/functions
    

    Adicione o código a seguir após a seção add_ip_to_iface ().

    Observação: Altere o OCID (Oracle Cloud Identifier) e o nome do host com o OCID das VNICs dos seus nós e o nome do 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. Use o comando a seguir para diagnosticar e solucionar problemas de migração de endereço IP flutuante se ele não funcionar.

    sudo journalctl -u ctdb.service
    

Tarefa 4: Integrar o Windows Active Directory

  1. Para integrar o acesso do usuário ao servidor do Windows Active Directory, temos que instalar o Kerberos em ambos os nós.

    sudo apt -y install winbind libpam-winbind libnss-winbind krb5-config samba-dsdb-modules samba-vfs-modules
    
  2. Use o comando a seguir para configurar o Kerberos.

    sudo nano /etc/krb5.conf
    
  3. Verifique o arquivo de configuração com o código a seguir.

    Observação: Lembre-se de usar o domínio/realm do Windows configurado em seu 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. A última etapa é unir os dois hosts ao domínio do Windows usando o comando a seguir.

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

Agora, tente conectar seu cliente ao servidor Samba usando o endereço IP flutuante e os usuários do Windows Active Directory (por exemplo: //10.10.1.254/samba_test) e teste a continuidade dos negócios se um nó for encerrado ou reiniciado.

O novo cluster do Samba está pronto agora!

Confirmações

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.