Linux で Nginx ロード バランシングを使用して複数の Tomcat を構成する方法

Linux で Nginx ロード バランシングを使用して複数の Tomcat を構成する方法

Linux に nginx と複数の tomcat をインストールする方法はここでは紹介しません。不明な場合は、以下を参照してください。

Linux に nginx をインストールします。

https://www.jb51.net/article/159519.htm

Linux に複数の Tomcat をインストールする:

https://www.jb51.net/article/159521.htm

サーバーに nginx と複数の tomcat がインストールされたら、nginx の負荷分散を試してみることができます。

まず私の動作環境を簡単に紹介します

Alibaba Cloudサーバー、

Linuxシステム、jdk1.8、nginxがインストール済み、

4 つの Tomcat がインストールされており、それぞれ 8080、8081、8082、8083 に対応するポート番号が設定されています。


1: nginxディレクトリの下のconfディレクトリに入る

これは私の nginx インストール ディレクトリです:

[root@aliServer ~]# cd /usr/local/nginx/conf

2: nginx.confを編集する


[root@aliServer conf]# vi nginx.conf

3. サーバーグループを構成する

1: http{} ノード間にアップストリーム構成を追加します。 (localhost と書かないように注意してください。そうしないとアクセス速度が非常に遅くなります)

アップストリーム nginxDemo {
  server 127.0.0.1:8081; #サーバーアドレス1
  server 127.0.0.1:8082; #サーバーアドレス2
  server 127.0.0.1:8082; #サーバーアドレス 3
  server 127.0.0.1:8083; #サーバーアドレス 4
}

2: nginxがリッスンするポート番号80を変更する

nginx のデフォルト ポートは 80 です。まだ変更していません。

サーバー{
  listen 80; #デフォルトは80ですが、他のポート番号に変更できます。もちろん、占有されているポート番号は書き込めません。
  ......
}

3: proxy_passを使用してリバースプロキシアドレスを設定する

location\{} には、「http://」を含める必要があり、次のアドレスは最初のアップストリーム ステップで定義された名前と一致している必要があります (つまり、nginxDemo という名前はカスタマイズされており、2 つの場所は一致している必要があります)。

位置 / {
      ルートhtml;
      インデックス index.html index.htm;
      proxy_pass http://nginxDemo; #プロキシアドレスを設定する}

設定が完了すると、図に示すように次のようになります。


4: nginxを起動する

私のnginxのインストールパスは/usr/local/nginxです

私の起動コマンドは次のようになります:

[root@aliServer ~]# /usr/local/nginx/sbin/nginx

nginxは以前にインストールされたときに起動されていたため、再度起動するとポート番号が占有されているというエラーが報告されます。


今回は、各ポート番号の占有状況を表示するコマンドを使用します。

[root@aliServer ~]# netstat -ntpl 

nginx が PID 9097 で占有されていることがわかります。kill -9 を使用してこれを強制終了します。

[root@aliServer ~]# kill -9 9097

nginxを再度起動します

[root@aliServer ~]# /usr/local/nginx/sbin/nginx

応答がない場合は、ブラウザにサーバーアドレスを入力してください


これは、nginx が正常に起動したことを示しています。次に、構成が正しいかどうか、負荷を分散できるかどうかを確認しましょう。 。 。

5: 検証

nginx ロード バランシングを使用すると、すべてのクライアント リクエストが nginx を経由するため、nginx はこれらのリクエストを誰に転送するかを決定できることは周知の事実です。サーバー A のリソース (CPU、メモリなど) が多く、サーバー B の処理能力がサーバー A ほど強力でない場合、nginx はより多くのリクエストを A に転送し、サーバー B へのリクエストは少なくなります。このようにしてロード バランシングが実現され、サーバーの 1 つがダウンしても、ユーザーは引き続き Web サイトに通常どおりアクセスできます。

検証の前に、いくつかの準備が必要です。

1: 次のような単純な jsp を準備します。


1台のサーバーに4台のTomcatをインストールしたので、4つのindex.jspファイルを用意しました。

彼らです

<title>Tomcat8080<title> <h1>こんにちは、Tomcat_8080</h1>
<title>Tomcat8081<title> <h1>こんにちは、Tomcat_8081</h1>
<title>Tomcat8082<title> <h1>こんにちは、Tomcat_8082</h1>
<title>Tomcat8083<title> <h1>こんにちは、Tomcat_8083</h1>

ここで注意すべき点は、tomcat の起動が成功した場合の画面が図のようになるため、jsp ファイルの名前は index.jsp である必要があるということです。


tomcatインストールディレクトリのwebapps/ROOT/index.jspを読み取ります。

私のアドレスは: /usr/java/tomcat/tomcat_8080/webapps/ROOT


各 Tomcat のデフォルトの index.jsp ファイルを、前に準備した 4 つの index.jsp ファイルで上書きします。

各Tomcatを起動する

[root@aliServer bin]# ./startup.sh

このとき、ブラウザに xxx.xxx.xx.xx:8080 と入力すると、子猫が表示されなくなることがわかります。 。 。 。 。 。




4 台の Tomcat はすべて正常に起動し、nginx も正常に起動しました。

この時点で、ブラウザにサーバーの IP アドレスを入力し、ページを継続的に更新します。ページに 8080、8081、8082、8083 が表示されます。もちろん、これは nginx が、どのサーバーのリソースが十分であるかに基づいて、リクエストの送信先を決定するためです。ブラウザでのリクエストのアドレスは変更されませんが、異なる tomcat サーバーにアクセスします。これは、nginx が正常に構成されていることを意味します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginx リバース プロキシと負荷分散を実装する方法 (Linux ベース)
  • Linux システムでの nginx サーバーのインストールと負荷分散構成の詳細な説明
  • Linux で nginx ロード バランシングを構築する方法
  • Linuxシステム構成の詳細な説明 nginx ロードバランシング
  • Linux での Nginx 負荷分散構成の使用例の詳細な説明。

<<:  MySQL Community Server 圧縮パッケージのインストールと設定方法

>>:  JavaScript PromiseとAsync/Awaitの詳細な説明

推薦する

WeChatアプレットが計算機機能を実装

WeChatミニプログラムはますます人気が高まっています。多くの大学生が独学で学んでいるのも見てきま...

MySQLで最大接続数を達成する方法

目次データベース接続数が急増した理由は何ですか? 1. はじめに2. 知識ポイント3. 練習するIV...

複数の Docker コンテナが同じポート番号を持たない場合の解決策

背景Dockerでは、同じイメージを使用して4つのコンテナを作成します。ネットワークはブリッジモード...

MySql8.0以降のバージョンでROOTパスワードを正しく変更する方法

展開環境:インストールバージョン Red Hat Cent 7.0 MYSQL バージョン 8.0....

nginx設定ファイルの場所を見つける方法の詳細な説明

よく知らないサーバーの場合や、かなり前にインストールした場所を忘れてしまった場合、構成ファイルの場所...

MYSQL 演算子の概要

目次1. 算術演算子2. 比較演算子3. 論理演算子4. ビット演算子5. 演算子の優先順位1. 算...

CSS3 クリアフロートメソッドの例

1. 目的この記事を通じて、誰もがフロートをクリアする原理と方法を理解し、最終的にこの記事が最良であ...

Tudou.comのホームページのデザイン方法

<br />私は数年間フロントエンドに取り組んできました。フロントエンドについて完全に理...

Linuxファイルの基本属性の知識ポイントのまとめ

Linux システムは典型的なマルチユーザー システムです。異なるユーザーは異なる立場にあり、異なる...

LinuxにNginxをインストールする詳細な手順

1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...

MySQL データベースにおける高同時実行性の問題を解決する方法

序文スタートアップ企業が最初はモノリシック アプリケーションを主要なアーキテクチャとして使用し、通常...

CSSリンクと@importの違いの詳細な説明

HTML に CSS を追加するにはどうすればいいですか? HTML で CSS を設定する方法は ...

MySQL でパーティション分割後にクエリを実装するために MRG_MyISAM (MERGE) を使用する例

大量のデータベース データを最適化することは非常に高度な科学であり、開発者が習得する必要がある専門的...

Vue はデータの変更をどのように追跡しますか?

目次背景例誤解 - コールスタックを表示するためにウォッチでブレークポイントを設定する正しいアプロー...

Vue.js で AntV X6 を使用する手順の例

目次0x0 はじめに0x1 インストール0x2 ノードサイドバー0x3 統合例0x0 はじめにプロジ...