アプリケーション サーバーの負荷分散と高可用性: Tomcat、Jboss、IIS

カテゴリを表示

アプリケーション サーバーの負荷分散と高可用性: Tomcat、Jboss、IIS

所要時間

概要 #

この記事の目的は、次のようなアプリケーションサーバーの機能を強化する方法を説明することです。 雄猫, Jboss or IIS 高度な Web スケーラビリティを実現し、障害に耐性を持つように高可用性を設定する方法、およびサイバーセキュリティを強化する方法について説明します。

高可用性とは何ですか? #

高可用性とは、通常よりも長い期間にわたって、高レベルの運用パフォーマンス (通常は稼働時間) を保証するシステムまたはコンポーネントの品質です。

設定により アプリケーションサーバー 高可用性では、次の問題を解決します。

  1. 単一のサーバーでは大量のリクエストを処理する際に効率が悪くなる
  2. サーバー障害の場合でもセッションデータは保存されます
  3. サービスを中止せずにアプリケーションを更新する

Webスケールとは何ですか? #

アプリケーション サーバーに Web スケールの原則を適用すると、あらゆる規模のビジネス プロセスを拡張、最適化、自動化し、効果的に拡張できるようになります。

アプリケーション サーバーとは何ですか? #

アプリケーション サーバーは、アプリケーション プログラムのビジネス ロジックを提供するソフトウェア フレームワークです。つまり、Web アプリケーションを作成するためのリソースと、それらを実行するサーバー環境を管理します。
この記事はあらゆるアプリケーション サーバーのガイドとして使用できますが、ここでは最も人気のある次のサーバーの詳細について説明します。

  1. その 雄猫 ソフトウェア (Apache Tomcat または Tomcat サーバーとも呼ばれます) : Java サーブレット、JavaServer Pages、Java Expression Language、および Java WebSocket テクノロジのオープン ソース実装。
  2. JBoss or ワイルドフラリー: Red Hat が開発したアプリケーション サーバー。
  3. IIS (インターネット インフォメーション サービス): Microsoft が開発したアプリケーション サーバー。

セットアップ RELIANOID ロードバランサ #

自律的AI RELIANOID ロードバランサ アプリケーションサーバーの高可用性とスケーラビリティを確保できます。これらの手順を実行するには、 RELIANOID ロードバランサと複数のアプリケーションサーバーインスタンス。ここで説明する環境は以下のとおりです。

アプリケーションサーバースキーム

ステップ0: サーバーのレプリケーション #

この例では、各アプリケーションに2つのバックエンドサーバーを使用していますが、必要に応じて任意の数を追加できます。一貫性を確保することが重要です。アプリケーションサーバーに接続する際に、常に同じ内容が表示され、アプリケーションに保存されているすべてのデータが失われないようにするためです。これを実現するには、サーバー間でセッションレプリケーションを設定する必要があります。これを「レプリケーション」と呼びます。 ステップ 0 これはアプリケーション サーバーで実行する必要があるためです。

雄猫 組み込みのメモリ内セッションレプリケーションを提供します。 デルタマネージャー and バックアップマネージャーこれら2つのレプリケータの主な違いは、 デルタマネージャー 速度は遅くなりますが、障害が発生した場合の信頼性は高くなります。

JBoss また、セッションレプリケーションを有効にする簡単な方法も提供しています。 web.xml ディスクリプタ。

サービスレプリケーション IIS 次のような方法で実現できます DFSR (分散ファイル システム レプリケーション)。

ステップ1: 仮想IPを作成する #

Once RELIANOID ロードバランサーがインストールされている場合は、新しい仮想IPを作成する必要があります。メインメニューから、 ネットワーク->仮想インターフェース->アクション->作成

仮想IPを作成したい物理インターフェースを見つけます

 

新しい仮想IPの名前とアドレスを入力します。「作成」ボタンをクリックして保存します。

ステップ2: httpファームを作成する #

ファームまたはクラスタとは、サーバ機能を提供し、その能力を大幅に向上させるコンピュータサーバの集合体です。 ファーム and 同義語として、両者の間には若干の違いがあります。 冗長性が暗示されているが、 ファーム冗長性の有無は問いません。今回のケースでは、障害耐性のある構成を採用するため、「ファーム」と「クラスター」は同義語として考えることができます。

このように、アプリケーションサーバーのファームを構築することで、高可用性に不可欠なパフォーマンスと耐障害性が向上します。これを実現するには、 LSLB->農場->作成

名前を選択して HTTP プロファイルとしてhttpプロファイルを選択します。これは、同じ仮想IPとポートでコンテンツ切り替えオプションを提供できるため、Webサービスに最適なオプションです。

さらに1つのオプションが表示されます。ステップ80で作成した仮想IPとポート(この例ではHTTPプロトコルのデフォルトであるXNUMXを選択)を選択し、 Save

ステップ3: サービスを追加する #

基本的な考え方は、異なるアプリケーションサーバーから異なるアプリケーションを、同じ仮想IPとポート番号で提供することです。そのため、ファームを作成したら、新しいサービスを追加するために編集する必要があります。この例では、3つのサービスを設定します。各アプリケーションサーバーに1つずつです。ボタンをクリックしてください。 ファームを編集.

ファームのいくつかの詳細を編集できます。例では、デフォルト値とサービスを設定します。

上のスクリーンショットでは サービスを追加しました サービス名は「app1」です。

 

3つのサービスすべてに同じファーム経由でアクセスするため、これらのサービスを区別する必要があります。そのためには、 URLパターンこのフィールドは、クライアントが特定のURLパターンを通じて要求しているURLに応じてWebサービスを特定します。この例では、 ^/app1.*, ^/app2.* and ^/app3.*。 をクリックしてください 修正します 変更を適用します。

バックエンドがアドレスを見つける必要があることを考慮してください http://[VIRTUAL_IP]:[PORT]/[YOUR_SERVICE] (この例では http://192.168.56.200/app1)これを保証するには、アプリケーションでコンテキストを設定する必要があります。例では、コンテキストを設定します。 /アプリ1雄猫, /アプリ2Jboss and /アプリ3IISを選択します。 コンテキスト 特定の仮想ホスト内で実行されるウェブアプリケーションを表します。 IISコンテキストはアプリケーションと呼ばれます。

この例では、アプリケーションごとに8080つのバックエンドサーバーがあります。IP、ポート(デフォルトではXNUMX)を選択します。 雄猫 and JBoss、および80 IIS)、タイムアウトと重量を選択し、クリックします バックエンドを保存

サーバーの切り替えは避けたいものです。セッション中にサーバー間を移動すると、効率性、データ、さらには通信のロスが発生します。これを避けるために、 永続セッション 設定が必要です。セッションIDごとにセッションを維持することを選択するため、セッション中は1つのサーバーにのみ接続します。

サービスのグローバルパラメータで、持続セッションフィールドを次のように変更できるようになりました。 クッキー: 特定のクッキー

選択する JSESSIONID TomcatとJbossの永続セッション識別子として セッションID IIS の場合は、ページの下部にある [更新] をクリックします。

 

さて、同じファームで、app2とapp1にapp2と同じ方法で3つのサービスを追加する必要があります。これにはJBossの永続性クッキー(デフォルトは JSESSIONID)およびIIS(ASP.NETのデフォルトのCookieは ASPXAUTH)ですが、アプリケーションで必要なCookieを使用することもできます。ファーム内の各サービスには独自のバックエンドがあり、ファーム間またはファームのサービス間で共有できます。

正しい URL パターンと一致させるには、サービスの順序が重要であることに注意してください。

最後に、ファームを再起動して変更を適用する必要があります。

おめでとう! アプリケーションサーバーを高可用性モードで構成しました。アクセスするには、次のように入力します。 http://[VIRTUAL_IP]:[PORT]/[YOUR_SERVICE] (この例では http://192.168.56.200/app1, http://192.168.56.200/app2 or http://192.168.56.200/app3).

ステップ4: 高度なチェック #

ファームガーディアンを設定して、バックエンドの高度なヘルスチェックを実行し、TCPポートチェックだけでなく、バ​​ックエンドが起動して実行され、アプリケーションが正しく動作していることを確認します。 ファームガーディアン ステップ3で設定したサービス内で、 FarmGuardianを使用してバックエンドサーバーをチェックするチェックと最終チェックの間の時間を変更することもできます。 確認するコマンド テキストボックスに次のコマンドを入力します。

check_http -I ホスト -w 10 -c 10 -t 10 -e 200 -p ポート -s ' '

最後に、ページの下部にある「更新」をクリックします。

 

コマンド チェック_http 指定されたホストとの HTTP 接続をテストします。この場合、次のオプションを使用します。

-私はホスト: トークン HOST は、定義されたバックエンド IP アドレスに置き換えられます。
-w 10: 警告ステータスになるまでの応答時間: 10 秒
-c 10: 重大な状態への応答時間: 10 秒
-t 10: 接続がタイムアウトする10秒前
-e 200: サーバー応答のステータスに文字列200が返されることを期待します
-p ポート: トークン PORT は定義されたバックエンド ポートに置き換えられます。
-s ' ': コンテンツに期待される文字列は ' '

このコマンドは基本的に、200 OK 応答が返されるかどうか、また応答コマンドに「 '。この文字列を選択したのは、応答の最後にあるためです。これにより、バックエンドから完全な回答が得られることが保証されます。

ステップ5: 高いセキュリティ #

安全な通信は簡単に設定できます RELIANOID ロードバランサーなので、次のステップはHTTPSリスナーを有効にすることです。 ファームのグローバルパラメータを編集する 画面で、ファーム リスナーを HTTP から HTTPS に、仮想ポートを 443 に変更してください。

今では、次のように入力することでサービスにアクセスできます。 https://[Your_virtual_ip]/[yourappservice] あなたのブラウザに表示されます。

安全な通信は実行されていますが、HTTPSパラメータを設定することでさらに進めることができます。ファームのグローバルパラメータ内で、 HTTPS Settings セクション。 暗号 〜へ 高いセキュリティ.

暗号フィールドは、SSL接続を強化するために、SSL接続で受け入れられる暗号のリストを作成するために使用されます。 高いセキュリティ、デフォルトで暗号を設定します。

kEECDH+ECDSA+AES128:kEECDH+ECDSA+AES256:kEECDH+AES128:kEECDH+AES256:kEDH+AES128:kEDH+AES256:DES-CBC3-SHA:+SHA:!aNULL:!eNULL:!LOW:!kECDH:!DSS:!MD5:!EXP:!PSK:!SRP:!CAMELLIA:!SEED

別の選択肢は HTTPS証明書が利用可能: 現在のファームで選択できる証明書のリストが表示されます(HTTPファームのみ、今回の場合はこれに該当します)。リストから1つ選択してクリックします。 追加。 最後にをクリック 修正します 変更を適用するには、ファームを再起動します。

詳細はこちらをご覧ください。 HTTP プロファイル ファーム.

HTTPSはアプリケーションサーバーでも有効にできますが、その場合はオプションを有効にする必要があります。 HTTPSバックエンド.

📄 この文書をPDF形式でダウンロードする #

    EMAIL: *