今天 Fenng 在微博上連結了 CSDN 的一篇翻譯文 《GitHub曆史上最糟糕宕機事故回放及反省》
http://weibo.com/1577826897/zdd2J1oh8
本著對 Fenng 品牌的信任,我就點去看了一下。
CSDN 譯文開篇第一段是這樣的……
開源中國社區翻譯了該博文的部分內容,但可惜漏掉了不少重要內容,CSDN整理並編譯了餘下的部分,與大家分享。
所以,這份中文譯本至少已經經過兩次翻譯和審閱,於是……我浪費了兩個半小時,對照原文,忽略所有排版、不通順的情況,僅對最基礎、最嚴重的語義錯誤進行了以下勘誤。除了 1、2 兩條之外,譯稿基本都屬於內容表述指代錯誤或者意義與原文完全相反兩種情況。
CSDN 譯稿連結:http://www.csdn.net/article/2013-01-05/2813427-Github-Downtime-last-Saturday
原文連結:https://github.com/blog/1364-downtime-last-saturday
勘誤部分,第二段是 CSDN 譯稿,第三段是我的譯稿。
1,
在次之前,……
在此之前,……
2,
(n-service
In-service
3,
... but
our traffic was low enough at the time that it didn't pose any real problems.
並沒有解決真正的問題
並沒有導致真正的問題
4,
... to
revert the software update and return to a redundant state at 1300 PST if we did not have a plan for resolving the issues ...
並且復原到太平洋時間13:00的狀態
並且在 13:00 PST 的時候開始復原升級,恢複充分冗餘的狀態
5,
...
When the agent on one of the switches is terminated, the peer has a 5 second timeout period where it waits to hear from it again. If it does not hear from the peer, but still sees active links between them, it assumes that the other switch is still running
but in an inconsistent state. In this situation it is not able to safely takeover the shared resources so it...
一個部署在交換器上的代理被終止,一個節點在等待再次響應時出現了5秒的延遲。節點間無法彼此響應,但它們之間的鏈路仍然是聯通的,可以預想其他的交換器也在以類似的狀態運行,但都已經處於不能同步(訊息)的狀態。在這種情況下,交換器之間無法安全的接管共用資源,因此它……
一個部署在交換器上的代理被終止後,(成對部署的)另一個節點將等待 5 秒鐘視窗期判斷前者是否會恢複。如果它無法收到第一個節點的響應,卻看到兩者之間鏈路處於活躍狀態,它會預設對方處於運行但狀態不同步的情況。在這種情況下,它不能安全地接管與另一個路由器共同管理的資源,因此它……
6、
When
the agent was terminated on the first switch, the links between peers did not go down since the agent is unable to instruct the hardware to reset the links. They do not reset until the agent restarts and is again able to issue commands to the underlying switching
hardware. With unlucky timing and the extra time that is required for the agent to record its running state for analysis, the link remained active long enough for the peer switch to detect a lack of heartbeat messages while still seeing an active link and
failover using the more disruptive method.
當在第一台交換器上的代理被終止,節點間的鏈路並沒有減少,只是代理無法指示硬體重設鏈路,直到代理重新啟動,並再次向相關交換器硬體發出命令。
(譯者註:此處丟失半段)當第一個交換器上的代理被終止時,這一對路由器之間的連結並未被中斷,因為代理無法操作硬體去中斷連結。只有當代理程式重新啟動後才可能發送命令操作底層硬體。當時間非常不巧,且路由器還需要更多額外時間由代理程式為分析而記錄運行狀態時,這一對路由器之間的連結保持了足夠長時間的活躍狀態,最終使得對端路由器發現了在活躍線路上心跳訊息的缺失,因此進行了後面這種有著更強破壞性的容錯移轉操作。
7、
When
this happened it caused a great deal of churn within the network as all of our aggregated links had to be re-established, leader election for spanning-tree had to take place, and all of the links in the network had to go through a spanning-tree reconvergence.
This effectively caused
當發生這些的時候它引起巨大的流量損失並且我們所有的鏈路要重建立立,leader選擇使用產生樹協議(spanning-tree網路通訊協定),並且所有網路中的鏈路通過產生樹協議恢複。
這個過程帶來了網路內部的巨大波動,因為所有的彙總鏈路要重建立立、spanning-tree 協議中要求的領導者選舉過程必須完成,而且網路中的所有鏈路都必須重新進行 spanning-tree 的收斂過程。這一切直接導致了……
8、
We
want to be certain that we don't wind up in a "split-brain" situation where data is written to both nodes simultaneously since this could result in potentially unrecoverable data corruption.
我們想確保我們沒有進入一個”精神分裂“狀態,比如資料寫入到了兩個節點中而且還無法回複這個資料轉送中斷的情況。
我們想確保我們沒有進入“精神分裂”(也就是資料被同時寫入兩個節點)的狀態,因為這樣可能導致無法恢複的資料錯誤。
(註:這處前半錯誤不嚴重,只是把「唯一」的修飾指代當成了「之一」的舉例而已。後半……是機器翻譯嗎?)
9、
When
the network recovered and the cluster messaging between nodes came back, a number of pairs were in a state where both nodes expected to be active for the same resource. This resulted in a race where the nodes terminated one another and we wound up with both
nodes stopped for a number of our fileserver pairs.
當網路恢複的時候,分布在節點間的簇資訊傳送回來,很多對結點都在搶相同的資源,由此導致嚴重競爭,我們關閉了這些節點。
當網路恢複、節點之間的訊息被送達之後,許多對伺服器都處於這樣的狀態:兩台伺服器都認為自己應該接管共用的資源。這個競爭狀態導致兩台伺服器互相停止了對端(譯者註:利用前述 STONITH 進程)。我們有多對檔案伺服器最終都處於全部停止的狀態。
10、
We
monitored the network for roughly thirty minutes to ensure that it was stable before beginning recovery.
嚴密監視網路30分鐘,以確保是否穩定複蘇
(在開始恢複操作之前)我們嚴密監視網路 30 分鐘……
(譯者註:把開始之前的操作變成了開始之後序列的最後一條,堪憂)
11、
When
both nodes are stopped in this way it's important that the node that was active before the failure is active again when brought back online, since it has the most up to date view of what the current state of the filesystem should be.
當雙節點由於上訴故障停止工作後,待再次重新聯機的時候再次激發這些活躍節點尤為重要,因為它們影響到檔案系統的目前狀態。
如前述被停止的成對節點在恢複時,重新啟用鼓掌之前已被啟用啟動並執行節點尤為重要,因為它擁有對於當前檔案系統應該所處的正確狀態的最新資訊。
12、
This
recovery was a very time consuming process and we made the decision to leave the site in maintenance mode until we had recovered every fileserver pair.
這種恢複是一個非常耗時的過程,我們決定在維護模式下離開現場,直到最終恢複每一個檔案伺服器對。
……,我們決定在恢複每個檔案伺服器之前保持(GitHub.com 運行在)維護模式。
13、
... and
we returned the site to service at 20:23 PST.
……我們在太平洋時間20:23返回現場工作。
……我們在太平洋時間 20:23 重新上線。
14、
our
vendor plans to revisit the respective timeouts so that more time is given for link failure to be detected to guard against this type of event.
我們的網路供應商將重新審查個別延遲時間的狀況,以應對鏈路故障的問題並防止此類事情的再次發生。
我們的網路供應商將重新審查個別延遲時間的狀況,(通過增加路由器逾時設定)使路由器有更多時間去檢查判斷鏈路逾時,以防止此類事件在此發生。
15、
We
are postponing any software upgrades to the aggregation network until we have a functional duplicate of our production environment in staging to test against.
我們已經延遲了所有針對彙總網路的軟體升級事宜,直到我們測試成功生產環境的功能複製模式。
……直到我們在測試環境(Staging)建立起與生產環境功能完全一致的副本用於測試。
16、
The fact that the cluster communication between fileserver nodes relies on any network infrastructure has been
a known problem for some time. We're actively working with our hosting provider to address this.
檔案伺服器節點所依賴的網路設施發生故障影響了叢集的通訊,我們積極地與主機供應商協調並解決了這個問題。
檔案伺服器節點之間的通訊依賴於(其它的)網路基礎設施是一個長久以來已知的問題。我們正在與主機供應商積極協調、尋找解決這個問題的方法。
17、
We
are reviewing all of our high availability configurations with fresh eyes to make sure that the failover behavior is appropriate.
我們正在重新評估我們的高可用性配置環境,並以全新的方式去實現故障遷移。
我們引入了新的人員對我們的高可用性配置環境配置進行重新評估以確保故障遷移行為是合適的。
以上。