Date: 5 1 月, 2023
在 AWS 中創建 HA Oracle 數據庫服務器集群
介紹作為一名負責為需要 Oracle 高可用性 (HA) 實例的關鍵業務應用程序創建 POC 的開發人員,我需要在 AWS EC2 中設置一個 Oracle EC2 HA 集群。你從哪裡開始?如果您像我們大多數人一樣,您將花費無盡的時間在谷歌上搜索您的下一個任務、閱讀文章、安裝指南、文檔和關於堆棧溢出的問題。 您會發現很多幾乎正確的答案,但它們永遠不會完全適合您的版本或環境。 更糟糕的是,您掉進了一個兔子洞,最終浪費了數天時間來構建一個無法正常工作的環境。
我將構建一系列博客,這些博客專注於設置 HA 環境以使用各種SIOS HA 解決方案例如:DataKeeper、LifeKeeper 和 SIOS Protection Suite。 如果您有我尚未涵蓋的即時需求,請告訴我,我會將您的配置移到我的待辦事項列表中。
謝謝您閱讀此篇。我希望它能讓你的生活更輕鬆。 我在下面有一個任務列表,如果您已經熟悉如何完成這些任務,您可以直接完成這些任務。 下面是執行每項任務的分步指南。
AWS HA Oracle 數據庫 SIOS Protection Suite for Linux
- 在 Linux 上啟動 2 個 Oracle 實例
- 讓 Xwindows 工作
- 連接到實例並安裝額外的磁盤
- 安裝 AWS 命令行工具包
- 配置安全/訪問
- 為虛擬 IP 創建路由條目
- 禁用 ENI 的源/目標檢查
- 編輯/etc/hosts
- 使用 VIP 主機名配置偵聽器
- 禁用 SELinux
- 安裝適用於 Linux 的 SIOS 保護套件
- 啟動 LifeKeeper
- 連接到第二台服務器
- 建立溝通路徑
- 創建 DataKeeper 資源
- 使用虛擬 IP 資源創建層次結構
- 創建 Oracle 偵聽器資源
- 使用 Oracle 數據庫創建層次結構
- 使用 EC2 創建層次結構
- 更改關機行為
- 測試故障轉移
1. 在 Linux 上啟動 2 個 Oracle 實例
在第一篇博客中,我們將使用 SIOS LifeKeeper for Linux 在 AWS 中為 Oracle 集群設置 HA 環境。這意味著排除所有先決條件。 我將在 Oracle Linux 8 AMI 上使用 aws-marketplace/Oracle 數據庫 19.8.0 企業版。這些經常變化,很難找到適合您需要的正確的。這個 AMI 是我的第 3 次嘗試,因為由於存儲庫、許可、註冊和安全問題,在雲中安裝任何東西,尤其是 Oracle 之類的東西都非常困難。這個 AMI 實際上可以工作,因為 Oracle 已經安裝在映像上。確保操作系統版本和 Oracle DB 版本受 SIOS 支持。可以檢查這裡.
我的實例有:
- 單一專有網絡
- 單一區域
- 每個服務器的不同可用區
- 用於數據庫存儲的附加驅動器
- 2 不同子網中每個實例的網絡接口
- 創建 2 個彈性 IP 地址並為每個服務器附加一個
我將一個額外的磁盤附加到數據庫實例,並為冗餘通信路徑附加一個 NIC。確保兩個 NIC 位於不同的子網上。這也意味著您必須手動創建和分配彈性 IP 地址才能連接到實例。
連接到實例並安裝附加磁盤。 我正在使用 Putty 和 Xming 連接我的實例。如果使用 Xming,請確保在嘗試建立連接之前運行 Xlaunch。
啟動實例後,您需要對新磁盤進行分區。最容易找到[ ls /dev/disk/by-path ]:
現在你需要分區磁盤磁盤:
接下來在新分區上創建文件系統mkfs.xfs :
我們現在將掛載文件系統山:
最後,我們將在 fstab 中添加自動掛載磁盤的條目:
請務必注意,您不需要為 Oracle 運行安裝。AMI 已經做到了這一點,並為您創建了一個數據庫。我刪除了使用此 AMI 預先配置的數據庫,並使用 DBCA 在 /data 磁盤上創建了一個新數據庫。我啟動了數據庫並創建了一個模式並使用 SQLPLUS 添加了數據。這一切都需要您讓 Xwindows 正常工作。
2. 讓 Xwindows 工作
可以使用 Xming for Windows 設置使用 Putty 的 Xdisplay。先安裝Xming。然後確保開啟了X11轉發,在x顯示位置輸入localhost:0.0,在x權限文件中輸入路徑和xming.exe可執行文件進行本地顯示:
這解決了 Windows 方面的問題,但您仍然需要修復 Linux 方面。首先編輯 /etc/ssh/sshd_config 並取消註釋“X11Forwarding yes”。接下來是查找正確的密鑰並將其添加到 Xauthority。如果您進行了任何用戶切換,您可能必須開始一個新會話。以 ec2-user 身份登錄後運行xauth列表這將為您提供您需要添加到 Xauthority 文件中的十六進制密鑰。切換到oracle用戶:蘇 – 甲骨文。然後運行xauth 添加 $DISPLAY 。 <從 xauth 列表複製的 hexkey> 。這會將信息存儲到 /home/oracle/.Xauthority 文件中。出口回到 ec2-user。
3.連接到實例並掛載額外的磁盤
我正在使用 Putty 和 Xming 連接我的實例。如果使用 Xming,請確保在嘗試建立連接之前運行 Xlaunch。
啟動實例後,您需要對新磁盤進行分區。最容易找到[ ls /dev/disk/by-path ]:
現在你需要分區磁盤磁盤:
接下來我們在新分區上創建文件系統mkfs.xfs :
此時我們想將 /u01 重命名為 /oracle 目錄,以便我們可以將新文件系統掛載到 /u01 上,這是我們使用 AMI 構建的服務器上 Oracle 所在的位置。
使用 mkdir /u01 創建安裝點並使用 mount 安裝卷。使用 mv /oracle /u01 將文件移動到新磁盤。這將需要一些時間,因為它大約是 11GB 的數據。
最後,我們將在 fstab 中添加自動掛載磁盤的條目:
請務必注意,您不需要為 Oracle 運行安裝。AMI 已經做到了這一點,並為您創建了一個數據庫。我啟動了數據庫,創建了一個模式,並使用 SQLPLUS 添加了數據。
4. 安裝 AWS cli 工具包
我們需要 awscli 套件;所以,當我們是 root 下載文件時捲曲“https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip”-o“awscliv2.zip”
解壓文件解壓 awscliv2.zip
安裝應用程序須藤./aws/安裝
接下來通過單擊控制台右上角的帳戶在 AWS 中設置訪問密鑰,然後選擇安全憑證
單擊創建訪問密鑰:
然後單擊下載 .csv 文件:
將此文件傳輸到您的服務器上,並使用您的 csv 文件中的密鑰 ID 和訪問密鑰配置 AWS aws配置命令:
測試它是否正在使用類似的東西: aws –no-paginate –no-cli-pager ec2 描述實例
5.配置安全/訪問
首先,我將 Oracle 用戶添加到 root 和 wheel 組,賦予它偽特權( Usermod -aG wheel oracle) .這將使 Oracle 帳戶成為 lkadmin 帳戶,使生活變得輕鬆。我將 sps.img 和許可證文件下載到兩台服務器上。
在安裝軟件之前,還需要完成一些先決條件步驟。首先為服務器配置安全組,使它們可以通過開放TCP端口5900-59010進行通信。同時打開 TCP 端口 81 和 82。 還要確保端口已為虛擬 IP 打開。
6.為虛擬IP創建路由條目
路由表需要更新才能使集群的虛擬 IP 正常工作。在此多子網集群配置中,虛擬 IP 需要位於分配給您的 VPC 的 CIDR 範圍之外。定義一個新路由,將流量定向到集群的虛擬 IP (172.30.0.101) 到主集群節點 (Oracle1) 從 VPC 儀表板中,選擇路由表,單擊編輯。添加“172.30.0.101/32”的路由,目標是主服務器上的主彈性網絡接口 (ENI):
7. 禁用 ENI 的源/目標檢查
在 Network Interfaces 下,一次選擇一個接口,然後在 Actions 下選擇 change source/dest。
只要您沒有收到身份驗證錯誤,就說明它已正確安裝和配置。
取消勾選使能夠盒子:
對所有接口重複。
8.編輯/etc/hosts
除非您已經設置了 DNS 服務器,否則您需要在兩台服務器上創建主機文件條目,以便它們可以正確地按名稱相互解析。
9. 使用 VIP 主機名配置監聽器
編輯或創建 $ORACLE_HOME/network/admin/listener.ora 文件以指向 oracle-vip:
10. 禁用 SELinux
編輯 /etc/sysconfig/selinux 文件並設置“SELINUX=disabled”
重新啟動服務器。如果此時服務器沒有恢復,則可能是您將 SELINUX 設置保留為允許並將 SELINUXTYPE 設置為禁用,這將使實例變磚。只需取消 AWS 中的捲與您的實例的關聯並將其掛載到mount -o rw, nouuid {設備} {掛載目錄}命令到新的或現有的工作實例。編輯/{掛載目錄]/etc/sysconfig/selinux文件,修改錯誤。保存文件,卸載並取消卷與此實例的關聯,然後將其重新附加到舊實例。
11. 為 Linux 安裝 SIOS 保護套件
接下來,我以 root 身份通過安裝映像文件來安裝 SIOS 保護套件mount /home/ec2-user/sps.img /mnt/ -t iso9660 -o loop . 運行安裝程序/mnt/設置:
在 LifeKeeper 身份驗證下,我向下滾動到 lkadmin 組,按回車鍵並將 oracle 添加到“lkadmin”組:
選擇“確定”,然後選擇“完成”並按回車鍵。下一步滾動到安裝許可證密鑰文件並按回車鍵:
從這裡輸入您的許可證文件的位置和名稱:
接下來,我選擇 Recovery Kit Selection Menu 並按下回車鍵:
這裡我選擇網絡:
按空格鍵選擇 LifeKeeper Recovery Kit for EC2。 Tab 到 Done 並回車。接下來我選擇數據庫菜單,向下滾動並在 LifeKeeper Oracle RDBMS 恢復工具包上點擊空格鍵:
Tab 到 Done 或按 D 並向下滾動到 Storage 並按 Enter。接下來我按下空格鍵並選擇 DataKeeper for Linux:
Tab 到 Done 並按回車鍵或按 d 退出恢復工具包選擇,然後按 Tab 鍵到 Done 或按 D 退出 Main Configuration 菜單:
確保 LifeKeeper Startup After Install 被選中,然後最後一個選項卡完成或點擊 d,我們會看到安裝確認屏幕:
在這裡按 enter 或 y,安裝將開始。
12.啟動LifeKeeper
使用以下命令啟動 LifeKeeper GUI /opt/LifeKeeper/bin/lkGUIapp如果失敗,可能是因為您沒有登錄 .Xauthority 文件的帳戶的幻數。我以 oracle 身份登錄,然後做了一個須藤-我紮根。因此,如果我的 gui 未加載,我會將 /home/oracle/.Xauthority 文件複製到 /root :
在這裡我以 oracle 身份登錄:
13.連接到第二個服務器
然後單擊 Cluster Connect 按鈕
以 oracle 身份登錄:
14.建立溝通渠道
單擊“創建通信路徑”按鈕:
如果出現故障,請確保禁用防火牆和 iptables。下一步:
下一步:
選擇您的第一個 IP 地址並點擊下一步:
選擇遠程IP:
下一步:
點擊創建:
下一步:
現在點擊完成:接下來我們需要通過使用輔助地址重複步驟 14 來創建第二個通信路徑。
成功建立兩條路徑後,服務器應變為綠色。
15. 創建 DataKeeper 資源
單擊“創建資源層次結構”按鈕:
選擇數據複製並點擊下一步:
點擊下一步(智能意味著在故障轉移後您需要手動故障回复):
下一步:
選擇您的主服務器並點擊下一步:
選擇複製現有文件系統並點擊下一步:
選擇現有的掛載點並點擊下一步:
創建一個數據複製資源標籤並點擊下一步:
為獲得最佳性能,位圖文件應放置在臨時卷上。 出於測試目的,可以將位圖放置在 OS 磁盤上,如上所示。 選擇位圖文件位置並點擊下一步:
為啟用異步複製選擇否,然後單擊下一步:
選擇目標服務器並點擊下一步:
選擇 Switchback 類型並點擊下一步:
選擇模板優先級並點擊下一步:
選擇目標優先級並點擊下一步:
下一步:
選擇目標磁盤並點擊下一步:
下一步:
下一步:
選擇要用於復制的網絡端點並點擊下一步:
選擇掛載點,點擊下一步:
選擇資源標籤並點擊下一步:
點擊完成:
點擊完成:
如果您單擊 /u01,您將看到音量同步:
16. 使用虛擬 IP 資源創建層次結構
單擊創建資源按鈕:
選擇IP並點擊下一步:
選擇 Switchback 類型並點擊下一步:
選擇主服務器並點擊下一步:
輸入第 6 步中的虛擬 IP 地址,然後點擊下一步:
輸入 VIP 的子網掩碼並點擊下一步:
進入網絡界面,點擊下一步
輸入資源標籤並點擊下一步:
創建成功後點擊下一步:
選擇目標服務器並點擊下一步:
選擇 switchback 類型並點擊下一步:
選擇優先級並點擊下一步:
選擇優先級並點擊下一步:
完成後點擊下一步:
下一步:
選擇適當的網絡掩碼並點擊下一步:
選擇接口並點擊下一步:
選擇資源標籤並點擊擴展:
成功完成後點擊完成:
驗證後點擊完成。
17. 創建 Oracle Listener 資源
在嘗試在 LifeKeeper 中配置這些資源之前,請確保數據庫和偵聽器正在運行。單擊創建資源按鈕:
選擇 Oracle Database Listener 並點擊下一步:
選擇主服務器並點擊下一步:
輸入監聽器配置文件路徑和文件名,然後點擊下一步:
下一步:
輸入偵聽器可執行文件的路徑並點擊下一步:
選擇保護級別並點擊下一步:
選擇恢復級別並點擊下一步:
如果需要,選擇與偵聽器關聯的 IP 地址,然後點擊下一步:
輸入偵聽器標籤名稱並點擊創建:
下一步:
點擊接受默認值以在第二台服務器上構建資源:
點擊完成:
單擊完成並展開 LSNR 和 /u01:
18. 使用 Oracle 數據庫創建層次結構
單擊“創建資源層次結構”按鈕:
選擇 Oracle 數據庫並點擊下一步:
選擇 Switchback 類型並點擊下一步:
選擇服務器並點擊下一步:
選擇數據庫名稱並點擊下一步(如果出現無法找到主目錄的錯誤,請確保數據庫正在運行):
輸入 sysdba 用戶名並點擊下一步:
輸入該帳戶的密碼,然後點擊下一步:
選擇 Oracle 監聽器並點擊下一步:
點擊創建:
創建成功後選擇下一步:
選擇接受默認值:
選擇完成:
點擊完成:擴展樹以查看所有資源:
19. 使用 EC2 創建層次結構
單擊“創建資源層次結構”按鈕:
選擇 Amazon EC2 並點擊 Next>
選擇智能並點擊下一步>
選擇您的主服務器並點擊 Next>
選擇 EC2 資源類型(我們在此示例中使用後端集群)並點擊 Next>
選擇 IP 資源並選擇 Next>
選擇 EC2 資源標籤名稱並點擊創建
成功創建資源後,點擊 Next> 幾秒鐘後,預擴展嚮導將彈出。點擊接受默認值:
檢查成功完成後,再次點擊接受默認值:
點擊完成,驗證後點擊完成:
配置完成。現在我們可以測試故障轉移。
20. 改變關機行為
默認情況下,LifeKeeper 不會故障轉移如果您只是關閉或重新啟動服務器,則資源不足。 如果您想在關閉服務器之前移動工作負載,您應該在關閉活動節點之前手動將資源移動到備用服務器。 但是,您可能希望更改默認行為以方便測試。 這是通過更改關機策略來控制的,如下所示。
右鍵單擊您的主服務器並選擇屬性:
在 General 選項卡下,將 Shutdown Strategy 更改為 Switchover Resources,然後點擊 Apply:
接下來從服務器下拉菜單中選擇輔助服務器並驗證設置更改:點擊確定:
21. 測試故障轉移
我正在從輔助服務器運行 lkGUIapp。如果您在主服務器上,退出 LifeKeeper GUI 並從輔助服務器運行它。
展開所有資源層次結構並打開與主服務器的 SSH 會話。
我也在運行 ping -i 5 到 oracle-vip:
關閉主服務器:
在我的案例中,您可以看到 IP 停止響應的時間 < 25 秒。我以 5 秒的間隔錯過了 4 次 20-23 次。現在一切都在備份服務器上處於活動狀態。因為我們的主節點仍然關閉,所以我們在層次結構上收到警告。
如果您將切回切換為智能,一旦啟動主服務器,您將必須手動在主服務器上啟動該服務。在嘗試將其投入使用之前,請確保主服務器處於 InSync 狀態:
右鍵單擊 cdb1 的 StandBy 按鈕並選擇 In Service…
點擊服務
點擊完成。
磁盤重新同步需要幾分鐘時間,但最終會完成。
恢復所有內容後,我們現在在 AWS 中擁有一個可用於開發的高可用性 Oracle 數據庫。
經許可轉載自信息系統