前書き

DigitalOceanロードバランサを使用すると、着信トラフィックを複数のバックエンドサーバー間で分割できます。 多くの場合、これを使用してアプリケーションサーバーのグループ間でHTTP要求を分散し、全体的な容量を増やします。 これは、アプリケーションをスケーリングする一般的な方法です。

ロードバランサーは他のユースケースも提供します。 たとえば、サイトの信頼性を高めたり、展開およびテストプロセスを改善したりできます。 このチュートリアルでは、5つのLoad Balancerのユースケースを確認します。

始める前に、チュートリアルhttps://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-load-balancers[DigitalOcean Loadの概要]を読んで、DigitalOceanのロードバランサーの基本を理解する必要があります。バランサー]。

[[1-load-balancing-for-scale]]
=== 1. スケールの負荷分散

前述のように、トラフィックのスケーリングは、ロードバランサーの最も一般的な使用例です。 多くの場合、スケーリングは_vertical_および_horizo​​ntal_の用語で説明されています。 基本的に、垂直スケーリングとは、増加するパフォーマンス要求を満たすために、アプリケーションをより強力なサーバーに移動することです。 水平スケーリングとは、負荷を共有するために複数のサーバーにトラフィックを分散することです。 ロードバランサーは、水平スケーリングを容易にします。

image:https://assets.digitalocean.com/articles/lb-use-cases/lb-scale.png [ロードバランサーのスケーリング図]

DigitalOceanロードバランサーを使用すると、ラウンドロビン接続と最小接続の2つの異なるアルゴリズムを介して負荷を分散できます。 ラウンドロビンは、使用可能な各バックエンドサーバーに順番に要求を送信しますが、最小接続は、接続が最も少ないサーバーに要求を送信します。 ラウンドロビンは負荷分散のために最も頻繁に使用されるスキームですが、接続を長時間開いたままにするアプリケーションがある場合、接続が少ないほど、1つのサーバーが過負荷になるのを防ぐことができます。

ロードバランサーを使用した水平スケーリングの副次的な利点は、サービスの信頼性を高めるチャンスです。 次にそれについてお話します。

関連チュートリアル:

[[2-high-availability]]
=== 2. 高可用性

高可用性とは、ダウンタイムを削減し、システムの信頼性を高める取り組みを表す用語です。 これは多くの場合、パフォーマンスを改善し、単一障害点を排除することで対処されます。

ロードバランサーは、バックエンドサーバーでヘルスチェックを繰り返し実行し、障害が発生したサーバーをプールから自動的に削除することにより、可用性を向上させることができます。

image:https://assets.digitalocean.com/articles/lb-use-cases/lb-ha.png [ロードバランサーの高可用性図]

ヘルスチェックは、Load Balancerコントロールパネルの[設定]エリアでカスタマイズできます。

image:https://assets.digitalocean.com/articles/lb-use-cases/health-check.png [ロードバランサーのヘルスチェックインターフェイス]

デフォルトでは、Load Balancerは10秒ごとにWebページをフェッチして、サーバーが適切に応答していることを確認します。 これが3回続けて失敗した場合、問題が解決するまでサーバーは削除されます。

関連チュートリアル:

[[3-blue-green-deployments]]
=== 3. ブルー/グリーン展開

ブルー/グリーン展開とは、本番インフラストラクチャに新しいソフトウェアを展開し、徹底的にテストし、すべてが期待どおりに機能していることを確認してからトラフィックを切り替える技術を指します。 デプロイが新しい予期しない方法で失敗する場合、ロードバランサーを古いバージョンに戻すことで簡単に回復できます。

image:https://assets.digitalocean.com/articles/lb-use-cases/lb-blue-green.png [ロードバランサーブルー/グリーン展開図]

DigitalOceanロードバランサーは、https://www.digitalocean.com/community/tutorials/how-to-tag-digitalocean-droplets [Droplet tagging feature]を使用することで、ブルー/グリーン展開を簡単にします。 ロードバランサーは、タグに基づいてサーバーのグループにトラフィックを送信できるため、1組のドロップレットに* blue と他の green *のタグを付けることができます。 カットオーバーするときは、Load BalancerコントロールパネルまたはAPIでタグを切り替えます。

image:https://assets.digitalocean.com/articles/lb-use-cases/edit-tag.png [タグインターフェースを介したロードバランサーのドロップレットの追加]

変更を保存すると、トラフィックは新しいドロップレットセットにすばやく切り替わります。

関連チュートリアル:

[[4-canary-deployments]]
=== 4. カナリアの展開

Canaryデプロイメントは、アプリケーションサーバーのプール全体を更新する前に、ユーザーのサブセットでアプリケーションの新しいバージョンをテストする方法です。 DigitalOceanロードバランサーを使用すると、たとえば、ロードバランサーのプールにカナリアサーバーを1つだけ追加することでこれを実行できます。 ロギングおよびモニタリングインフラストラクチャを介してエラーの増加やその他の望ましくない結果が見られない場合は、プールの残りの部分に更新プログラムを展開することができます。

この使用例では_sticky sessions_を有効にして、ロードバランサーを介して新しい接続を作成するときにユーザーがアプリケーションの異なるバージョン間でバウンスしないようにします。

image:https://assets.digitalocean.com/articles/lb-use-cases/sticky-session.png [ロードバランサースティッキーセッションインターフェイス]

スティッキーセッションはCookieを使用して、特定のブラウザーからの今後の接続が引き続き同じサーバーにルーティングされるようにします。 ロードバランサーのコントロールパネルの[詳細設定]領域でこの機能にアクセスできます。

[[5-a-b-deployment]]
=== 5. A / Bの展開

A / Bデプロイメントはカナリアデプロイメントと機能的に似ていますが、目的は異なります。 A / B展開では、マーケティングおよび開発の取り組みを知らせる情報を収集するために、ユーザーの一部で新機能をテストします。 意味のある結果を得るには、これを既存の監視およびログインフラストラクチャと組み合わせて行う必要があります。

サーバー側では、1つ以上の* B サーバーを既存の A サーバーのプールに追加します。 十分なデータを収集するために複数の B *サーバーを起動する必要がある場合は、ブルー/グリーン展開の場合と同様にタグでこれを整理できます。

結論

ロードバランサーは、拡張が必要な​​場合に最もよく考慮されますが、さまざまなバックエンドサーバー間でトラフィックを分散またはシャッフルする機能があると便利なケースが他にもたくさんあることを示しました。 高可用性を目的とする場合でも、さまざまな展開手法を活用する場合でも、ロードバランサーは、運用インフラストラクチャの柔軟で強力なツールです。

DigitalOceanロードバランサーの詳細で専門的な情報については、次のチュートリアルを参照してください。