你好,耳先生

你好,耳先生

先生贵姓?耳东陈。好的,这边请,耳先生。
github

年轻人の初めてのリポジトリ削除と逃亡

おめでとうございます、これは初めての生産事故であり、最初の T0 事故です

サーバーの事故レベルを標準化する:

  • T0:非常に深刻な事故。ユーザーデータに不可逆的な損失が発生します。
  • T1:深刻な事故。ユーザーデータに可逆的な損失が発生し、ops がデータを回復するためにアクセスする必要があります。または、サービスの機能が利用できなくなる状況が発生します。
  • T2:一般的な事故。ユーザーデータは損失しませんが、表示異常などの表示に関する問題が存在します。
  • T3:UI の異常。UI のレイアウトなどの問題により、使用に問題が発生します。

基本情報#

  • 番号:0x0001
  • 発生日:2021 年 04 月 17 日
  • レベル:T0

プロセス#

4 月 17 日の午後、生産サーバーにログインし、yum upgrade updateコマンドを実行しました。サーバーの Docker 環境のバージョンが古すぎるため、一連の更新が必要でした。コマンドの実行後、サーバーは自動的に再起動し、対応する再起動のプロンプトは表示されませんでした。初期判断では、カーネルの更新に関連している可能性があります。更新後、サービスが復旧しないため、VNC に接続して確認すると、仮想マシンでディスクをロードできないことが判明しました。これにより、事故が発生しました。サーバーの内容はすべて損失しました。

事後、すぐにサービスプロバイダーに連絡し、損傷したディスクイメージを回復しようとしましたが、取得できず、再インストールするしかないというアドバイスを受け取りました。

奇妙なこと#

再インストール後、サービスプロバイダーから同じディスクシステムテンプレートを取得し、yum upgrade updateコマンドを再度実行しましたが、カーネルレベルの更新は発生せず、更新すら行われませんでした。したがって、この事故の根本原因はまだよくわかりません。

影響#

  • サーバーには状態を持つ Miser というサービスがあり、ユーザーは私だけです。定期的なデータバックアップを行わなかったため、データは 3 ヶ月前に手動で復元したバージョンまでしか回復できませんでした。
  • サービス関連のファイルは backblaze サーバーに保存されており、この事故の影響を受けませんでした。

対策#

この出来事の後、私は「製品を正式に運営する」ということについて長い間考えました。幸運なことに、Miser は始めから終わりまで私だけが使用しており、友人が何度も一緒に使用して製品の開発に参加したいと言っても、私個人のデータはそれほど貴重ではありません。しかし、ユーザーが本当にコンテンツをここに置き、それを失った場合、信頼性と信頼度は非常に低くなります。

モニタリングについて#

これまで、未処理の例外状態、つまり 5XX エラーをリアルタイムで監視するために、サービスには sentry を設置していました。しかし、実際の運営中には、CPU が突然高くなったり、メモリが急に不足したりするなど、さまざまな奇妙な問題に遭遇しました。

伸縮自在なクラウドではなく、従来の仮想マシンを使用しているため、CPU やメモリなどのシステムレベルの監視もスケジュールに組み込む必要があります。つまり、完全なセットの Prometheus + Grafana の基本的な組み合わせを本番環境に展開する必要があります。

可用性とバックアップについて#

奇妙な話ですが、実際には数ヶ月、半年近く生産サーバーに手を触れていませんでした。基本的には GitHub Actions を使用して完全な CI/CD パイプラインを実現していました。今回、サーバーに手動でログインした理由は、バックアップサービスを展開するためでしたが、この操作が事故の発生の原因となりました。生疎になった可能性もあります。

サービスプロバイダーは私に非常に良いアドバイスをくれました。私の操作には明らかに大きな問題がありました。彼は次のように言いました。「彼が来た場合、まずディスクのスナップショットを撮り、操作を実行し、問題がなければすべてがうまくいきます。問題があれば、スナップショットを使用してディスク全体を復元します。」

確かに、私はこの回にドライランを行っていませんでした。毎回、直接 docker ポッドレベルの操作を実行し、問題が発生した場合は直接 rm してしまいました。今回はホストマシンでの操作が不足していました。

したがって、

  • ホストマシンへの直接的な操作を減らし、Docker クラスタを構築した後はすべて Docker レベルで操作する必要があります。
  • バックアップサービスの優先度を最高にする必要があります。データは最も重要です。
  • ドライランの信頼性について、本番環境に対応する dev または uat 環境の必要性を考える必要があります。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。