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

推薦する

Dockerにおけるコンテナとイメージの違いについてお話ししましょう

鏡とは何ですか?イメージは、複数のイメージ レイヤー (UnionFS および AUFS ファイル ...

HTML は、Web ページの作成者が学習して習得しなければならないものです。

HTML を学ぶメリットは何ですか? 1: ウェブサイトやブログのウェブ構造を簡単に変更できます。...

nginx と openssl で https を実装する方法

サーバーデータがSSL証明書を使用して暗号化および認証されていない場合、ユーザーのデータはプレーンテ...

今日、今週、今月、先月のMySQLクエリデータ

今日 テーブル名から * を選択します。ここで、to_days(時間フィールド名) = to_day...

htmlはハイパーリンク付きの新しいウィンドウを開き、ウィンドウのプロパティを制御できます。

1. HTMLハイパーリンクによって開かれるウィンドウのサイズコードをコピーコードは次のとおりです...

Vueはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機機能を実現するためのVueの具体的なコードを紹介します。具体的...

ボタンをクリックした後のCSS読み込み効果を実現する

自社製品にクリック後1~2秒待機時間があるボタン(確認メールを送信する)があるため、クリック後の1~...

HTML でスクロールバーを使用する際のヒントを共有する

今日、牛南ニュースリリースシステムについて学んでいたとき、牛南先生はスクロールバーに関するいくつかの...

CocosCreatorがスキル冷却効果を実装

CocosCreatorがスキルCD効果を実現多くのゲームにはスキルがあります。プレイヤーがスキルボ...

7つの便利なTypeScriptの新機能

目次1. オプションの連鎖2. NULL値の結合3. 再帰型エイリアス4. アサーション署名5. P...

Linuxでのcrontabの使い方と注意点の詳しい説明

Crontab は定期的な実行を設定するために使用されるコマンドです。そのデーモン プロセスは cr...

Vue+js はビデオのフェードインとフェードアウト効果を実現します

Vue+jsはビデオのフェードインとフェードアウトを実現します。参考までに、具体的な内容は次のとおり...

Dockerコンテナのいくつかの保存方法の詳細な説明

目次前面に書かれた複数のストレージマウント方法1.バインドマウント2. 巻数3.tmpfsマウントス...

MySQLのインストールと設定方法のグラフィックチュートリアル(CentOS7)

1. システム環境[root@localhost ホーム]# cat /etc/redhat-re...

Nginx 正規表現の詳細な説明

Nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...