検索

この記事は 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 までご連絡ください。
PHPメール:ステップバイステップ送信ガイドPHPメール:ステップバイステップ送信ガイドMay 09, 2025 am 12:14 AM

PhpisusedForsedingEmailsDueToitsIttegration withServerMailServicesAndExternalSmtpproviders、自動化とMarketingCampaign.1)SetupYourphpenvironment withebeBironment witheBiserverandphp、保証

PHP経由で電子メールを送信する方法:例とコードPHP経由で電子メールを送信する方法:例とコードMay 09, 2025 am 12:13 AM

メールを送信する最良の方法は、PHPMailerライブラリを使用することです。 1)Mail()関数を使用することはシンプルですが信頼できないため、電子メールがスパムを入力するか、配信できない場合があります。 2)PHPMailerは、より良い制御と信頼性を提供し、HTMLメール、添付ファイル、SMTP認証をサポートします。 3)SMTP設定が正しく構成されていることを確認し、暗号化(StartTLSやSSL/TLSなど)を使用してセキュリティを強化します。 4)大量の電子メールについては、メールキューシステムを使用してパフォーマンスを最適化することを検討してください。

高度なPHPメール:カスタムヘッダーと機能高度なPHPメール:カスタムヘッダーと機能May 09, 2025 am 12:13 AM

customedersandaddadvancedfeaturesinphpemailentalitylivainability.1)customederadddetadata fortrackingandcategorization.2)htmLemailsallowStingtintintintintintinteractivity.3)添付物質の添付物質の添付

php&smtpでメールを送信するためのガイドphp&smtpでメールを送信するためのガイドMay 09, 2025 am 12:06 AM

PHPとSMTPを使用してメールを送信することは、PHPMailerライブラリを介して実現できます。 1)PHPMailerをインストールして構成する、2)SMTPサーバーの詳細を設定する、3)電子メールコンテンツを定義し、4)メールを送信してエラーを処理します。この方法を使用して、電子メールの信頼性とセキュリティを確保します。

PHPを使用して電子メールを送信する最良の方法は何ですか?PHPを使用して電子メールを送信する最良の方法は何ですか?May 08, 2025 am 12:21 AM

BestappRoachforseminginphpisusingthephpmailerlibrarydueToitsReliability、featurrichness、andeaseofuse.phpmailerSupportssmtpは、detairederorhandlingを提供します

PHPでの依存関係注射のベストプラクティスPHPでの依存関係注射のベストプラクティスMay 08, 2025 am 12:21 AM

依存関係注射(DI)を使用する理由は、コードのゆるい結合、テスト可能性、および保守性を促進するためです。 1)コンストラクターを使用して依存関係を注入します。2)サービスロケーターの使用を避け、3)依存関係噴射コンテナを使用して依存関係を管理する、4)依存関係を注入することでテスト可能性を向上させる、5)注入依存性を回避、6)パフォーマンスに対するDIの影響を考慮します。

PHPパフォーマンスのチューニングのヒントとコツPHPパフォーマンスのチューニングのヒントとコツMay 08, 2025 am 12:20 AM

phpperformancetuningisucial cuseenhancess andandandadsand。

PHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスPHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスMay 08, 2025 am 12:16 AM

bestpracticesforsendingemails securlyinphpinclude:1)sutureconsmttarttlsencryptionとの使用の使用、2)検証およびサンシジン化のinputStopReventinjectuctacks、3)adinitivedinitivedInemailsopenslsl、4)adlinglinglingemailoaに

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール