我們遇到以下情況:在伺服器上,我們必須設定 2 個 IP,它們將引用相同的 FQDN。在伺服器上執行的應用程式中,我們正在設定 FQDN。一旦存取一個 IP(基於 FQDN)出現問題,伺服器將使用分配給相同 FQDN 的第二個 IP:
範例:
/etc/hosts
將包含
1.1.1.1 server1.google.com
1.1.2.1 server1.google.com
一旦造訪1.1.1.1出現問題,伺服器將使用server1.google.com作為1.1.2.1
我們可以使用這樣的東西嗎?還有其他選擇嗎?
答案1
/etc/hosts 不會循環。它只傳回它找到的第一個匹配項。
如果您想要循環解析,則需要一個完整的 DNS 伺服器來執行此操作。
此外,循環 DNS 並不是一個很好的負載平衡工具,而這正是您想要的。儘管看起來很方便,但名稱解析並不是執行您想要執行的操作的層。
答案2
如果不想或無法更改應用程序,則必須在運行應用程式的伺服器和要連接的兩台伺服器之間的某個位置放置負載平衡層。這將允許:
- 繼續使用相同的 DNS 名稱,甚至相同的 IP 位址(負載平衡器將建立虛擬 IP)
- 依序定向到所有伺服器
- 避免連接到任何出現問題時會消失的伺服器
- 如有必要,允許與相同目標保持身份驗證會話
對於負載平衡解決方案,您可以查看Linux LVS 專案。
如果支援的話,您還可以更改您的應用程序,以在任何連接字串中提供兩個 IP。將使用第一個 IP,如果沒有回應,則將使用第二個 IP。但這在很大程度上取決於用於建立應用程式的語言。例如,這可以透過 Java 資料庫連接器實現。