New Relic のようなグローバルなオブザーバビリティプラットフォームを運用する上で、何よりもまず重要なことはそのインフラストラクチャが停止してはならないということです。何千もの顧客のアプリケーションを24時間365日監視する責任を担っている場合、ネットワーク障害は単に不便なだけでなく、存在そのものを脅かす脅威となります。
New Relicでは、複数のクラウドやリージョンにまたがって、数百のクラスタが稼働しています。これらのクラスタは、リージョンのトランジットゲートウェイ、リージョン間ハブ、クラウド間リンクなどの複雑なネットワーク接続に依存しています。当社は単一障害点を回避するための回復力を備えていますが、接続障害が多すぎると、リアルタイムのオブザーバビリティを提供する能力が損なわれます。
このためアベーラビリティゾーン(AZ)内、リージョン間、クラウドプロバイダー間のいずれのレイヤーで接続障害が発生した場合でも、即座に問題を把握する必要がありました。
そこで当社は、最も得意とするNew Relic独自のプラットフォームを使用して、ネットワーク全体を監視するソリューションを構築しました。その結果生まれたのが、社内ネットワーク監視システム「Weather Station」です。これは、マルチクラウドインフラストラクチャ全体で1時間あたり10万回以上の接続チェックを実行しています。この記事では、Weather Stationの構築方法と、その過程で学んだことをご紹介します。
大規模な環境におけるネットワーク可視性の課題
大規模で複雑な環境では、ネットワークの完全な停止自体を検出することが課題ではありませんでした。それは明らかな事実だからです。真の課題は、特定の診断の後で次の質問に迅速に答えることでした。同じリージョン内のクラスタは、リージョンのトランジットゲートウェイを介して通信できているか?ハブゲートウェイはリージョン間のトラフィックを適切にルーティングしているか?クラウド間のクロスクラウド接続は機能しているか?トラフィックのピーク時にパケット損失が発生していないか?
これらのパスを継続的に検証しなければ、エンジニアは手動での接続テスト、インスタンスへのSSH接続、pingコマンドとtracerouteコマンドの実行、複数のクラウドプロバイダーコンソール間のルートテーブルの確認、タイムスタンプの相関関係の検証など、多くの時間を費やして、潜在的な障害発生のタイミングを特定することになります。
すべての重要なネットワークパスを継続的に検証し、障害を迅速に検出し、どのネットワークセグメントに障害が発生したかについてのコンテキストを、エンジニアに即時に提供するための体系的なアプローチが必要でした。さらにそのソリューションは、インフラストラクチャに合わせて拡張し、新しいリージョンやセル、クラウドプロバイダーの追加にも自動的に適応できる必要がありました。
継続的なネットワーク検証システムの設計
当社は、継続的にネットワークを監視するシステムを「Weather Station」と名付けました。これは、気象学者が分散センサーを使用して大気の状態を監視する方法にヒントを得た名前です。気象観測所が地理的リージョン全体の気温、気圧、風の変化を検出するのと同様に、当社のWeather Stationはネットワークのリージョン、AZ、クラウドプロバイダー全体の接続状態の変化を検出します。
中核となる考え方は簡単です。実稼働ネットワークトポロジーを反映した監視インスタンスを導入すれば、それらのインスタンス間での接続を継続的にチェックできるようになります。これらのsyntheticチェックで何らかの障害が発生すると、顧客データに影響が出る前に、実際のネットワークの問題が直ちに通知されます。
Weather Stationは、次の3つのコアアーキテクチャー原則に基づいて設計された自己完結型のGoアプリケーションです。
実稼働トポロジーのミラーリング
実稼働環境で使用されているネットワークアーキテクチャーを正確に複製した専用の監視ネットワークを作成しました。これらの監視VPCは、実稼働環境のトラフィックが流れる同じ共有インフラストラクチャに接続されます。つまり、実稼働環境を迂回する擬似ルートではなく、実際のインフラストラクチャコンポーネントを通る実際のネットワークパスをテストしていることになります。
セットアップには、各リージョンにプライマリVPCとセカンダリVPCを配置し、さまざまな構成をエミュレートし、AZごとに1つの監視インスタンスを配置します。マルチクラウドインフラストラクチャ全体で合計88個の専用監視インスタンスを導入し、さらに実稼働セル内にもコンテナ化された監視インスタンスを配置しました。
多様な監視視点
当社では補完的な2つの視点から監視を行っています。専用の監視ネットワークは、共有インフラストラクチャ(リージョンゲートウェイ、リージョン間ハブ、クラウドプロバイダー間の接続)を検証します。これらのインスタンスは監視のみを目的として存在し、実稼働環境のワークロードの変更による影響を受けません。一方、Weather Stationは実稼働ワークロード内でもKubernetesポッドとして実行されるため、実際のワークロードの観点から接続を詳細に把握できます。
動的設定とオブザーバビリティ
Weather Stationは階層型の設定システムを使用しています。インスタンスが起動すると、そのロケーション、クラウドプロバイダー、リージョン、AZ、環境変数を記述するパラメーターを受け取ります。これらのパラメーターに基づいて、適切なYAML設定ファイルを読み込み、実行すべき接続チェックを指定します。
たとえば、インスタンスは、同じAZ内の他のインスタンスにpingを送信してリージョンの接続性を検証し、他のリージョンのインスタンスにpingを送信してリージョン間ルーティングをテストし、他のクラウドプロバイダーのインスタンスにpingを送信してクラウド間の接続を確認します。インスタンスが実行される場所に応じて、設定が自動的に適応されます。
すべてのチェック結果は、
weather_stationというプレフィックス付きのメトリクスとしてNew Relicに送られ、クラウドプロバイダー、リージョン、AZ、環境変数、クラスタ名などのソースインスタンスに関する豊富なメタデータがタグ付けされます。つまり、NRQLクエリを使用して、ネットワークの健全性をクエリ、可視化、アラート生成を行うことができるのです。アラート条件に違反すると、New Relicは自動的に問題をオープンし、適切なチームに直ちに通知します。
Weather Stationは、ネットワークアーキテクチャーの異なるレイヤーを対象とした4種類の接続チェックを実行します。
- リージョンのチェック:同一リージョン内のホストが、リージョンのトランジットゲートウェイまたは仮想ハブを介して通信できることを検証します。
- リージョン間チェック:ピアリングトランジットゲートウェイがリージョン間のトラフィックを適切にルーティングしていることを確認します。
- クロスクラウドチェック:クラウド間の通信を検証します。
- 管理ネットワークチェック:すべてのインスタンスがコンテナレジストリやVaultなどの重要な内部サービスにアクセスできることを確認します。
各チェックはシンプルで、主にICMP pingテストと特定のサービスのTCPポートチェックがを行いますが、1時間あたり10万回以上のチェックを合計することで、プラットフォームが依存するすべてのネットワークパスを包括的にカバーします。
リージョンやクラウド全体へのWeather Stationの拡張
私たちはWeather Stationを導入するに際し、単一のステージングセルでの概念実証から始め、体系的に広げていくアプローチを採用しました。目標はシンプルでした。アプリケーションが安定して動作し、メトリクスが正しく送信され、設定システムが期待どおりに機能することを検証することです。わずか数日で、最初の潜在的なネットワークの問題、つまり実稼働環境でのリージョン間トラフィックをブロックする可能性のある、セキュリティグループルールの設定ミスを発見しました。この早期発見により、導入拡大への自信を得ることができました。
次に、専用監視インフラストラクチャ全体にWeather Stationを体系的に展開し、各リージョンで反復的にデプロイを行い、各ステップでメトリクスとアラートを検証しました。この段階では、ピーク時のクラウド間接続での断続的なパケット損失、AZ間の非対称ルーティングの問題、リージョンハブでのBGPフラッピングが明らかになりました。これらの発見により、顧客に影響を及ぼす前にインフラストラクチャを修正することが出来ました。
最終フェーズでは、一貫したロールアウトを実現するために標準の自動化ツールを使用して、Weather Stationを本番環境セル内にKubernetesポッドとして導入しました。当社は、すべての接続データを視覚化し、Terraformを使用してアラートを構成する包括的なネットワークステータスダッシュボードを構築し、それらのバージョン管理と一貫した導入を実現しました。各アラートには、サービスタグやインシデントのグループ分けなどの関連コンテキストが含まれており、障害が発生したネットワークセグメントに関する完全な情報に基づいて、適切なチームに即座にルーティングできます。
ネットワークの問題検出を90%高速化
Weather Stationにより、ネットワークインフラストラクチャの運用方法が変わりました。その影響は即座に現れ、以下のように測定可能でした。
- MTTDの改善:ネットワーク障害の平均検出時間が90%短縮されました。
- MTTRの改善:アラートに潜在的な問題に関する正確なコンテキストが含まれるようになったため、インシデントを解決する平均復旧時間が50%改善されました。
- 即時の根本原因特定:ダッシュボードには、接続に失敗しただけでなく、ネットワークトポロジーのどこで障害が発生したかが正確に表示されます。
- 実稼働前にステージング環境で設定上の問題を検出:セキュリティグループの設定ミス、ルーティングテーブルの誤ったエントリ、BGP設定エラーなどが本番環境に到達する前にステージング環境で検出されるようになりました。
- インフラストラクチャ変更時の運用の信頼性:本番環境のトラフィックを新規に追加したセル(処理機能)にルーティングする前に、すべてのWeather Stationチェックに合格したことを検証し、プロバイダーのフェールオーバーシナリオを即座にテストできます。
- コストの回避:Weather Stationはインフラストラクチャへの投資を必要としますが、さらにコストのかかるシステム停止を未然に防止します。ネットワークのダウンタイムが1時間続くごとに、複数セルでの顧客データ取り込みに影響が出ます。ステージング環境で問題を検出することで、顧客への影響、緊急ロールバック、大規模なインシデント対応などの本番環境でのインシデントコストを回避できます。
- 運用ビューの統合:もはや複数のクラウドプロバイダーコンソール、VPN設定やゲートウェイのルートテーブルを個別に確認する必要はなく、信頼できる唯一のソースとしてネットワークステータスダッシュボードで、現在のステータス、過去の傾向、詳細な調査機能を1か所の統合ビューで確認できます。次の画像は、New RelicのWeather Stationダッシュボードを示しています。
Top takeaways
Weather Stationの構築は、当社が独自のプラットフォームを活用して、運用上の課題を解決する方法を示す好例です。顧客に提供しているのと同じオブザーバビリティ関連機能(カスタムメトリック、ダッシュボード、アラート)により、マルチクラウドインフラストラクチャのネットワーク監視を可能にしています。
Weather Stationの構築から得られた以下の教訓は、複雑なマルチクラウドインフラストラクチャを管理するあらゆる組織に当てはまります。
- 本番環境のトポロジーをミラーリングする:本番トラフィックが使用するゲートウェイ、ハブ、プロバイダー接続など、実際のインフラコンポーネントを通じて実際のネットワークパスをテストしてください。本番環境をバイパスする疑似ルートでは、現実の障害を捉えることはできません。
- 複数の視点から監視する:専用の監視インスタンスは共有インフラストラクチャを検証し、セル内のポッドはワークロードの視点から接続を検証します。この両方の視点が不可欠です。
- シンプルに始めて、徐々に拡大する:まずは基本的なpingチェックを行い、価値を迅速に実証してから、特定のサービスのTCPポートチェックを追加しました。
- ネットワークの健全性を観測可能なテレメトリーとして扱う:接続結果をメトリクスとして送信することで、アプリケーション監視と同様にダッシュボード、クエリ、アラートを使用できるようになります。
- すべてを自動化する:Configuration as Code(設定のコード化)、Infrastructure as Code(インフラのコード化)、およびデプロイの自動化により、手作業なしでリージョンをまたいだ拡張が可能になります。
主な洞察とは?ネットワーク監視は、より多くのデータを収集することではなく、適切な場所から適切なデータを収集することです。結果が実証しています。しかし、最も重要な成果は文化的なものです。ネットワーク監視は現在、プロアクティブかつデータドリブンであり、あらゆるインフラストラクチャの変更に組み込まれています。
次のステップ
複雑なマルチクラウドクラウドインフラストラクチャでネットワークの可視性に苦労しているなら、ここで使用したパターンが役立ちます。トポロジーをミラーリングする外形監視を導入し、ネットワークの健全性を観測可能なテレメトリーとして扱い、すべてを自動化します。
New Relicのインフラストラクチャ監視と外形監視を活用して、ネットワークに同様の可視性を構築しましょう。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。