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

投稿者 Zevenet | 24年2017月XNUMX日

概要

この記事の目的は、次のようなアプリケーションサーバーの機能を拡大する方法を説明することです。 雄猫, Jboss or IIS Webスケーラビリティを高くし、障害に耐えるためにそれらを高可用性に設定することによって、そしてサイバーセキュリティを強化する方法。

高可用性とは

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

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

  1. 1台のサーバーで大量の要求を処理するときの効率が低下する
  2. サーバーに障害が発生してもセッションデータは保持されます。
  3. サービスを中断せずにアプリケーションを更新する

Webスケールとは

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

アプリケーションサーバーとは

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

  1. 世界 雄猫 ソフトウェア(またはApache TomcatまたはTomcatサーバーとも呼ばれる):Javaサーブレット、JavaServer Pages、Java式言語、およびJava WebSocket技術のオープンソース実装。
  2. JBoss or ワイルドフラリー:Red Hatが開発したアプリケーションサーバー。
  3. IIS (インターネットインフォメーションサービス):マイクロソフトによって開発されたアプリケーションサーバー。

Zevenetロードバランサーの設定

Zevenetロードバランサー アプリケーションサーバーの高可用性とスケーラビリティを確保できます。 これらの手順に従うには、Zevenet Load Balancerのインスタンスとアプリケーションサーバーの複数のインスタンスをインストールする必要があります。 これから説明する環境は次のとおりです。

アプリケーションサーバー方式

ステップ0:サーバの複製

この例では、各アプリケーションに2つのバックエンドサーバーを使用していますが、必要なだけ含めることができます。 アプリケーションサーバーに接続したときに常に同じデータが表示され、アプリケーションに保存されているすべてのデータが失われないように、一貫性を確保することが重要です。 これを達成するために、サーバ内のセッション複製は設定されなければなりません。 これを呼ぶ ステップ0 これはアプリケーションサーバーで実行する必要があるためです。

雄猫 組み込みのインメモリセッションレプリケーションを提供します。 DeltaManager 及び バックアップマネージャ。 これら2つのレプリケータの主な違いは、 DeltaManager 遅くなりますが、失敗した場合の信頼性は高くなります。

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

のサービス複製 IIS を使用して達成することができます DFSR (分散ファイルシステムの複製)

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

Zevenet Load Balancerをインストールしたら、新しい仮想IPを作成する必要があります。メインメニューから、[ ネットワーク->仮想インターフェース->アクション->作成

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

 

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

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

ファームまたはクラスターは、サーバー機能を提供してその機能を大幅に向上させるコンピューターサーバーの集合です。 我々は用語を使用していますが ファーム 及び クラスタ 同義語として、それらの間にはわずかな違いがあります。 について話すとき クラスタ冗長性が暗示されていますが、 ファーム、冗長性があるかもしれないしないかもしれません。 今回の場合、障害構成に耐性があるため、ファームまたはクラスタについて同義語として話すことができます。

このように、アプリケーションサーバーのファームを設定することで、そのパフォーマンスと耐障害性を向上させます。これは、高可用性に不可欠です。 これを達成するために行きなさい LSLB->農場->作成

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

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

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

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

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

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

 

同じファームを通じて3つのサービスすべてにアクセスするので、これらのサービスを区別する必要があります。 これを行うには、次の値を設定します。 URLパターン。 このフィールドは、クライアントが特定のURLパターンを通して要求しているURLに従ってWebサービスを決定することを可能にします。 この例では、 ^ / app1。*, ^ / app2。* 及び ^ / app3。*。 をクリックしてください 修正します 変更を適用します。

バックエンドがアドレスを見つけなければならないことを考慮に入れてください http://[VIRTUAL_IP]:[PORT]/[YOUR_SERVICE] (この例では http://192.168.56.200/app1これを保証するためには、コンテキストをアプリケーションに設定する必要があります。 この例では、コンテキストを設定します。 / app1 for 雄猫, / app2 for Jboss 及び / app3 for IISとして指定することができます。 コンテキスト 特定の仮想ホスト内で実行されるWebアプリケーションを表します。 の特定の場合 IISコンテキストはアプリケーションと呼ばれます。

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

私たちは、サーバーの交換を避けたいと思います。私たちのセッション中に、あるサーバーから別のサーバーにジャンプすると、効率性、データ、さらには通信損失さえもあるでしょう。 これを避けるために 持続セッション 設定する必要があります。 セッションIDでセッションを維持することを選択します。したがって、セッション中は1つのサーバーにのみ接続します。

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

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

 

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

サービスの順序は正しい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 HOST -w 10 -c 10 -t 10 -e 200 -p PORT -s '</html>'

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

 

コマンド check_http 指定されたホストとのHTTP接続をテストします。 私たちの場合は、次のオプションを使用しています。

-Iホスト:トークンHOSTは定義されたバックエンドIPアドレスに置き換えられます。
-w 10:警告ステータスになるまでの応答時間:10秒
-c 10:クリティカルステータスへの応答時間:10秒
-t 10:接続がタイムアウトするまでの10秒
-e 200:サーバー応答の状況にストリング200が必要です
-p PORT:トークンPORTは定義されたバックエンドポートに置き換えられます。
-s ' ':コンテンツで期待される文字列は ' '

したがって、このコマンドは基本的に、200 OKの応答を取得し、応答コマンドに文字列 'が含まれていることを確認します。 '。 この文字列は応答の最後にあるため選択します。これにより、バックエンドから完全な回答を確実に取得できます。

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

安全な通信はZevenet Load Balancerを使って簡単に設定できるので、次のステップは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ファームのみ)。 リストから選択してクリックすることができます 追加。 最後にをクリック 修正します 変更を適用するためにファームを再起動します。

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

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

上の共有:

GNU Free Documentation Licenseの条項に基づくドキュメンテーション。

この記事は役に立ちましたか?

関連記事