Nginx+Tomcat 負荷分散クラスタのインストールと構成のケースの詳細な説明

Nginx+Tomcat 負荷分散クラスタのインストールと構成のケースの詳細な説明

序文

Tomcat と Nginx + Tomcat 負荷分散クラスター、Tomcat アプリケーション シナリオを紹介し、Tomcat のインストールと構成に焦点を当てます。 Nginx + Tomcat 負荷分散ケースは、実稼働環境向けの信頼性の高い Web サイト ソリューションです。

1. Nginx+Tomcat

通常、Tomcat サイトは、単一障害点の可能性があり、顧客からの複雑で多様な要求に対処できないため、実稼働環境で単独で使用することはできません。そのため、Web サイトのアーキテクチャを改善するには、より信頼性の高いソリューションが必要です。

Nginx は優れた http サーバー ソフトウェアです。最大 50,000 の同時接続をサポートし、強力な静的リソース処理機能を備え、安定して動作し、メモリや CPU などのシステム リソースの消費量が非常に少ないです。現在、多くの大規模 Web サイトでは、サイト全体の負荷同時処理能力を向上させるために、バックエンド Web サイト プログラムのリバース プロキシおよびロード バランサとして Nginx サーバーを使用しています。

導入環境

ホストオペレーティング·システムIPアドレスメインソフトウェア

Nginx サーバー

CentOS 7.4 x86_64

192.168.196.146

nginx-1.12.2.tar.gz

Tomcat サーバー 1

CentOS 7.4 x86_64

192.168.196.147

①apache-tomcat-9.0.16.tar.gz / ②jdk-8u201-linux-x64.rpm

Tomcat サーバー 2

CentOS 7.4 x86_64

192.168.196.153

①apache-tomcat-9.0.16.tar.gz / ②jdk-8u201-linux-x64.rpm

2. Nginxサーバーを構成する

1. ファイアウォール関連サービスをオフにする

[root@localhost ~]# systemctl stop ファイアウォールd
[root@localhost ~]# systemctl ファイアウォールを無効にする
[root@localhost ~]# setenforce 0
 
[root@localhost ~]# vim /etc/resolv.conf
ネームサーバー 114.114.114.114

2. 依存パッケージをインストールする

[root@localhost ~]# yum install -y gcc gcc-c++ pcre-devel zlib-devel make

3. Nginxをコンパイルしてインストールする

[root@localhost ~]# tar zxvf nginx-1.12.2.tar.gz -C /opt/
 
[root@localhost ~]# cd /opt/nginx-1.12.2/
[root@localhost nginx-1.12.2]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--http_stub_status_module を使用する
 
[root@localhost nginx-1.12.2]# make && make install
 
[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
[root@localhost ~]# useradd -M -s /sbin/nologin nginx

4. Nginxシステムサービスを追加する

[root@localhost ~]# vim /lib/systemd/system/nginx.service
 
[ユニット]
説明=nginx
後=ネットワーク.ターゲット
[サービス]
タイプ=フォーク
PIDファイル=/usr/local/nginx/logs/nginx.pid
実行開始=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
プライベートTmp=true
[インストール]
WantedBy=マルチユーザー.ターゲット
 
[root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service #権限付与、root以外のユーザーは変更できません [root@localhost ~]# systemctl start nginx.service
[root@localhost ~]# systemctl nginx.service を有効にします

5. Webページのテスト

3. Tomcatアプリケーションサーバーをデプロイする

1. 実施準備

[root@localhost ~]# systemctl stop ファイアウォールd
[root@localhost ~]# systemctl は、firewalld.service を無効にします。
[root@localhost ~]# setenforce 0

2. JDKをインストールし、Java環境を構成する

[root@localhost ~]# rpm -ivh jdk-8u201-linux-x64.rpm

3. JDK環境を設定する

[root@localhost ~]# vim /etc/profile
...
#3行のコンテンツを挿入 export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
エクスポート CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$JAVA_HOME/bin:$PATH をエクスポートします
 
[root@localhost ~]# ソース /etc/profile

4. Tomcatをインストールして設定する

[root@localhost ~]# tar zxvf apache-tomcat-9.0.16.tar.gz -C /opt/
[root@localhost ~]# cd /opt/
[root@localhost opt]# mv apache-tomcat-9.0.16/ /usr/local/tomcat

5. 管理の最適化

[root@localhost ~]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
[root@localhost ~]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/

6. サービスstartup.shを起動する

Tomcat1の設定

1. テストディレクトリを作成する

[root@localhost ~]# mkdir /usr/local/tomcat/webapps/test

2. 動的なページ構成

[root@localhost ~]# vim /usr/local/tomcat/webapps/test/index.jsp
<%@ ページ言語="java" インポート="java.util.*" ページエンコーディング="UTF-8"%>
<html> 
<ヘッド>
<title>JSP test1 ページ</title>
</head>
<本文>
<% out.println("動的ページ 1、http://www.test1.com");%>
</本文>
</html>
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
...
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" /> #約 160 行が挿入されました...
 
[root@localhost ~]# シャットダウン.sh
[root@localhost ~]# startup.sh

Tomcat2の設定

1. テストディレクトリを作成する

[root@localhost ~]# mkdir /usr/local/tomcat/webapps/test

2. 動的なページ構成

[root@localhost ~]# vim /usr/local/tomcat/webapps/test/index.jsp
<%@ ページ言語="java" インポート="java.util.*" ページエンコーディング="UTF-8"%>
<html> 
<ヘッド>
<title>JSP test2 ページ</title>
</head>
<本文>
<% out.println("動的ページ 2、http://www.test2.com");%>
</本文>
</html>
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
...
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" /> #約 160 行が挿入されました...
 
[root@localhost ~]# シャットダウン.sh
[root@localhost ~]# startup.sh

3. nginxは静的ページを準備する

[root@localhost ~]# echo '<html><body><h1>静的インターフェース...</h1></body></html>' > /usr/local/nginx/html/index.html
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
...
アップストリーム tomcat_server {
        サーバー 192.168.192.147:8080 重み=1;
        サーバー 192.168.192.153:8080 重み=1;
}
 
location ~ .*\.jsp$ { # nginx が受信したクライアント IP アドレスを、tomcat にジャンプするリクエストのソース IP に割り当てます。クライアントの実際の IP を識別し、proxy_pass http://tomcat_server を割り当ててジャンプします。 
        proxy_set_header HOST $host; ##バックエンドウェブサーバーが受信したリクエストのホスト名(ドメイン名またはIP、ポート)を設定します。デフォルトのホスト値は、proxy_pass direct connectionで設定されたホスト名です。 proxy_set_header X-Real-IP $remote_addr; #$remote_addrをX-Real-IP(カスタム)にコピーし、ソースIPとやり取りします。
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #nginx をプロキシ サーバーとして使用すると、IP リスト セットには、通過した IP、プロキシとその IP が記録されます。}
...
 
[root@localhost ~]#systemctl nginx.serviceを再起動します

4. Webページのテスト結果

要約する

Nginx の上流に 2 台以上の Tomcat サーバーを配置して負荷分散クラスターを形成し、proxy_pass などの Web プロキシ メソッドを使用して場所にクラスター サイトを設定し、重み値を使用して Tomcat サーバーの重みを個別に設定することができます。

実稼働環境では、Tomcat サーバーのハードウェア構成が異なる場合があります。対応するサーバーの重み値を変更して、より高い構成またはより低い構成のサーバーへのアクセス要求の分散を制御できます。

Nginx+Tomcat 負荷分散クラスターの詳細なインストールと構成の事例に関するこの記事はこれで終わりです。Nginx Tomcat 負荷分散クラスターの関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginx+Tomcat 負荷分散クラスタの実装例
  • Nginx+Tomcat 高性能負荷分散クラスタ構築チュートリアル
  • Nginx+Tomcat で高性能な負荷分散クラスターを構築する方法
  • nginx+tomcatは負荷分散を実装し、redisセッション共有を使用します
  • NginxとTomcatは動的および静的分離と負荷分散を実現します
  • Nginx+Tomcat+Https サーバー負荷分散構成の実践の詳細な説明
  • Nginx+Tomcat 負荷分散と動的および静的分離クラスタの実装

<<:  CSS+JS で水滴の波紋アニメーション ボタン効果を実装するサンプル コード

>>:  Vue で計算プロパティを使用する際の知識ポイントのまとめ

推薦する

CentOS 6.8 での Hadoop 3.1.1 完全分散インストール ガイド (推奨)

上記:このドキュメントは、3 台の仮想マシンが相互に ping を実行できること、ファイアウォールが...

JavaScript Domはカルーセルの原理と例を実装します

カルーセルを作りたい場合、まずその原理を理解する必要があります。画像を右から左にスライドさせるにはど...

Server-U 14バージョンのインストールと使用方法

Server-Uソフトウェアの紹介Server-U は非常に強力なファイル マネージャーです。FTP...

Raspberry Pi 4 に Ubuntu 19.10 をインストールするための詳細なチュートリアル

以前、raspbian で実行したときに opencv の一部の依存関係をパッケージ化できず、一部の...

MySQL ロックの知識ポイントのまとめ

ロックの概念①. 現実世界では、鍵は外の世界から身を隠したいときに使う道具です。 ②. コンピュータ...

MySQLデータファイルの保存場所を表示する方法

次のような疑問が湧くかもしれません。MySQLをローカル (自分のコンピュータ) にインストールした...

JavaScript における var と let の違い

目次1. スコープはさまざまな方法で表現されます2. 変動昇進と非昇進の違い3. 一時的なデッドゾー...

MySQL 5.7.23 解凍バージョンのインストールチュートリアル(画像とテキスト付き)

毎回インストールチュートリアルを探すのは面倒なので、後で確認できるように手順をバックアップします。解...

HTML 9グリッドレイアウトの実装方法

ウェブサイトのレイアウトの多様化は、当社のフロントエンドの得意分野です。最近、UC ブラウザのデフォ...

Tomcatのクラスロードメカニズムを説明する記事

目次- 序文 - - JVM クラスローダー - 1. JVMクラスローダー2. クラスローダーのソ...

MySQL テーブルの垂直分割と水平分割

垂直分割垂直分割とは、データテーブルの列を分割すること、つまり、多くの列を持つテーブルを複数のテーブ...

Lvs+Nginx クラスターを使用して高並列アーキテクチャを構築する例

目次1. Lvsの紹介2. Lvs負荷分散モード2.1 NAT 2.2 ターン2.3 DRモード3....

VUE ユニアプリテンプレート構文についての簡単な説明

1.v-bind(略称:)コンポーネント プロパティのデータで定義されたデータ変数を使用するか、コン...

Ubuntu 20.04 ファイアウォール設定の簡単なチュートリアル (初心者)

序文ますます便利になった今日のインターネット社会では、さまざまなインターネット ランサムウェア ウイ...

vue+px2rem(rem適応)を使用してPCで大画面適応を実装するためのサンプルコード

構成の序文プロジェクト構築: vue-cli3 をベースに構築、rem 適応には postcss-p...