附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特有的值。
在 OCI 上使用 Windows Active Directory 部署 HA Samba 叢集
簡介
我們將討論如何在 Ubuntu 執行處理上自動容錯移轉 Samba,以設定高可用性 (HA) 至 Oracle Cloud Infrastructure (OCI)。此解決方案是一個健全且可靠的檔案伺服器基礎架構,充分運用叢集伺服器訊息區塊 (SMB) 的強大功能並完全免費授權。此費用僅與使用量相關 (oCPU 和區塊磁碟區大小)。
在組織中實作叢集 SMB 檔案伺服器服務的優點如下:
-
可靠性:叢集組態可確保高可用性、將停機風險降到最低,並確保持續存取重要檔案。
-
容錯移轉:發生伺服器故障時,叢集設定提供自動容錯移轉,保證對檔案的存取不中斷,並維持業務連續性。
-
資源使用率:有效率的資源配置可確保伺服器資源的最佳使用率、將生產力最大化,同時將營運成本降到最低。
-
高效能:實作叢集 SMB 檔案伺服器是建立彈性、高效能 IT 環境的策略性行動,以滿足不斷演變的業務需求。
架構
目標
- 在支援與 Windows Active Directory 整合的 SMB 協定的 HA 中部署可靠的檔案伺服器。
必要條件
-
存取 OCI 租用戶。
-
兩個 Linux Ubuntu VM。
-
一個區塊磁碟區。
作業 1:設定環境
-
建立兩個 Ubuntu 22.04 運算執行處理。
-
在兩個運算執行處理上,建立您要儲存檔案的目錄並設定 Samba 伺服器。例如:
/mnt/smb
。 -
建立 SMB 資料存放區所需大小的區塊磁碟區,然後將它連附至這兩個運算執行處理 (iSCSI,read/write - sharable)。如需詳細資訊,請參閱將磁碟區附加至多個執行處理。
-
請注意,使用下列命令指定給連附之區塊磁碟區的 dev 名稱。
sudo lsblk
-
在第一個節點上指定次要專用 IP 位址。這是一個浮動 IP 位址。例如:
10.10.1.254
。 -
更新兩個 Ubuntu 執行處理上的
/etc/hosts
檔案,以包含所有節點的 IP 位址和主機名稱,包括將用於使用者認證的 Windows Active Directory 伺服器。例如:10.10.1.60 smb1
、10.10.1.29 smb2
、10.10.1.59 ad.testad.oci testad.oci AD
。 -
視需要在兩個 Ubuntu 執行處理上設定
iptables
。注意:Ubuntu 執行處理隨附預先設定的 iptables。INPUT 區段中的第六個規則會拒絕其他所有項目,因此您可以選擇刪除它,或新增在此規則之前允許的特定協定和連接埠。
-
在兩個 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 通用公共授權條款釋出的一般用途共用磁碟檔案系統。
若要管理共用可寫入區塊磁碟區,我們必須部署 OCFS2。如需詳細資訊,請參閱 在 Oracle Cloud Infrastructure 上使用 iSCSI 的 Oracle Cluster File System 簡易指南 (OCFS2) 。
-
請在兩個節點上執行下列命令。
sudo apt-get install ocfs2-tools -y
-
將
O2CB_ENABLED
的值從 false 更新為/etc/default/o2cb
檔案中的 true 。O2CB_ENABLED=true
-
在
/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
-
現在,啟動
o2cb
服務。sudo /etc/init.d/o2cb start
-
使用 OCFS2 檔案系統格式化區塊磁碟區裝置。請只在第一個節點上執行下列命令。
注意:步驟 3 中記下之裝置的路徑。
sudo mkfs.ocfs2 "MyOCFS2Cluster" /dev/sd*
-
使用下列命令註冊叢集。
sudo o2cb register-cluster ocfs2
-
將區塊磁碟區掛載到指定給 Samba 伺服器的目錄上。例如:
/mnt/smb
。sudo mount /dev/sd* /mnt/smb
-
使用下列命令檢查叢集狀態。
sudo o2cb list-nodes ocfs2
-
使用下列指令來啟用服務。
sudo systemctl enable o2cb sudo systemctl enable ocfs2
-
更新
/etc/fstab
中的fstab
,以在啟動時自動掛載區塊磁碟區。注意:請根據您的開發名稱調整
/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)。
-
使用下列命令,在兩個節點上安裝 Samba 和 Cluster Trivial Database (CTDB)。
sudo apt-get install ctdb samba samba-common winbind smbclient -y
-
編輯 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
- 您必須根據環境和視窗
-
若要設定叢集,請編輯 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
-
編輯用於設定叢集的節點組態檔。
sudo nano /etc/ctdb/nodes
新增節點的 IP 位址。
10.10.1.60 10.10.1.29
-
編輯 CTDB 公用位址組態檔 (浮動 IP 位址)。
Sudo nano /etc/ctdb/public_addresses
新增浮動 IP 位址。
10.10.1.254/0 ens3
-
我們必須新增此命令檔來管理 OCI 層次的浮動 IP 位址,並在容錯移轉時自動進行移轉。
Sudo nano /etc/ctdb/functions
在 add_ip_to_iface () 區段之後新增下列程式碼。
注意: 請將 Oracle Cloud ID (OCID) 和主機名稱變更為您的節點 VNIC 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
-
若無法進行浮動 IP 位址移轉,請使用下列命令對其進行疑難排解。
sudo journalctl -u ctdb.service
工作 4:整合 Windows Active Directory
-
若要整合使用者存取與 Windows Active Directory 伺服器,我們必須在兩個節點上安裝 Kerberos。
sudo apt -y install winbind libpam-winbind libnss-winbind krb5-config samba-dsdb-modules samba-vfs-modules
-
使用下列指令配置 Kerberos。
sudo nano /etc/krb5.conf
-
請檢查具有下列程式碼的組態檔。
注意:請記得使用環境中設定的 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
-
最後一個步驟是使用下列命令將兩個主機結合至 Windows 網域。
Sudo net ads join -U Administrator -S testad.oci
現在,嘗試使用浮動 IP 位址和 Windows Active Directory 使用者 (例如://10.10.1.254/samba_test
) 將您的從屬端連線至 Samba 伺服器,並在一個節點關閉或重新啟動時測試業務連續性。
新的 Samba 叢集已就緒 。
相關連結
認可
- 作者 - Marco Santucci (EMEA Enterprise Cloud 解決方案架構師)
其他學習資源
瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Deploy an HA Samba Cluster with Windows Active Directory on OCI
F92347-02
February 2024
Copyright © 2024, Oracle and/or its affiliates.