NGINX Full Version

高度なトラフィック管理でKubernetesの耐障害性を向上させる方法

この記事は10部構成の一部です。

  1. Reduce Complexity with Production-Grade Kubernetes(英語)
  2. 高度なトラフィック管理でKubernetesの耐障害性を向上させる方法(この記事です)
  3. Kubernetesの可視性を向上させる方法
  4. トラフィック管理ツールを使ってKubernetesを安全にする6つの方法
  5. Ingressコントローラーの選択ガイド, Part 1: 要件の特定
  6. Ingress Controllerの選択ガイド, Part 2 : リスクと将来性
  7. Ingress Controllerの選び方ガイド, Part 3:オープンソース / デフォルト / 商用版
  8. Ingress Controllerの選択ガイド, Part 4 : NGINX Ingress Controllerのオプション
  9. サービスメッシュの選び方
  10. Performance Testing NGINX Ingress Controllers in a Dynamic Kubernetes Cloud Environment(英語)

これらのブログ一式を無料のebookとして下記よりダウンロードいただけます。– Kubernetes のテスト環境から本番環境への移行

今の時代、最高の顧客体験を提供するために、企業が最新の技術を採用しベストを尽くしていないと、その結果は直ちにビジネスへの評判としてあらわれてしまいます。ユーザは、それらの不満をソーシャルメディアですぐに拡げることができます。ストリーミングでシリーズものの最新版が見られない時や、オンラインバンキングにアクセスできない時、ショッピングでカートがタイムアウトしてしまったときなど、ユーザは直ちにその不満を拡散することができます。

ユーザが公に不満を言っていなかったとしても、ユーザの悪い経験や印象が結果に影響しないわけではありません。ある大手保険会社では、ホームページが3秒以内に読み込まれないため顧客を失ったという声もあります。

パフォーマンスの低下や停止に関するユーザからの苦情はすべて、「プラットフォームの強靭さ・復元力」の問題であり、それが欠如しているということを示します。コンテナやKubernetesなどのマイクロサービス技術が優れている理由は、アプリケーションの復元力を強化させることで、カスタマーエクスペリエンスを大幅に向上させることができるという点です。その鍵は、”アーキテクチャ”によるものです。

それでは、モノリシックアーキテクチャとマイクロサービスアーキテクチャの間にある主な違いを、ホリデーシーズンに利用する鎖状につながった電飾になぞらえて説明したいと思います。古い形式の電飾では、ある1つの電球が消えるとその他すべての電飾が暗くなってしまいます。電球を交換できないタイプの場合、ゴミ箱に捨てるしかありません。この古い形式の電飾はモノリシックアプリのようなもので、コンポーネントが緊密に結合されており、1つのコンポーネントが壊れると全体に影響します。

しかし、電飾業界はソフトウェア業界と同様に、この問題の原因を突き止めています。昨今の電飾で一部のライトが壊れた場合、その他の電飾は明るく点灯を続けることができます。それはまさに適切に設計されたマイクロサービスアプリケーションが、あるサービスのインスタンスに障害が発生した場合にも動き続ける状態に似ています。

Kubernetesトラフィック管理

コンテナは、アプリケーションをより小さく、分散配置したコンポーネントにより構築する、それらのコンポーネントは軽量で、可搬性が高く、簡単にスケールアップできる、そんな理想的な仕組みであるため、マイクロサービスアーキテクチャを実装する際に頻繁に利用されます。 Kubernetesは、コンテナオーケストレーションとして今はスタンダートとなっていますが、Kubernetesを本番環境で準備するための課題がいくつかあります。 Kubernetesで動作させるアプリケーションの制御とその強靭さの両方を向上させる重要な要素の1つが、パケットではなくサービスを制御し、動的にトラフィックの制御ルールを変更し、またはそれらをKubernetes APIを使用して適応できる高度で優れたトラフィック管理戦略にあります。トラフィック管理はどのアーキテクチャでも重要ですが、高性能なアプリケーションには、トラフィック制御トラフィック分割の2つのトラフィック管理ツールが不可欠です。

トラフィック制御

トラフィック制御(トラフィックルーティングまたはトラフィックシェーピングと呼ばれることもあります)とは、トラフィックをどこへ転送するのか、またどの様に処理するのかを制御する機能を指します。Kubernetesを本番環境で実行する際、そのインフラとアプリケーションを外部からの攻撃やトラフィックの急増などから守り、安定させるために必要不可欠な機能です。アプリケーション開発サイクルに組み込む2つの手法として、レート制限回路遮断があります。

トラフィック分割

トラフィック分割(トラフィック・テストと呼ばれることもある)は、トラフィック制御のうちの一つで、ある環境で同時に実行されているバックエンド・アプリケーションの異なるバージョン(通常は現行のプロダクション・バージョンとアップデート・バージョン)に向けられる受信トラフィックの割合をコントロールする行為を指します。これにより、顧客に影響を与えることなく、新機能や新バージョンの機能性や安定性をテストすることができるため、アプリケーションの開発サイクルには欠かせない要素となっています。デバッグルーティングカナリヤデプロイメントA/Bテストブルーグリーンデプロイメントなどの有用なデプロイメントシナリオがあります。この4つの用語の使い方は、業界内でもあまり統一されていません。ここでは、その定義を理解した上で使用しています)。

NGINXによって実現できること

ほとんどのIngressコントローラサービスメッシュは、高度なトラフィック制御や分割を実現できます。どのテクノロジーを使用するかは、アプリケーションのアーキテクチャやユースケースによって異なります。例えば、Ingressコントローラを使用することは、以下の3つのシナリオで意味があります。

もしあなたのシステムがサービスメッシュを必要とするほど複雑な場合、一般的なサービスメッシュのユースケースは、テストやアップグレードを個々のマイクロサービスに適用する際のトラフィック分割です。例えば、モバイルフロントエンドの後段で異なるバージョンの位置情報に関するマイクロサービスAPIに対しカナリアデプロイメントを実施したいと思うかもしれません。

しかし、一部のIngressコントローラやサービスメッシュでトラフィックの分割を設定するには、様々な理由で時間がかかり、エラーが発生しやすくなります。

NGINX Ingress ControllerNGINX Service Meshを使えば、堅牢なトラフィックルーティングとトラフィックの分割ポリシーを数秒で簡単に設定することができます。当社のエキスパートによるライブストリーム・デモをご覧いただき、簡単な設定、高度なカスタマイズ、可視性の向上により、いかに時間を節約できるかをご覧ください。

NGINX Ingress ResourceとSMIでより簡単な設定を実現

NGINXの下記のような機能により、設定が容易になります。

高度なカスタマイズにより、より高度なトラフィック制御と分割を実現

NGINXの下記の機能により、洗練された方法でトラフィックをコントロールしたり、分割したりすることが容易になります。

ダッシュボードでトラフィック分割のレポート分析

トラフィック分割を実施したら、次は、その結果を分析してみましょう。多くの組織において、実はこれが行われておらず、Kubernetesのトラフィックやアプリケーションのパフォーマンスに関する重要なインサイトが見逃されています。NGINXは、NGINX Plusダッシュボードと、Prometheus Exporterで公開されたメトリクスを視覚化するGrafanaダッシュボードを構築することで、インサイトの取得を容易にしています。インサイトを得るための可視性の向上については、ブログの「How to Improve Visibility in Kubernetes」をお読みください。

NGINXを使ってマイクロサービスをマスターしてみましょう

NGINX Ingress Controllerは、コンテナアプリケーションを保護するNGINX App Protectモジュールを含め30日間無料でトライアルが可能です。

NGINXオープンソース版のNGINX Ingress Controllerを試すには、リリースのソースコードを入手するか、DockerHubからビルド済みのコンテナをダウンロードすることができます。

NGINX Service Mesh(無料)は、f5.comからダウンロードできます。