Nginx+tomcat クラスターの構成
この記事は http://os.51cto.com/art/201111/304608.htm からの転載です
この記事では、最終的に負荷分散を実現するための、Windows XP および ubuntu 環境における nginx と Tomcat のクラスター構成を紹介します。
AD最初は小さな疑問がありました。なぜオープンソースの Apache や Nginx ソフトウェアの負荷を使用しないのですか? F5 機器には何十万もの費用がかかり、高価です。私の比較的素朴な質問でしたが、後で理解しました。F5 は IOS ネットワーク モデルのトランスポート層で動作するのに対し、Nginx と Apache は http リバース プロキシ メソッドに基づいており、ISO モデルの 7 番目のアプリケーション層に位置します。率直に言うと、これは TCP UDP プロトコルと http プロトコルの違いです。Nginx は TCP プロトコルに基づいたアプリケーションの負荷分散を提供できません。 2 つの違いとアプリケーション シナリオを理解し、Nginx に強い興味を持ちました。Zhang Yan の「実践 Nginx」を読みました (1985 年のこの若く将来有望な若者はうらやましく、嫉妬していました)、一般原理と構成を理解しました。 、Ubuntu10.10では、ウィンドウの下でNginx + tomcatロードバランシングを構成しようとし、すべてのリクエストをtomcatに転送し、静的、動的分離、イメージホットリンク防止、その他の構成を構成しませんでした。Nginx の概要
Nginx (エンジン x と同じ発音) は、軽量の Web サーバー/リバース プロキシ サーバーおよび電子メール (IMAP/POP3) プロキシ サーバーであり、BSD のようなプロトコルでリリースされています。その特徴は、メモリ占有量が少なく、強力な同時実行機能を備えていることです。実際、nginx の同時実行機能は、同じ種類の Web サーバー間でより優れたパフォーマンスを発揮します。現在、中国本土の nginx Web サイトのユーザーには、Sina、NetEase、Tencent などが含まれます。他のよく知られたマイクロネット Plurk も nginx を使用します。上記は基本的にナンセンスな Nginx の紹介です。ここからは本題に入ります。1 つ目は Windows 環境、2 つ目は Ubuntu 環境です。 )。
Window XP 環境: Nginx+Tomcat6
1. ダウンロードアドレス
http://nginx.org/en/download.html ここでは、nginx-0.8 を使用することをお勧めします。
2. ディレクトリ構造
ログディレクトリ nginx.exe メインプログラム スペースを入れずに英語のディレクトリに解凍するだけで非常に簡単です (個人的な習慣なので、中国語の問題が心配です)。 nginx をダブルクリックして開始します。ここでは、D:server ディレクトリにインストールしました。Tomcat もこのディレクトリにインストールされます。
DOS 環境で開始します
3. nginx.conf 設定
Nginx 設定ファイルは、デフォルトで conf ディレクトリにあります。ファイルは nginx.conf で、D:servernginx-0.8.20 にインストールします。デフォルトのメイン設定ファイルは D:servernginx-0.8.20nginx.conf です。以下は、フロントエンド リバース プロキシ サーバーとしての nginx の構成です。
Nginx.conf コード
- #Nginx によって使用されるユーザーとグループはウィンドウで指定されていません
- #user niumd niumd;
- #作業中のサブプロセスの数 (通常は CPU の数または CPU の 2 倍)
- worker_processes 2;
- #error_log logs/error.log;
- error_log logs/error.log 情報;
- #ファイルを保存するための pid を指定します
- pid Logs/nginx.pid;
- events {
- #ネットワーク IO モデルを使用する場合、Linux では epoll、FreeBSD では kqueue が推奨され、window では指定されません。 #epoll を使用します。
- default_type application/octet-ストリーム;
- #ログ形式の定義
- #log_format main '$remote_addr - $remote_user [$time_local] $request '
- " # '" $ ステータス "$ BODY_BYTES_SENT" $ http_referr "'
- " # '" $ http_user_agent "" $ http_x_Forwarded_For "'
- ; #access_log オフ;
- client_body_timeout 3 分;
- send_timeout 3 分;
- client_header_buffer_size 1k;
- large_client_header_buffers 4
- 4k;
- sendfile オン;
- tcp_nolay オン;
- #keepalive_timeout 75 20
- ;
- include gzip.conf;
- upstream localhost {
- #IP 計算に基づいて各バックエンド Tomcat にリクエストを割り当てる 多くの人がセッションの問題を解決できると誤解していますが、実際はそうではありません。
- #複数ネットワークの場合、ルーティング切り替え時にIPが異なる場合があります
- #ip_hash; }
- server {
- Listen proxy_connect_timeout 3;
- proxy_send_timeout 30
- ;
- proxy_read_timeout 3 0 ;
- http://localhost; } proxy_set_header ホスト
- proxy_set_header
- ;
- proxy_send_timeout 300
- ; proxy_buffers 4
- 32k; proxy_busy_buffers_size 64k;
- gzip 圧縮関連の設定は次のとおりです。 gzip_min_length
- 1000 ; text /plain text/css application/x-javascript;
- 4. Tomcat の設定
- ここでは、server.xml 設定ファイルを変更するだけです。 14 たとえば、サーバー ディレクトリで解凍し、apache-tomcat-6.0.14_1、apache-tomcat-6.0.14_2 という名前を付けます。
最初のポート変更:
- < ;
- サーバー
- ポート
- = "18006"
- shutdown
- = "SHUTDOWN"
- >
- 2番目のポート変更: Xmlコード
- & lt;!-- ポート= "180 81 " Tomcat リスニング ポート、お好みに設定してください。小さすぎないでください -->
- Connector
- port
- = "18081"
protocol
="HTTP/1.1" connectionTimeout
=- "20000"
- redirectPort="8443"
- />
3 番目のポートの変更:
Java コード<コネクタポート="800 9"
プロトコル=- "AJP/1.3 "
- redirectPort="8443" />
-
Engine要素はjvmRoute属性を追加します: Xmlコード
<エンジンname="Catalina"defaultHost="localhost"jvmRoute="tomcat1">
2 つの Tomcat ポートを複製しないでください確実に起動できるようにするため、他の Tomcat 構成と Seagate は省略され、リスニング ポートは 18080 です。添付ファイル内のすべての構成情報をアップロードします。
5. 構成を確認し、負荷分散をテストします
まず、nginx 構成が正しいかどうかをテストします。テストコマンド: nginx -t (デフォルトの検証: confnginx.conf)。構成ファイルのパスを指定することもできます。
次に、Tomcat を確認し、2 つの Tomcat を起動します。ポートの競合がなければ、成功です (Tomcat が依存する Java が「キック」されたことについて話す必要はありません)。
最後に、負荷分散の構成を確認します。設定、http://localhost/ または http://localhost/index.jsp。観察しやすいように、index.jsp ページを変更し、ログ出力情報を追加しました。注: 左上隅の子猫の頭: アクセス tomcat2、tomcat1 にアクセスします。これは、異なる Tomcat がアクセスされることを意味します。
これで、ウィンドウでの nginx+tomcat ロード バランシングの設定が完了しました。 tomcat セッションに関しては、通常、Cookie ベースのセッション スティッキー機能を実装するために使用される Nginx 拡張モジュールである memcached または nginx_upstream_jvm_route です。 Tomcat が多すぎる場合、サーバー間のセッションの同期はリソースを消費し、同時実行性の高い環境ではセッション ストームが発生しやすくなります。ご自身のアプリケーションの状況に応じて、合理的にセッション ソリューションを採用してください。
Ubuntu10.10環境: Nginx+Tomcat6
ubuntu10.10でのインストールと設定方法について簡単に説明します
1. Nginxをダウンロードします
アドレス: http://nginx.org / en/download.html、Linux バージョン: nginx-0.8.20.tar..解凍コマンド:
tar -zxvf nginx-0.8.20.tar.gz
2. Nginx をコンパイルしてインストールしますNginx は他の PCRE、openssl (libssl-dev に依存)、および私のノートブック Ubuntu に依存します。 PCRE は依存する openssl をインストールするだけで済みます。 PCRE と openssl などのインストール方法について簡単に説明します。
PCRE ダウンロード アドレス: ftp://ftp.csx.cam.ac.uk/pub/software/ programming/pcre/
シェルコード
- tar zxvf pcre-8.01.tar.gz
- cd pcre-8.01
- sudo ./configure
- sodu make
- soduメイクインストール
openssl via apt-get install インストール
- sudo apt-get install openssl
- sudo apt-get install libssl-dev
- //他のパッケージが見つからない場合は、Ubuntu に依存関係プロンプトが表示されるので、この方法を使用してインストールしてください
依存するソフトウェア パッケージが以下にインストールされています Nginx をコンパイルするには:
シェル コード
- #ウィンドウ共有ディレクトリ ソフトウェアを現在の作業ディレクトリにコピーします
- cp /mnt/fileshare/nginx-0.8.20 .tar.gz ./
- #ソフトウェアパッケージを解凍します
- tar zxvf nginx-0.8.20.tar.gz
- cd nginx-0.8.20
- //ソースコードをコンパイルし、デフォルトでnobodyを使用し、このマシン上の既存のユーザーとグループを指定し、nginx-status関数を有効にし、nginxステータスを監視します。デバッグを開始
- sudo ./configure --user=niumd --group=niumd --with-debug --with-http_stub_status_module
- sudo make
- sudo make install
ウィンドウの下で上記の方法に従ってデフォルトの構成を確認し、デフォルトの構成で nginx を起動し、http://127.0 にアクセスします。 .0.1
Nginx の設定 成功したら、次のようにウィンドウの下の nginx.conf にいくつかの変更を加えます:
Ubuntu nginx.conf コード
- #Nginx によって使用されるユーザーとグループ
- user niumd niumd;
- #ワーカーのサブプロセスの数 (通常は CPU の数または CPU の 2 倍)
- worker_processes 2;
- #Error日志存放路
- #error_log logs/error.log;
- logs/error.log info;
- #指定pid文例
- pid pid;
- events {
- #Linux は epoll を推奨、FreeBSD は kqueue を推奨
- #許可される最大接続数
- ワーカー_接続 2048
- ;
- }
- html ユーザー [$time_local] $request ' " #
- '" $ ステータス "$ BODY_BYTES_SENT" $ http_referr "' " #
- '" $ http_user_agent "" $ http_x_Forwarded_For "' ;
- #access_log オフ;
- client_body_timeout 3 分;
- send_timeout 3 分;
- client_header_buffer_size 1k;
- large_client_header_buffers 4 4k;
- sendfile オン; tcp_nolay オン;
- #keepalive_timeout
- 75
- 20 ;
- include gzip.conf;
- #ip_hash
- #ip_hash;
- サーバー localhost:
- 18081 ;アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト‐ ‐ ‐ ‐ ‐ サーバー { location proxy_connect_timeout
- 3 ; proxy_send_timeout
- 30 proxy_pass http://localhost;
- }
- }}}
- Ubuntu での上記の Nginx 設定は、基本的に Windows での設定と同じです。使用される IO ネットワーク モデルとは異なり、Linux では EPOLL を使用することをお勧めします。
- 3. Tomcat を設定します。 ウィンドウの下の構成を参照してください。これはまったく同じです。
- 4. nginxの起動と停止
- ubuntuでのnginxの起動と停止の一般的な方法は次のとおりです。
- Javaコード
- #nginx目录执行
- sbin/nginx
- または通过-c 指定配置文件
- sbin/nginx -c usr/local/nginx8.20/conf/nginx/conf
Shell代コード
- niumd@niumd-laptop:/usr/local/nginx$ pwd
- /usr/local/nginx
- niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx -t
- 設定ファイル/usr/local/nginx/conf/nginx.conf 構文は問題ありません
- 設定ファイル /usr/local/nginx/conf/nginx.conf テストは成功しました
- niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx -v
- nginx バージョン: nginx/0.8.20
- niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx -V
- nginx バージョン: nginx/0.8.20
- gcc によって構築されました 4.4.3 (Ubuntu) 4.4.3-4ubuntu5)
- 引数を設定します: --user=niumd --group=niumd --with-debug --with-http_sub_module
- niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx
- niumd@niumd-laptop:/usr/local/nginx$ ps -ef|grep nginx
- root 5158 1 022:32 ? 00:00:00 nginx: マスタープロセス sbin/nginx
- niumd 5159 5158 022:32 ? 00:00:00 nginx: ワーカープロセス
- niumd 5161 1577 022:32 ポイント/0 00:00:00 grep --color=auto nginx
- niumd@niumd-laptop:/usr/local/nginx$
我们通过ps -ef|grep nginx,看到如下结果:
注意:在启作動時間linux提示一句警告【warn】……,是因为是我们因为的#允许允许允许允许允许最大数数数数数数数worker_connections 2048、超过linux默认1024的的限制限制実行中の pid は、ps コマンドを介して確認することもできます。
信号タイプは次のとおりです。
HUP
平滑重启、追加配置
USR1 重新追加日志 USER2 平滑升级执行程序 WINCH 从容关闭工作进程 やめてください 从容关闭 以上、側面の内容を含む Nginx+tomcat 構成群を紹介しましたが、PHP 教則に関心のある友人の助けになることを望みます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Docker Containerの起動手順:コンテナ画像を引く:「Docker Pull [Mirror Name]」を実行します。コンテナの作成:「docker create [options] [mirror name] [コマンドとパラメーター]」を使用します。コンテナを起動します:「docker start [container name or id]」を実行します。コンテナのステータスを確認してください:コンテナが「Docker PS」で実行されていることを確認します。

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

nginxバージョンを照会できるメソッドは次のとおりです。nginx-vコマンドを使用します。 nginx.confファイルでバージョンディレクティブを表示します。 nginxエラーページを開き、ページタイトルを表示します。

クラウドサーバーでnginxドメイン名を構成する方法:クラウドサーバーのパブリックIPアドレスを指すレコードを作成します。 NGINX構成ファイルに仮想ホストブロックを追加し、リスニングポート、ドメイン名、およびWebサイトルートディレクトリを指定します。 nginxを再起動して変更を適用します。ドメイン名のテスト構成にアクセスします。その他のメモ:SSL証明書をインストールしてHTTPSを有効にし、ファイアウォールがポート80トラフィックを許可し、DNS解像度が有効になることを確認します。

NGINXサーバーがダウンすると、次のトラブルシューティング手順を実行できます。NGINXプロセスが実行されていることを確認します。エラーメッセージのエラーログを表示します。 nginx構成の構文を確認します。 nginxには、ファイルにアクセスするために必要な権限があることを確認してください。ファイル記述子をチェックして制限を開いてください。 Nginxが正しいポートで聴いていることを確認してください。 nginxトラフィックを許可するために、ファイアウォールルールを追加します。バックエンドサーバーの可用性を含む逆プロキシ設定を確認します。さらなる支援については、テクニカルサポートにお問い合わせください。
