ホームページ  >  記事  >  バックエンド開発  >  Nginx+tomcat クラスターの構成

Nginx+tomcat クラスターの構成

WBOY
WBOYオリジナル
2016-08-08 09:20:13847ブラウズ

この記事は 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 環境で開始します

nginx を停止する場合は、dos 環境でコマンドを実行します: nginx -s stop

3. nginx.conf 設定

Nginx 設定ファイルは、デフォルトで conf ディレクトリにあります。ファイルは nginx.conf で、D:servernginx-0.8.20 にインストールします。デフォルトのメイン設定ファイルは D:servernginx-0.8.20nginx.conf です。以下は、フロントエンド リバース プロキシ サーバーとしての nginx の構成です。


Nginx.conf コード

  1. #Nginx によって使用されるユーザーとグループはウィンドウで指定されていません
  2. #user niumd niumd;
  3. #作業中のサブプロセスの数 (通常は CPU の数または CPU の 2 倍)
  4. worker_processes 2;
  5. #error_log logs/error.log;
  6. error_log logs/error.log 情報;
  7. #ファイルを保存するための pid を指定します
  8. pid Logs/nginx.pid;
  9. events {
  10. #ネットワーク IO モデルを使用する場合、Linux では epoll、FreeBSD では kqueue が推奨され、window では指定されません。 #epoll を使用します。
  11. default_type application/octet-ストリーム;
  12. #ログ形式の定義
  13. #log_format main
  14. '$remote_addr - $remote_user [$time_local] $request '
  15. " #
  16. '" $ ステータス "$ BODY_BYTES_SENT" $ http_referr "'
  17. " #
  18. '" $ http_user_agent "" $ http_x_Forwarded_For "'
  19. ; #access_log オフ;
  20. client_body_timeout 3 分;
  21. send_timeout 3 分;
  22. client_header_buffer_size 1k;
  23. large_client_header_buffers
  24. 4
  25. 4k;
  26. sendfile オン;
  27. tcp_nolay オン;
  28. #keepalive_timeout 75
  29. 20
  30. ;
  31. include gzip.conf;
  32. upstream localhost {
  33. #IP 計算に基づいて各バックエンド Tomcat にリクエストを割り当てる 多くの人がセッションの問題を解決できると誤解していますが、実際はそうではありません。
  34. #複数ネットワークの場合、ルーティング切り替え時にIPが異なる場合があります
  35. #ip_hash; }
  36. server {
  37. Listen proxy_connect_timeout 3;
  38. proxy_send_timeout
  39. 30
  40. ;
  41. proxy_read_timeout 3 0
  42. ;
  43. http://localhost; }
  44. proxy_set_header ホスト
  45. proxy_set_header
  46. ;
  47. proxy_send_timeout
  48. 300
  49. ; proxy_buffers
  50. 4
  51. 32k; proxy_busy_buffers_size 64k;
  52. gzip 圧縮関連の設定は次のとおりです。
  53. gzip_min_length
  54. 1000
  55. ; text /plain text/css application/x-javascript;
  56. 4. Tomcat の設定
  57. ここでは、server.xml 設定ファイルを変更するだけです。 14 たとえば、サーバー ディレクトリで解凍し、apache-tomcat-6.0.14_1、apache-tomcat-6.0.14_2 という名前を付けます。
  58. 最初のポート変更:
Xml コード

  1. < ;
  2. サーバー
  3. ポート
  4. =
  5. "18006"
  6. shutdown
  7. =
  8. "SHUTDOWN"
  9. >
  10. 2番目のポート変更: Xmlコード
  11. & lt;!-- ポート= "180 81 " Tomcat リスニング ポート、お好みに設定してください。小さすぎないでください -->
  12. Connector
  13. port
  14. =
  15. "18081"

protocol

=

"HTTP/1.1" connectionTimeout

=
    "20000"
  1. redirectPort="8443"
  2. />

3 番目のポートの変更:

Java コード

<コネクタポート="800 9"

プロトコル=
    "AJP/1.3 "
  1. redirectPort="8443" />
  2. 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/

    シェルコード

    1. tar zxvf pcre-8.01.tar.gz
    2. cd pcre-8.01
    3. sudo ./configure
    4. sodu make
    5. soduメイクインストール

    openssl via apt-get install インストール

    1. sudo apt-get install openssl
    2. sudo apt-get install libssl-dev
    3. //他のパッケージが見つからない場合は、Ubuntu に依存関係プロンプトが表示されるので、この方法を使用してインストールしてください

    依存するソフトウェア パッケージが以下にインストールされています Nginx をコンパイルするには:

    シェル コード

    1. #ウィンドウ共有ディレクトリ ソフトウェアを現在の作業ディレクトリにコピーします
    2. cp /mnt/fileshare/nginx-0.8.20 .tar.gz ./
    3. #ソフトウェアパッケージを解凍します
    4. tar zxvf nginx-0.8.20.tar.gz
    5. cd nginx-0.8.20
    6. //ソースコードをコンパイルし、デフォルトでnobodyを使用し、このマシン上の既存のユーザーとグループを指定し、nginx-status関数を有効にし、nginxステータスを監視します。デバッグを開始
    7. sudo ./configure --user=niumd --group=niumd --with-debug --with-http_stub_status_module
    8. sudo make
    9. sudo make install

    ウィンドウの下で上記の方法に従ってデフォルトの構成を確認し、デフォルトの構成で nginx を起動し、http://127.0 にアクセスします。 .0.1

    Nginx の設定 成功したら、次のようにウィンドウの下の nginx.conf にいくつかの変更を加えます:

    Ubuntu nginx.conf コード

    1. #Nginx によって使用されるユーザーとグループ
    2. user niumd niumd;
    3. #ワーカーのサブプロセスの数 (通常は CPU の数または CPU の 2 倍)
    4. worker_processes 2;
    5. #Error日志存放路
    6. #error_log logs/error.log;
    7. logs/error.log info;
    8. #指定pid文例
    9. pid pid;
    10. events {
    11. #Linux は epoll を推奨、FreeBSD は kqueue を推奨
    12. #許可される最大接続数
    13. ワーカー_接続
    14. 2048
    15. ;
    16. }
    17. html ユーザー [$time_local] $request '
    18. " #
    19. '" $ ステータス "$ BODY_BYTES_SENT" $ http_referr "'
    20. " #
    21. '" $ http_user_agent "" $ http_x_Forwarded_For "'
    22. ;
    23. #access_log オフ;
    24. client_body_timeout 3 分;
    25. send_timeout 3 分;
    26. client_header_buffer_size 1k;
    27. large_client_header_buffers 4
    28. 4k;
    29. sendfile オン;
    30. tcp_nolay オン;
    31. #keepalive_timeout
    32. 75
    33. 20
    34. ;
    35. include gzip.conf;
    36. #ip_hash
    37. #ip_hash;
    38. サーバー localhost:
    39. 18081
    40. ;アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト‐ ‐ ‐ ‐ ‐ サーバー { location proxy_connect_timeout
    41. 3
    42. ; proxy_send_timeout
    43. 30 proxy_pass http://localhost;
    44. }
    45. }}}
    46. Ubuntu での上記の Nginx 設定は、基本的に Windows での設定と同じです。使用される IO ネットワーク モデルとは異なり、Linux では EPOLL を使用することをお勧めします。
    47. 3. Tomcat を設定します。 ウィンドウの下の構成を参照してください。これはまったく同じです。
    48. 4. nginxの起動と停止
    49. ubuntuでのnginxの起動と停止の一般的な方法は次のとおりです。
    50. Javaコード
      1. #nginx目录执行
      2. sbin/nginx
      3. または通过-c 指定配置文件
      4. sbin/nginx -c usr/local/nginx8.20/conf/nginx/conf

      Shell代コード

      1. niumd@niumd-laptop:/usr/local/nginx$ pwd
      2. /usr/local/nginx
      3. niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx -t
      4. 設定ファイル/usr/local/nginx/conf/nginx.conf 構文は問題ありません
      5. 設定ファイル /usr/local/nginx/conf/nginx.conf テストは成功しました
      6. niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx -v
      7. nginx バージョン: nginx/0.8.20 
      8. niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx -V
      9. nginx バージョン: nginx/0.8.20 
      10. gcc によって構築されました 4.4.3 (Ubuntu) 4.4.3-4ubuntu5)
      11. 引数を設定します: --user=niumd --group=niumd --with-debug --with-http_sub_module 
      12. niumd@niumd-laptop:/usr/local/nginx$ sudo sbin/nginx
      13. niumd@niumd-laptop:/usr/local/nginx$ ps -ef|grep nginx
      14. root 5158 1 022:32 ?        00:00:00 nginx: マスタープロセス sbin/nginx 
      15. niumd 5159 5158 022:32 ?        00:00:00 nginx: ワーカープロセス 
      16. niumd 5161 1577 022:32 ポイント/0    00:00:00 grep --color=auto nginx 
      17. 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 教則に関心のある友人の助けになることを望みます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。