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 で計算プロパティを使用する際の知識ポイントのまとめ

推薦する

HTMLの基礎を徹底解説(第1部)

1. WEBを理解するWeb ページは主にテキスト、画像、ハイパーリンクなどの要素で構成されていま...

DockerにELKをインストールしてJSON形式のログ分析を実装する方法

ELKとは何ですか? ELK は、Elastic が提供するログ収集およびフロントエンド表示ソリュー...

Centos6.5 glibc アップグレードプロセスの紹介

目次シナリオ要件glibc バージョンglibcのインストールglibc ソフトリンクシナリオ要件C...

純粋な CSS カスタム複数行省略記号の問題 (原理から実装まで)

テキストオーバーフローを表示するにはどうすればいいですか? どのようなニーズがありますか?単一行です...

Linux のロード vmlinux デバッグ

gdb を使用してカーネル シンボルをロードする arm-eabi-gdb 出力/ターゲット/製品/...

HTML ウェブページの段落レイアウトと改行

Web ページの外観はレイアウトに大きく左右されます。ページ内に長い段落のテキストがある場合、通常は...

Apache SkyWalkingのセルフモニタリングを素早く有効にする方法を説明します

1. Prometheusテレメトリデータを有効にするデフォルトでは、テレメトリは次のように無効にな...

ウェブページ作成時に標準 HTML コードを使用する際のポイント

<br />多くのウェブサイト デザイナーが犯す最も一般的な間違いは、ウェブページが I...

React Nativeはモニタリングジェスチャーの上下プル効果を実現します

React Native は、プルアップとプルダウンの監視ジェスチャを実装します。詳細なコアコードは...

RedHat 6.5 に MySQL 5.7 をインストールするための詳細なチュートリアル

RedHat6.5インストールMySQL5.7チュートリアル共有、参考までに、具体的な内容は次のとお...

Node.jsがES6モジュールを処理する方法の詳細な説明

目次1. 2つのモジュールの違い2. Node.jsとの違い3. CommonJSモジュールの読み込...

ウェブサイト構築経験概要

<br />注目を集めるウェブサイトを作成するには、どのような原則に従うべきでしょうか?...

Brotli圧縮アルゴリズムを有効にするNginxの実装プロセスの詳細な説明

序文Web アプリケーションでは、トラフィックを節約し、転送データのサイズを縮小し、転送効率を向上さ...

mysql-8.0.11-winx64.zip の詳細なインストール チュートリアル

zip インストール パッケージをダウンロードします。 MySQL8.0 For Windows z...

Nginx 構成検出サービスのステータスを実装する方法

1. チェックステータスモジュールがインストールされているかどうかを確認します。 [root@loc...