ノート:

Windows Active Directoryを使用したHA SambaクラスタのOCIへのデプロイ

イントロダクション

Ubuntuインスタンス上のSambaをOracle Cloud Infrastructure (OCI)に自動フェイルオーバーして、高可用性(HA)を構成する方法について説明します。このソリューションは、堅牢で信頼性の高いファイル・サーバー・インフラストラクチャであり、クラスタ化されたServer Message Block (SMB)設定の機能を利用し、完全にライセンスフリーです。コストが関連するのは、消費量(oCPUおよびブロック・ボリューム・サイズ)のみです。

クラスタ化された SMBファイルサーバーサービスを組織に実装する利点は次のとおりです。

アーキテクチャ

イメージ

目標

前提条件

タスク1: 環境の設定

  1. 2つのUbuntu 22.04コンピュート・インスタンスを作成します。

  2. 両方のコンピュート・インスタンスで、ファイルを格納するディレクトリを確立し、Sambaサーバーを構成します。たとえば、/mnt/smbなどです。

  3. SMBデータストアに必要なサイズでブロック・ボリュームを作成し、両方のコンピュート・インスタンス(iSCSI、読取り/書込み- 共有可能)にアタッチします。詳細は、複数のインスタンスへのボリュームのアップロードを参照してください。

  4. 次のコマンドを使用して、アタッチされたブロック・ボリュームに割り当てられた開発名をメモします。

    sudo lsblk
    
  5. 最初のノードでセカンダリ・プライベートIPアドレスを割り当てます。これは浮動IPアドレスです。例: 10.10.1.254

  6. 両方のUbuntuインスタンスの/etc/hostsファイルを更新して、ユーザー認証に使用されるWindows Active Directoryサーバーを含め、すべてのノードのIPアドレスとホスト名を含めます。たとえば、10.10.1.60 smb110.10.1.29 smb210.10.1.59 ad.testad.oci testad.oci ADです。

  7. 必要に応じて、両方のUbuntuインスタンスでiptablesを構成します。

    ノート: Ubuntuインスタンスには、事前構成されたiptablesが付属しています。INPUTセクションの6番目の規則では、ほかのすべての規則が拒否されるため、それを削除するか、この規則の前に許可されている特定のプロトコルとポートを追加するかを選択できます。

  8. 両方のUbuntuインスタンスにOracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)をインストールして構成します。詳細は、OCI CLIをインストールして構成する(構成コマンド: oci setup config)を参照してください。

    ノート:権限の問題を回避するために、OCI CLIを/usr/binまたはユーザー・パスにインストールします。デフォルトではrootです。

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

タスク2: Oracle Cluster File Systemバージョン2 (OCFS2)の構成

Oracle Cluster File Systemバージョン2 (OCFS2)は、Oracle Corporationによって開発され、GNU General Public Licenseでリリースされた汎用共有ディスク・ファイル・システムです。

共有書込み可能ブロック・ボリュームを管理するには、OCFS2をデプロイする必要があります。詳細は、Oracle Cloud InfrastructureでのiSCSIを使用したOracle Cluster File System (OCFS2)の簡易ガイドを参照してください。

  1. 次のコマンドを両方のノードで実行します。

    sudo apt-get install ocfs2-tools -y
    
  2. /etc/default/o2cbファイルのO2CB_ENABLEDの値をfalseからtrueに更新します。

    O2CB_ENABLED=true
    
  3. /etc/ocfs2/cluster.confファイルに次のコードを入力します。

    ノート:ファイルのインデントおよびフォーマットは注意してください。

    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. 次に、o2cbサービスを起動します。

    sudo /etc/init.d/o2cb start
    
  5. OCFS2ファイル・システムでブロック・ボリューム・デバイスをフォーマットします。次のコマンドは最初のノードでのみ実行します。

    ノート:ステップ3で書き留めたデバイスのパス。

    sudo mkfs.ocfs2 "MyOCFS2Cluster" /dev/sd*
    
  6. 次のコマンドを使用してクラスタを登録します。

    sudo o2cb register-cluster ocfs2
    
  7. Sambaサーバーに割り当てられたディレクトリにブロックボリュームをマウントします。たとえば、/mnt/smbなどです。

    sudo mount /dev/sd* /mnt/smb
    
  8. 次のコマンドを使用して、クラスタのステータスを確認します。

    sudo o2cb list-nodes ocfs2
    
  9. 次のコマンドを使用してサービスを有効にします。

    sudo systemctl enable o2cb
    sudo systemctl enable ocfs2
    
  10. /etc/fstabfstabを更新して、起動時にブロック・ボリュームを自動的にマウントします。

    ノート:開発名に従って/dev/sd\*デバイスを調整します。

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

タスク3: Sambaクラスタの設定

Sambaでは、Microsoft Windowsと Unixで実行されているコンピュータ間でファイルと印刷を共有できます。これは、NetBIOS over TCP/IP (NBT)やSMB (Common Internet File System (CIFS))など、多数のサービスおよびプロトコルの実装です。

  1. 次のコマンドを使用して、SambaおよびCluster Trivial Database (CTDB)を両方のノードにインストールします。

    sudo apt-get install ctdb samba samba-common winbind smbclient -y
    
  2. Samba構成ファイルを編集します。

    sudo nano /etc/samba/smb.conf
    

    次のパラメータをコピーして貼り付けます。

    ノート:

    • 環境およびウィンドウdomain/workgroupに従って構成する必要があります。
    • netbios nameパラメータは、すべてのノードで同じである必要があります。
    [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. クラスタを設定するには、CTDB構成ファイルを編集します。

    sudo nano  /etc/ctdb/ctdb.conf
    

    次のパラメータをコピーして貼り付けます。

    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. クラスタを構成するためのノード構成ファイルを編集します。

    sudo nano /etc/ctdb/nodes
    

    ノードのIPアドレスを追加します。

    10.10.1.60
    10.10.1.29
    
  5. CTDBパブリック・アドレス構成ファイル(浮動IPアドレス)を編集します。

    Sudo nano /etc/ctdb/public_addresses
    

    浮動IPアドレスを追加します。

    10.10.1.254/0 ens3
    
  6. フローティングIPアドレスをOCIレベルで管理し、フェイルオーバー時に自動的に移行するスクリプトを追加する必要があります。

    Sudo nano /etc/ctdb/functions
    

    add_ip_to_iface ()セクションの後に次のコードを追加します。

    ノート:ノードVNICのOCIDおよびホスト名を使用して、Oracle Cloud Identifier (OCID)およびホスト名を変更します。

    ##### 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. フローティングIPアドレスの移行が機能しない場合は、次のコマンドを使用してトラブルシューティングします。

    sudo journalctl -u ctdb.service
    

タスク4: Windows Active Directoryの統合

  1. Windows Active Directoryサーバーとユーザーアクセスを統合するには、両方のノードに Kerberosをインストールする必要があります。

    sudo apt -y install winbind libpam-winbind libnss-winbind krb5-config samba-dsdb-modules samba-vfs-modules
    
  2. Kerberosを構成するには、次のコマンドを使用します。

    sudo nano /etc/krb5.conf
    
  3. 次のコードで構成ファイルを確認してください。

    ノート:ご使用の環境で構成されているWindowsドメイン/レルムを使用してください。

    [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. 最後の手順では、次のコマンドを使用して両方のホストを Windowsドメインに参加させます。

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

ここで、浮動IPアドレスおよびWindows Active Directoryユーザー(//10.10.1.254/samba_testなど)を使用してクライアントをSambaサーバーに接続し、1つのノードが停止または再起動された場合にビジネス継続性をテストします。

新しいSambaクラスタの準備ができました。

承認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。