2013幎に私たちに衝撃を䞎えた3日間









「これが事故であるかどうか疑問がある堎合、これは事故です」

c先祖の知恵



オンラむンプロゞェクトでの倧きなクラッシュはたれです。 そしお、倧芏暡なプロゞェクトでは-それほど頻繁ではありたせん。 もちろん、システムが耇雑になるほど、゚ラヌの確率が高くなりたす。 倧芏暡システム、特に゜ヌシャルネットワヌクの1時間のダりンタむムは安䟡ではないため、倧芏暡プロゞェクトでは、事故を防ぎ、ナヌザヌぞの悪圱響を枛らすために倚くの努力が払われたす。 しかし時々、星が特別な組み合わせで積み重なるか、マヌフィヌの法則が真の力を発揮し、倧きな事故が起こるこずがありたす。 Odnoklassnikiの歎史䞊、最倧の倱敗は2013幎4月4日に発生したした。3日間、プロゞェクトは完党にたたは郚分的に機胜しおいたせんでした。 私たちの物語は、その埌に䜕が起こったのか、どのような理由で、これにどのように取り組んだのかに぀いおです。



1.どうしたの



ある倕方、監芖システムがサヌバヌの1぀に関する小さな問題を修正したした。 これを排陀するには、構成テンプレヌトを修正する必芁がありたした。 勀務䞭の管理者は、このテンプレヌトを開発した同僚に助けを求めたした。 前のコヌドのむメヌゞず肖像に、1行の小さなコヌドを远加するだけでよいこずが刀明したした。 管理者は必芁な修正を行い、ファむルを本番に送信したした。



すぐに別のサヌバヌで障害が報告され、その数は急速に増加したした。 アテンダントはすぐにログを䞊げ、倉曎された構成テンプレヌトに関するものであるこずを提案したした。 圓然、圌らはすぐに倉曎をロヌルバックし、テンプレヌトの元のバヌゞョンをサヌバヌに返したした。 しかし、その頃には、Odnoklassnikiのサヌバヌパヌクの倧郚分を構成しおいたすべおのLinuxマシンがすでに拒吊されおいたした。 したがっお、最長の3日間が始たりたした。



ホットトラッキングでのその埌の分析は、すべおのサブシステムを麻痺させ、雪厩の倱敗の原因を特定するのに圹立ちたした。





ご存じのように、シェルはナヌティリティスクリプトの実行時など、さたざたな操䜜で䜿甚されたす。 サヌバヌで実行されおいるbashプロセスはすぐにサむクルになり、マシンの利甚可胜なコンピュヌティングリ゜ヌスを迅速に消費したした。 その結果、サヌバヌはすぐに最倧負荷に達したした。 しかし、それほど悪くはありたせんでした。 実際、bashは集䞭管理システムでも䜿甚されおいたした。 そのため、サヌバヌの過負荷に加えお、倖郚コマンドぞの応答が停止したした。 ログむンできず、ごく短時間のうちに玄5,000台のサヌバヌが機胜しなくなりたした。



セルフテストに関する質問

集䞭管理システムに障害が発生した堎合はどうしたすか そしお、同時にサヌバヌにログむンできない堎合はどうなりたすか





2. 3日間の回埩



残念ながら、サヌバヌを再起動するだけではシステムを機胜に戻すこずはできたせんでした。 これは、ポヌタルのアヌキテクチャによるものです。



2.1。 サブシステム関係



クラスメヌトは玄150のサブシステムさたざたなデヌタベヌス、ビゞネスロゞックサヌバヌ、キャッシュ、グラフ、フロント゚ンド、構成システムなどで構成されおいたす。 そしお、ほずんどすべおのサブシステムのパフォヌマンスは、他のサブシステムの可甚性に䟝存したす。 サヌバヌをランダムに再起動するず、1぀の特定のサブシステムだけでなく、他の倚くの関連サブシステムの䜜業も䞭断する可胜性がありたす。



サブシステム間の関係の䟋











䜕かが叀兞を思い出させたす











実際、プロゞェクトのアヌキテクチャを開発および倉曎する際に、サヌバヌクラスタヌ党䜓が同時に障害を起こす可胜性があるずいうシナリオはありたせんでした。 䞀郚のサブシステムのコヌドは、䞀郚の関連コンポヌネントに完党にアクセスできない状態で起動および機胜するメカニズムを提䟛したせんでした。 機胜の重耇ずバックアップマシンの䜿甚により、すべおのシステムが少なくずも郚分的に機胜するず想定されおいたした。



セルフテストに関する質問

盞互接続されたサブシステムのすべおたたは䞀郚が動䜜䞍胜な状態でサヌビスを起動するメカニズムはありたすか





2.2。 サヌバヌの再起動



メむンサブシステムを同時に起動するには、最初に少数のサヌバヌを埩元する必芁がありたした。オフィスず特定のサヌビスを実行する必芁がありたす。 これにより、それに䟝存するサヌビスの䜜業を埐々に埩元し、その埌、他のサヌビスの䜜業を埩元するこずができたした。 可胜な限り、最も重芁なサヌビスのために重耇サヌバヌが忘华から取り陀かれたした。



芚えおいるように、玄5,000台の車を埩掻させる必芁がありたした。 それらをリモヌトで再起動しおネットワヌク経由でダりンロヌドするこずは䞍可胜でした。これは倚くの堎合、このために構成されおいなかったからです。 これは、むンフラストラクチャを䜜成するために䞀床遞択されたアプロヌチの結果でした。 結局のずころ、Odnoklassnikiは最初から数千台のサヌバヌを䞀床に展開したせんでした。数幎かけお埐々に公園が成長したした。 したがっお、数千台のサヌバヌを手動で再起動し、ネットワヌク䞊のBIOS制埡を蚱可しお回埩を自動化する必芁がありたした。



圓初、䞀郚のサヌバヌでは「ブヌトストラップに到達」するこずが可胜でした-クラスタヌの説明を取埗し、デヌタが保存されおいる堎所を正確に芋぀けたす。 サヌバヌが再起動されるたで、サヌバヌは非垞にゆっくりですが、それでも構成を提䟛し、䞀郚のサヌビスを開始できたした。 埩旧プロセスを高速化するために、これらのサヌバヌを再起動する必芁がありたした。 ただし、各サブシステムの開始たたは通垞の操䜜では、それに関連付けられた他のサブシステムが䜿甚可胜である必芁がありたす。 再起動により、䞀郚のクラスタヌの説明ぞのアクセスず倚くのサブシステムを起動する機胜が倱われたした。 開始できるものはもう開始したせんでした。 そしお、働いおいた人々は仕事をやめ、圌らを元に戻さなければなりたせんでした。



もう1぀の問題はハヌドドラむブでした。 高負荷で停止するこずなく長時間動䜜する堎合、オフにするず倱敗するこずがよくありたす。 私たちが盎面しおいるのはこの珟象です。 そのため、故障したディスクを定期的に亀換し、デヌタベヌスの䞀貫性を埩元する必芁がありたした。 䜜業コピヌずそのバックアップを備えたディスクに障害が発生した堎合もありたした。 さらに、サヌバヌは異なるデヌタセンタヌにありたした。 偶然だった。











セルフテストに関する質問

  • サヌバヌはリモヌト再起動甚に構成されおいたすか
  • デヌタバックアップシステムはどの皋床安党に線成されおいたすか






2.3。 デヌタ埩旧



䜜業コピヌを展開しおサヌビスを開始するには、蓄積されたトランザクションログを入力しおバックアップを埩元する必芁がありたした。 いずれかのデヌタベヌス党䜓のバックアップを埩元できたせんでした。 次に、新しいストレヌゞクラスタヌを䞊行しお起動し、そこに䞍足しおいるデヌタを転送し、他のサブシステムからそれらを収集したす。 最初に、どこで䜕を探すべきかを考えおから、サヌビスのロゞックを倉曎し、デヌタを転送するためのスクリプトを䜜成し、新しいクラスタヌを構成し、デヌタを転送したした...最埌に、すべおの倱われた情報を完党に埩元したした。



2.4。 サヌビス開始



サヌバヌの再起動埌、OSを起動し、構成テンプレヌトから䞍幞な空の行を削陀するための䞀連のスクリプトを送信したした。 スクリプトの䜜成ずテストず䞊行しお、24時間手動でサヌバヌを埩元したした。 Odnoklassnikiチヌムだけでなく、他のプロゞェクトの埓業員もこの䜜業に関䞎したした。



サヌバヌの再起動埌、機噚ずファむルシステムに障害が発生しなかった堎合、スクリプトはサヌビスを皌働状態にしたした。 他のサブシステムぞの䟝存関係のためにサヌビスを開始できなかった堎合、コヌドを線集する必芁がありたした。 これが圹に立たない堎合、圌らはそれを敎理し、解決策を探したした。 幞いなこずに、倧量のデヌタずサヌビスがデヌタセンタヌ間で既に分散されおいたため、機胜の埩元に必芁な郚分のみを埩掻させる必芁がありたした。



監芖および統蚈システムはむンタヌネットプロゞェクトで広く䜿甚されおおり、Odnoklassnikiのような倧芏暡プロゞェクトも䟋倖ではありたせん。 機噚やアプリケヌションの正しい動䜜、およびナヌザヌの行動に関しお、膚倧な数のパラメヌタヌが垞に監芖されおいたす。 倱敗が倚すぎるこずによる事故の解消䞭、情報はゆっくり収集されるか、たったく収集されたせんでした-モニタヌず倚くのサヌバヌ間の通信の詊行はタむムアりトになりたした。 その結果、モニタヌは長時間修理されたサヌバヌに障害が発生しおいるず指摘し、その逆も同様です。モニタヌがポヌリングするためのキュヌにただ到達しおいないため、非皌働サヌバヌが機胜しおいるず芋なしたす。 倚くの堎合、監芖システムは䞀般的に故障しおいたす。 最新のサヌバヌステヌタスデヌタを取埗できず、アプリケヌションが正垞に動䜜しおいるかどうかを確認できたせんでした。 したがっお、手動でチェックする必芁があり、䜙分な時間がかかりたした











セルフテストに関する質問

異なるデヌタセンタヌ間でデヌタずサヌビスの分散を䜿甚しおいたすか これによりフォヌルトトレランスがどの皋床向䞊したすか





2.5。 埩旧完了



最初から、䜜業の順序をたずめた回埩蚈画を策定したした。 リカバリ䞭に実行されたすべおの手順が文曞化されたした。 人々の仕事は調敎され、誰かが次のタスクを完了するず、次のこずが䞎えられたした。 タスクの配垃は、珟圚の状況ず運甚蚈画に基づいお実行されたした。 ぀たり、プロセスは管理しやすいものでしたが、䞀郚しかありたせんでした。 私は倚くの即興挔奏をしなければなりたせんでした。



ポヌタルが少なくずもロヌドを開始し、機胜の䞀郚が機胜するようになったずき、䞻芁な䜜業胜力の回埩には玄1日かかりたした。



事故は朚曜日の倕方に発生し、日曜日の朝にポヌタルを完党に埩元したした。



3.孊んだ教蚓



3.1。 むンシデント管理



Odnoklassnikiでは、他の倚くのプロゞェクトず同様に、むンシデント管理が䜿甚されたす。 ぀たり、すべおの偶発事象が蚘録され、カテゎリに分類されたす。







事件の原因ず結果を排陀するために、執行者がすぐに任呜されたす。

それずは別に、ナヌザヌに深刻な結果をもたらす、たたは朜圚的にこれを可胜にするむンシデントを分析したす。 これにより、䞍審な傟向たずえば、カテゎリの倱敗の数の増加を怜出し、重倧な事故を防ぎ、倱敗の悪圱響を倧幅に枛らすこずができたす。



以前に重倧な事故が発生したした。 たずえば、2012幎、Odnoklassnikiは、通信コレクタヌの火灜によりデヌタセンタヌの1぀にアクセスできなかったため、数時間動䜜したせんでした。 その埌、グロヌバルな目暙を蚭定したした。デヌタセンタヌのいずれかが倱われた堎合、ポヌタルは完党に機胜する必芁がありたす。 近いうちにこの目暙を達成したす。



セルフテストに関する質問

あなたのサヌビスが利甚可胜になりたす

  • 耇数のサヌバヌに障害が発生した堎合
  • 1぀以䞊のサブシステム
  • デヌタセンタヌの䞀぀
  • むンシデントをどのように凊理したすか






しかし、私たちはこの芏暡の事故の準備ができおいたせんでした。 すべおのサヌバヌが䜿甚できなくなり、そのような耇雑な状況が発生するず想定した人はいたせんでした。

事故埌、すべおの修埩䜜業の順序ず進行状況を分析したした。





3.2。 むンフラストラクチャ、監芖、管理の倉曎



分析の結果に基づいお、必芁な䜜業の蚈画が䜜成され、さたざたな事故に備えられたした。 珟圚たでに、次のこずを行っおいたす。







セルフテストに関する質問

  • バックアップからデヌタを回埩するのにどれくらいの時間を芁したしたか
  • すべおのサヌバヌをリモヌトで管理する機胜はありたすか
  • 本栌的な事故が発生した堎合、監芖システムは正しく機胜したすか
  • 1回の構成倉曎で、短期間ですべおのサヌバヌの動䜜を䞭断する物理的な可胜性はありたすか






3.3。 ポヌタルの倉曎





セルフテストに関する質問



3.4。 事故察策蚈画



私たちにずっおの䞻な問題の1぀は、このような倧芏暡な事故に察する行動蚈画の欠劂でした。 実斜した修埩䜜業の分析結果に基づいお開発したした。 蚈画に含たれるもの



  1. 監芖チヌムのチェックリストず連絡先の責任者のリスト 、および連絡先の詳现。
  2. 圹割ず責任の配分

    • どの埓業員が事故の撲滅に関䞎しおいるか、
    • どの責任分野を誰に分配すべきか、
    • コヌディネヌタヌは誰ですか
    • 運甚蚈画の準備を担圓するのは誰ですか
    • 修理状況の定期的な䞀般報告の責任者
    • 誰が、なぜ、どのように圹割を匕き継ぐこずができるか-これは、修理自䜓、その埌の分析、および事故埌の可胜な行動の䞡方に関係したす。
  3. サヌビス回埩チェックリスト 修埩する察象、順序、方法 優先サヌビスのリストずその埩元手順は、ここで定矩されおいたす。 制埡する必芁があるツヌルずシステムのリスト。 䜕か問題が発生した堎合の察凊方法に関する指瀺ず情報ぞのリンク。
  4. コヌディネヌタヌずしお働く人のための個別の指瀺。 事故撲滅プロセスの責任者は、芏暡を評䟡し、蚈画し、必芁な情報を䞊玚管理職に提䟛し、委任し、制埡し、远加のリ゜ヌスを匕き付け、必芁な情報を蚘録し、むンシデントの分析を敎理する必芁がありたす。
  5. デヌタセンタヌがクラッシュした堎合の個別の指瀺。 デヌタセンタヌの1぀が萜䞋した堎合の特定のアクションのリストを定矩したす。
  6. パヌトナヌずのやり取りのルヌル。 パヌトナヌずやり取りするずきのコミュニケヌションの方法ず圹割の分散、およびパヌトナヌずのやり取りのレベルは次のずおりです。

    • 情報-この堎合、通知のみに制限されたす。
    • リ゜ヌスの動員-この堎合、パヌトナヌ偎たたは私たちの偎でリ゜ヌスを倧芏暡に動員したす。
    • ワヌキンググルヌプ-この堎合、パヌトナヌずその参加者が参加するワヌキンググルヌプを䜜成したす。


「緊急」アクションプランは定期的にテストする必芁がありたす。 この手順の重芁性を過倧評䟡するこずは困難です。 そうしないず、数か月埌に蚈画が廃止されたす。 そしお、ある日問題が発生しおも、あなたの行動は状況を改善したり悪化させたりするこずはありたせん。 そのため、四半期ごずにアクションプランを確認したす。新しい埓業員のトレヌニングが必芁な堎合は、より頻繁に確認したす。 サヌバヌの移行、マむクロサヌビスの開始ず終了、オペレヌティングシステムず監芖システムの倉曎などにより、調敎が必芁であるこずが刀明するたびに。



セルフテストに関する質問

重倧床の異なる事故の蚈画はありたすか サヌバヌが配眮されおいるすべおのデヌタセンタヌに完党にアクセスできない堎合はどうしたすか





結論にいく぀かの蚀葉



Odnoklassnikiがそうであるような耇雑なシステムでのすべおのむベントず障害を予枬するこずは䞍可胜です。 ただし、プロゞェクトのアヌキテクチャ、セキュリティシステム、およびあらゆる皮類の蚈画された手順により、デヌタセンタヌに障害が発生した堎合でも、ほずんどの機胜ずすべおのデヌタを保持できたす。 さらに、近い将来、デヌタセンタヌの厩壊でもポヌタルの運甚に圱響を䞎えるこずはできたせん。



All Articles