1 Oracle Linuxでのロード・バランシングについて

この章では、Oracle Linuxで使用されるロード・バランサ・テクノロジの概要について説明します。この章には、インストールと構成に関する情報も記載されています。

ロード・バランシングについて

ロード・バランシングという用語は、バックエンド・サーバーのグループ間で受信ネットワーク・トラフィックを効率的に分散するということです。ロード・バランシングを使用すると、インフラストラクチャの可用性と信頼性が高く、パフォーマンスが低下しないことが保証されます。ロード・バランサは通常、HTTP、HTTPS、TCPおよびUDPプロトコルのトラフィックを処理できます。

ロード・バランサは、これらのリクエストを処理できるすべてのサーバーにクライアント・リクエストをルーティングすることで、ネットワーク・トラフィックを管理します。このルーティングは、速度と容量の使用を最大化するため、特定のサーバーが過負荷になることはなく、全体的なパフォーマンスが向上します。サーバーが使用できなくなったり停止したりする状況になると、ロード・バランサは受信トラフィックをオンラインの他のサーバーにリダイレクトします。このようにして、サーバーのダウンタイムは最小限に抑えられます。新しいサーバーがサーバー・グループに追加されると、ロード・バランサはワークロードを自動的に再分散し、その新しいサーバーへのリクエストの送信を開始します。

Oracle Linuxでは、ネットワーク・トラフィックのロード・バランシングは、主にHAProxyとKeepalivedの2つの統合ソフトウェア・コンポーネントによって処理されます。HAProxy機能はTCPおよびHTTPにロード・バランシングおよび高可用性サービスを提供し、Keepalivedはアクティブ・ルーターとパッシブ・ルーターの両方でロード・バランシングおよびフェイルオーバー・タスクを実行します。NGINX機能は、ロード・バランシングのためにOracle Linuxでも使用できます。

HAProxyについて

HAProxy (高可用性プロキシ)は、アプリケーション・レイヤー(レイヤー7)のロード・バランサおよび高可用性ソリューションであり、HTTPベースおよびTCPベースのインターネット・サービスにリバース・プロキシを実装するために使用できます。アプリケーション・レイヤーのロード・バランサには、多くの機能が含まれていることがよくあります。ルーティングしているトラフィックのコンテンツを検査し、必要に応じて各パケット内のコンテンツを変更したり、コンテンツに基づいて各パケットを処理する方法を決定できます。したがって、HAProxyはセッション永続性、TLS、ACLおよびHTTPリライトとリダイレクトを実装できます。

haproxyデーモンの構成ファイルは、/etc/haproxy/haproxy.cfgです。このファイルが、ロード・バランシングまたは高可用性のためにHAProxyを構成する各サーバーに存在している必要があります。

詳細は、http://www.haproxy.org/#docs/usr/share/doc/haproxy-versionドキュメントおよびhaproxy(1)マニュアル・ページを参照してください。

Keepalivedについて

Keepalivedは、ネットワークベースのサービスに対するリクエストをサーバー・クラスタの個々のメンバーにリダイレクトすることで、IP Virtual Server (IPVS)カーネル・モジュールを使用してトランスポート・レイヤー(レイヤー4)のロード・バランシングを提供します。IPVSは、各サーバーのステータスをモニターし、Virtual Router Redundancy Protocol (VRRP)を使用して高可用性を実装します。トランスポート・レイヤーで機能するロード・バランサは、再ルーティングされるパケットの内容をあまり認識しません。このため、アプリケーション・レイヤーで機能しているリバース・プロキシ・システムよりも、このタスクを大幅に高速に実行できるという利点があります。

keepalivedデーモンの構成ファイルは/etc/keepalived/keepalived.confです。このファイルが、ロード・バランシングまたは高可用性のためにKeepalivedを構成する各サーバーに存在している必要があります。

詳細は、https://www.keepalived.org/documentation.html/usr/share/doc/keepalive-versionドキュメント、keepalived(8)およびkeepalived.conf(5)マニュアル・ページを参照してください。

VRRPでのKeepalivedの使用

VRRPは、インバウンド・トラフィックを処理するために使用できるルーターを自動的に割り当てるネットワーク・プロトコルです。このプロトコルの詳細な標準ドキュメントは、https://tools.ietf.org/html/rfc5798を参照してください。

Keepalivedでは、VRRPを使用してネットワーク上のすべてのルーターの現在の状態を確認します。このプロトコルにより、ルーティングでプライマリ・ルーターとバックアップ・ルーターを自動的に切り替えることができます。バックアップ・ルーターは、プライマリ・ルーターがいつ使用できなくなったかを検出し、新しいプライマリ・ルーターとしてルーターの1つが「選択」されるまでマルチキャスト・パケットを相互に送信します。フローティング仮想IPアドレスは、常にプライマリ・ルーターにトラフィックを転送するために使用できます。元のプライマリ・ルーターがオンラインに戻ると、新しいルーティング状態が検出され、バックアップ・ルーターとしてネットワークに戻ります。

VRRPを使用する利点は、このプロセスを管理するために個別のソフトウェア・サービスまたはハードウェア・デバイスを必要とすることなく、複数のルーターを使用することで高可用性と冗長性を実現できることです。各ルーターで、KeepalivedはVRRP設定を構成し、ネットワーク・ルーティングが正しく機能し続けるようにします。

詳細は、https://www.keepalived.org/documentation.html/usr/share/doc/keepalive-versionドキュメント、keepalived(8)およびkeepalived.conf(5)マニュアル・ページを参照してください。

高可用性ロード・バランシングのためのKeepalivedとHAProxyの組合せについて

KeepalivedおよびHAProxyロード・バランサ機能を組み合せて、高可用性のロード・バランシング環境を実現できます。HAProxyは、ロード・バランシング・サービスを構成する際に、スケーラビリティ、アプリケーション対応の機能および構成しやすさを提供します。Keepalivedは、バックアップ・ルーターへのフェイルオーバー・サービス、および可用性を高めるために複数のサーバーに負荷を分散する機能を提供します。

この複雑な構成シナリオでは、異なるロード・バランシング・アプリケーションを相互に使用して、冗長性を高め、スタックの異なるレイヤーで機能を利用する方法を説明します。この例は、Keepalivedを使用してHAProxyの冗長性を提供する方法を示していますが、NGINXなどの代替アプリケーション・レイヤー・プロキシ・システムでKeepalivedを使用して同様の結果を実現することもできます。

詳細は、HAProxyでのKeepalivedを使用したロード・バランシングの拡張を参照してください。

NGINXについて

NGINXは、リバース・プロキシ、トラフィック・ルーティング、およびHTTP、HTTPSまたはTCP/UDP接続用のアプリケーション・レイヤーのロード・バランシングのためのモジュール型の機能を提供するHTTPサーバーです。NGINXロード・バランシングおよびプロキシ・サービスを使用して、アプリケーションのパフォーマンス、スケーラビリティおよび信頼性を改善するためにトラフィックを分散できます。

NGINXには、次のロード・バランシング方法のための機能が用意されています。

  • ラウンド・ロビン: グループ内のサーバーのリストをたどって、クライアント・リクエストを各サーバーに順番に転送することによって、アプリケーション・サーバーにリクエストを分散します。リストの最後に達すると、ロード・バランサはこの同じシーケンスを繰り返します。ラウンド・ロビンは、NGINXで使用されるデフォルトの方法です。

  • 最少接続。アクティブな接続数が最も少ないサーバーに次のリクエストを割り当てます。最少接続の方法では、ロード・バランサは、各サーバーの現在アクティブな接続数を比較し、接続数が最少のサーバーにリクエストを送信します。構成は、least_connディレクティブを使用して設定します。

  • IPハッシュ。ハッシュ機能を使用して、次のリクエストに対して選択するサーバーをクライアントのIPアドレスに基づいて決定します。構成は、ip_hashディレクティブを使用して設定します。

詳細は、NGINXを使用したロード・バランシングの設定を参照してください。

https://docs.nginx.com/nginx/も参照してください。