網站的簡單故障轉移(監控+動態DNS)

在本文中,我想展示如何輕鬆且免費地使用監控組合為網站(或任何其他網路服務)制定故障轉移方案 奧克爾 和動態 DNS 服務。 也就是說,如果主網站出現任何問題(從頁面上的「PHP 錯誤」問題到空間不足或線上商店中訂單數量可疑),新訪客將被定向到第二個(第三個,等等)一個已知的工作伺服器,或者在“抱歉”頁面上,他們會禮貌地解釋“存在問題,我們已經意識到並且已經在修復它,我們很快就會修復它”(在這種情況下,您實際上已經知道並且可以修復)。

有故障轉移還是沒有故障轉移?

在出現問題之前,沒有太大區別。 但是,當發生這種情況時,如果沒有故障轉移,通常會發生以下情況:您試圖快速找出問題所在,但它不起作用(備份未部署,軟體由於某種原因無法按照文件中應有的方式工作等),但是沒有時間,沒有伺服器 - 網站到處亂放,客戶在打電話,每個人都處於邊緣,你試圖以某種方式“用磁帶”粗略地修復它,然後它似乎啟動了拄著拐杖,帶著生命。 你認為在業餘時間你需要更詳細地弄清楚並把一切重做得漂亮,但沒有什麼比暫時的更永久的了。

現在,在具有檔案管理器的漂亮版本中這是如何發生的:

  • 發生錯誤
  • 自動偵測到錯誤
  • 警報已發出
  • 切換到其中一台備份伺服器進行轉移
  • 冷靜地、毫不驚慌地,問題得到解決、修正,伺服器重新投入運作。

當然,這個方案也可能有自己的問題,但是,該方案是線性的,每個階段都很簡單,最主要的是它可以單獨調試,所以這個方案失敗的機會要低得多,並且所有操作都可以自動化並快速執行(與尋找和修復未知的史詩垃圾的任務不同)。 你的飛機降落在遙遠的國家,你打開手機,看到電報中的通知,伺服器崩潰了,但一切都很好,備份伺服器已經激活,你可以繼續你的旅程,你不需要從最近的有WiFi的咖啡館飛回來或透過SSH 進行修復。 等更方便的時候你就會明白了。

未來已經來臨!

以前,導致故障轉移解決方案常常不可接受的主要問題是它所花費的成本。 或者有必要購買昂貴的硬體(並邀請更昂貴的專家)。 或者根據指南集體農場一些複雜的東西(我什至遇到了一個選項,其中兩台伺服器另外用零調製解調器電纜連接,並且它們通過它發送心跳,以便備份伺服器在正確的時間識別它並接管控制)。 現在有更簡單、免費的方法。 如果您有一個有貓的網站,那麼您沒有理由不為其實施故障轉移!

嗯,此外,對於故障轉移方案,您需要另一台伺服器(可能不只一台),以前這是一筆很大的開支,現在您可以花幾分錢購買 VDS。

最可靠的貓網站

為了實際說明 okerr + 動態 dns 的解決方案,我們推出了帶有 cats 的網站 貓.oker.com。 我們討厭貓,所以那裡不會有很多貓。 總共有三個站點,每個站點看起來都大致相同(都在同一個模板上),但有不同的小貓,以便於區分,並且每個站點都編寫了技術信息以了解故障轉移是如何工作的。 該頁面每 1 分鐘自行更新一次,但您始終可以在瀏覽器中按一下「重新載入」。

技術資訊中有一行「status=OK」。 有時伺服器會假裝出現問題並寫入狀態=ERR。 主伺服器似乎在每小時 20 分鐘(0:20、1:20、2:20…)「崩潰」。 40分鐘備份伺服器。 最後一個伺服器(“抱歉”伺服器)始終運行。 每小時0分,主備伺服器進行「恢復」。

網站的簡單故障轉移(監控+動態DNS)

如果您打開該網站並將其保留在選項卡中,您將看到它永遠不會崩潰(儘管每個單獨的伺服器都會定期模擬問題),並且如果伺服器出現問題,它只會在實時伺服器之間「運行」。 伺服器的圖片、名稱和地址及其角色將會變更。 有時您可以捕捉到狀態 = ERR 的時刻(問題已經存在,但整個故障轉移方案尚未起作用),但下一次更新將向您顯示工作網站的頁面。

okrr + 動態 DNS 上的故障轉移

讓我們看看它在幕後是如何運作的。 文件管理器的任務是確保 cat.okerr.com 位址始終指向工作伺服器的 IP 位址。
在 okerr 中託管我們的貓網站的每台伺服器後面都有一個指示器,每分鐘檢查一次其狀態。

網站的簡單故障轉移(監控+動態DNS)

在此螢幕截圖中,我們看到如何從 alpha.okerr.com 伺服器檢查網站 cat.okerr.com。 該頁面應該包含 status=OK,正如我們在上面看到的,我們的指示狀態現在是 OK。 當伺服器「崩潰」時,就會出現ERR。 (這只是指標的一個例子,okerr正在監控,所以你可以附加任何類型的指標,例如檢查磁碟上的可用空間、資料庫中的新訂單數量,甚至邏輯指標,例如,晚上會有一些錯誤標準,白天則有其他)。

在專案設定中,我們使用這些指標建立了一個故障轉移方案:

網站的簡單故障轉移(監控+動態DNS)

此方案共有三個指標(三台伺服器),優先權不同。 該網站的主伺服器是 charlie,如果它不起作用(它不會有「狀態 = OK」或根本不可用),則為 bravo,在後一種情況下為 alpha。 頁面右側顯示不同伺服器上 DNS 記錄的狀態。

對於那些注意到使用了 cat.he.okerr.com 這個名稱的人:我們使用了稍微複雜的方案。 我們不只是更改 cat.okerr.com 的 DNS 記錄,而是更改 cat.he.okerr.com(在動態 DNS 提供者上) 颶風電氣),而cat.okerr.com是一個CNAME(別名),不會改變,總是指向cat.he.okerr.com。 我們只是更喜歡 Hurricane 作為動態 DNS,它具有管理單一條目(而不是整個區域)的金鑰,我們認為它更安全。 您也不必在 okerr 中指定關鍵密碼來管理整個網域,而只需指定子網域或記錄的金鑰密碼。

從下跌到漲

該方案如何逐步運作:

  1. 伺服器出現問題(模擬)
  2. okerr感測器每分鐘檢查一次每個伺服器的狀態,並向okerr中的主專案伺服器報告
  3. 對應的伺服器指示燈由OK變成ERR
  4. 當指示燈狀態變更時,重新計算failover,計算需要設定哪個位址(如果需要的話。例如主伺服器正在工作,同時備份伺服器掛掉了,則不會發生任何變更)製成)
  5. 該位址被報告給動態 DNS 服務。 完成此階段後,您將在右側看到“已同步”狀態。
  6. 很快(幾秒鐘)該記錄將到達您網域的 DNS 伺服器(對於 cat 站點,它是 ns1-ns5.he.net)。
  7. 從這一刻起,一些用戶將已經在新的即時伺服器上。 但並非世界上所有的 DNS 伺服器都已更新記錄,舊記錄可能仍緩存在某處。 您可以看到公共 DNS 伺服器上的資料如何“跳舞”,顯示新值或舊值。 如果更新故障轉移設定頁面,運營商本身將向 DNS 伺服器請求新資料。
  8. 資料穩定後,舊的快取記錄到處都腐爛了——所有 100% 的請求都會轉到新伺服器。

為了加速第 7 階段(通常是最長的階段),動態 DNS 記錄的 TTL 應設定得盡可能低。 通常,服務允許 90-120 秒的間隔。 這是一個完全合理的妥協。

另外

所有這些都可以在一個晚上完成設定(如果您已經有備份伺服器)。 oker 和動態 DNS 服務都是免費的。 要在 oker 中獲得更多檢查並縮短驗證週期,您需要完成培訓(從您的個人資料頁面)。 完成後,等級立即提升(每小時20個指標+1個快速,10分鐘)。 如果其中很少,請寫信給 [電子郵件保護],很有可能會有增加的可能(到目前為止一直有機會,我從來沒有拒絕過,相反,我自己提供了)。 只是一開始我並不想向所有人承諾一切,我不確定自己是否有足夠的能力信守承諾。 但目前為止用戶還很少,所以增加限制是沒有問題的。

okerr 一般可以做什麼 - 查看網站 介紹。 一般來說,這就是監控(來自雲端的zabbix),而filer則是很好的附加功能。 您還可以從該網站訪問演示,無需註冊。

當指示器狀態改變時,會透過電子郵件或 Telegram 發送通知。 (我們查看了發生的情況,並意識到 telegram 似乎是最可靠的信使。感謝 RKN 的壓力測試!)正確配置 okerr 後,任何通知要么是一個信號“放棄所有內容,我們需要修復它!” ,或“熄燈!” okerra 不應該有任何額外的警報(如果有,則需要以某種方式進行不同的配置)。 例如,對於我們的 cat 網站,alpha 伺服器是最後一個伺服器,並且從不偽造錯誤。 如果他躺下了,我們需要知道。 但其他伺服器不斷假裝錯誤,因此,為了不每小時多次收到警報,這些指示器處於「靜默」狀態。

建立一個抱歉伺服器(在任何最便宜的託管上)也是有意義的,它要么有您的道歉頁面(以防所有主伺服器和備份伺服器都關閉),要么會將您重定向到okerr 上的狀態頁面(例如,我們的) cp.okerr.com/status/okerr) 或 statuspage.io。

來源: www.habr.com

添加評論