Oracle 數據庫機的網路設計注意事項
隨著 Oracle Engineered Systems 的引入,DBA 更接近於基礎架構設計決策,並且期望至少對數據庫的網路設計要求有一些意見。至少這是我發現自己的情況:)
在部署 ODA 進行測試後,我發現自己使用了目前設置:
系統控制器 0 具有連接到典型邊緣交換機 Catalyst 2960 系列的公共綁定介面 (bond0)。管理介面 (bond1) 連接到相同類型的第二個邊緣交換機。
系統控制器 1 的公共介面同樣連接到第二個交換機,而管理介面連接到第一個交換機。
這樣,如果其中一個開關發生故障,操作員將能夠通過公共或管理界面訪問每個系統控制器以方便診斷。
在 Cisco 端,為 ODA 的 4 個綁定介面配置了 EtherChannel 組。這兩個交換機分別連接到網路的其餘部分,兩者之間沒有直接連結。
乍一看,這確實是一個合理的設計,但我對不同故障場景的思考越多,我似乎提出的問題就越多。
考慮到這些邊緣型交換機本身並不是冗餘的,集群能夠處理一台交換機由於電源故障而變得不可用或一台交換機無法轉發數據包似乎是相當重要的。
數據庫客戶端(在這種情況下為 zend 伺服器應用程序伺服器)每個都類似地通過綁定介面連接到兩個交換機之一。這就引出了關於負載均衡的一些問題:按照我對11gR2 RAC的理解,簡單的連接到SCAN地址,很可能會讓客戶端走很長一段路到主網再通過另一台交換機返回,這很難考慮要非常高效。
如果交換機發生故障或停止轉發數據包會怎樣?連接會通過 SCAN 找到可訪問的 VIP 偵聽器嗎?RAC 是否會以某種方式檢測到網路故障並將 SCAN 和 VIP 移動到具有工作且可訪問的公共介面的系統控制器?老實說,我看不出它會如何。
雖然在故障轉移場景中客戶端通過核心網路並返回很長一段路是可以接受的,但在正常生產中避免它肯定會很好。
我確信甲骨文對這一切應該如何協同工作有一個非常清晰的想法,但恐怕我只是看不清楚。
邊緣級/非冗餘交換機是否可以實現完全冗餘?我們能否以某種方式在生產和故障轉移情況下對客戶端連接的路由位置添加一些控制?也許有一種很好的方法可以將兩台交換機互連,以允許一台交換機上的客戶端和另一台交換機上的數據庫偵聽器之間直接進行通信?
在這一點上,我正在尋找應該應用於典型高可用性 ODA 實施的任何最佳實踐和基本網路設計注意事項。
希望這將對任何面臨為其 ODA 做出網路設計決策的 DBA 有用:)
更新:
ODA 在主動備份配置中配置了綁定。我認為這可能允許設置綁定上的每個介面都連接到不同的交換機,而無需任何交換機端配置。
任何人都知道是否是這種情況?
[root@oma1 ~]# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth2
事實證明,ODA 出廠時配置了主動備份債券。我已經對此進行了測試,無需任何交換機端 LACP/EtherChannel 配置即可正常工作,並且每個綁定連接都可以跨兩個交換機拆分。在我的測試中,沒有模擬故障或網路重新配置導致超過幾百毫秒的網路中斷。
這意味著可以使用任何本質上不是冗餘的第二層交換機為 Web 應用程序設置一個隔離的冗餘前端網路。
為了避免客戶端連接進入公司網路並通過另一台交換機返回(從而使生產依賴於該設備),可以擁有一個僅位於兩個邊緣交換機和它們之間的 EtherChannel 中繼上的專用 VLAN .
因此,該虛擬網段上僅存在應用程序伺服器和數據庫設備。
我看不到一種方法來控制從應用程序伺服器到數據庫偵聽器的連接採用哪條路徑,因此兩個交換機之間的連結必須是冗餘的,否則該連結會成為單點故障。這排除了使用不支持 VLAN 和 LACP 或 STP 的非託管交換機。
使用 Cisco Catalyst 2960 系列交換機,我相信 EtherChannel 和 Port Fast 的組合將是兩者之間可靠獨立連接的更好選擇。我還將在埠上使用 Port Fast 來連接到 ODA 和應用程序伺服器的所有綁定連接。
由於生產網路是隔離的,因此需要單獨的網路連接來進行管理、備份和連接到公司網路的其餘部分。
自然,為了讓這個前端生產網路完全自給自足,還必須解決對外部資源(例如 DNS 或身份驗證服務)的任何依賴關係。理想情況下,生產將能夠獨立繼續,而無需考慮數據中心或公司網路中其他任何地方的任何故障、持續維護或網路中斷。