2017-03-08 73 views
2

我的問題有兩個部分:多AZ RDS測試故障切換和連接監控

  1. 什麼是啓動用於測試目的的RDS故障轉移的最佳方式是什麼?
  2. 如何在故障轉移期間監視連接,以便觀察AWS將用戶重新連接到備用實例所用的時間?

對於部分(1):如果正確地明白,所有實例的修改都在備用進行,然後AWS通過在翻轉CNAME到待機作爲主要被更新,所以如果我是故障切換做任何一種實例修改並選擇「立即應用」,它應該導致故障轉移,更正?

關於第(2)部分:我正在專門尋找一種監視Oracle RDS實例故障轉移的方法,無論是通過lambda函數,bash腳本還是其他方法。據我所知,即使我通過安全組允許所有ICMP流量,也無法使用RDS ping。使用telnet或SQL客戶端可以無障礙地連接。我想要的是某種方式在故障轉移期間定期ping數據庫以查看與連接字符串關聯的IP何時切換以及需要多長時間。有什麼建議麼?

回答

0
  1. 正確,RDS將在故障轉移實例上進行修改,然後進行故障轉移。按照他們的documentation

多AZ的可用性部署的好處還延伸到 計劃的維護和備份。在進行系統升級(如 OS修補或數據庫實例縮放)的情況下,在自動故障切換之前,這些操作在備用系統上首先應用 。因此,您的 可用性影響再次只是自動執行 故障切換完成所需的時間。

要模擬故障轉移,只需在重新啓動時重置reboot with failover,而不是重新啓動兩者。從鏈接的文檔:當你要模擬一個數據庫實例的失敗 進行測試,或者發生故障轉移後恢復運營到原AZ

重新啓動與故障恢復是有益的。

  • 寫腳本,定期間隔,連接着一個SQL客戶端,並進行快速選擇自己的喜好的表。您可以使用它來衡量故障轉移期間的真正停機時間;我們有一個非常相似的工具,當我們將RDS應用於RDS測試之前,我們在測試RDS中獲得修改的估計時使用該工具。我們的工具只需使用時間戳寫入控制檯,並且每隔幾秒鐘就會失敗/成功。在切換完成之前,該工具將在重新啓動,失敗期間以及再次成功之前寫入成功。
  • 其他資源:

    0

    更新這個:

    最後我用一個簡單的bash腳本:

    date; while true; date; do nc -vz DBNAME.REGION.rds.amazonaws.com PORT; sleep 1; done 
    

    注意:以上是針對netcat-openbsd。如果使用netcat-traditional,則需要對其進行修改。

    這每秒輪詢數據庫以查看是否仍可以連接。通常,當我運行這個程序,然後用故障轉移啓動重新啓動時,連接將在故障轉移過程中簡單地停頓,然後在故障轉移完成並且連接恢復時顯示超時錯誤,這可能是因爲故障轉移通常比重新啓動時間要長。如果重新啓動發生時間比故障轉移時間長,則可能會有一段時間,在重新啓動完成後拒絕連接。無論如何,使用這種方法,我能夠獲得一致的故障轉移時間2:08。但是,它看起來與我原先認爲的不同,大多數實例修改根本不涉及故障轉移。我測試了實例的大小調整以及更改選項組和參數組,並且沒有遇到任何停機時間。

    更改數據庫引擎的確會導致故障轉移。