nginxエージェントweblogic負荷スキーム
9351 ワード
参照先:http://www.lvkaineng.com/139.htmlああ、実用的だと思いますが、ここでは主にレイアウトの整理をしました.
アウトライン:
1、Nginxのインストール
2、Nginxの配置
3、Nginxの起動と停止
4、Nginxエージェントと負荷の均衡配置と最適化
5、Nginx負荷等化指令
1、nginx nginxをインストールするにはpcreをサポートする必要があります.一般的なシステムはすべて持参しています.もちろん、自分で高バージョンのソースパッケージをダウンロードしてインストールすることができます.高バージョンのpcreを使用することをお勧めします.
このように正則を使うと、より良いサポートが得られます.
まず行くhttp://wiki.nginx.org//NginxChsダウンロードnginx、私は0.7を使いました
# tar zxvf nginx-0.7.59.tar.gz # cd nginx-0.7.59 # ./configure –with-http_stub_status_module –prefix=/opt/nginx # make # make install
–with-http_stub_status_moduleはnginxのモニタリングモジュールを追加し、Nginxの現在の状態をモニタリングします.
2、nginxプロファイルを構成し、/opt/nginx/confの下のnginx.confで、ファイルの内容は以下の通りである.
3、Nginxの起動と停止
#サービス開始
まず、プロファイルにエラーがないかどうかを確認します.
/opt/nginx/sbin/nginx -t -c/opt/nginx/conf/nginx.conf
サービスの開始:
/opt/nginx/sbin/nginx -c/opt/nginx/conf/nginx.conf
-cは、ロードプロファイルパスを指定したり、カスタムconfファイルをロードしたりすることができます.
#ストップサービス
sbin/nginx -s stop
#スムーズ再起動
kill -HUP `cat logs/nginx.pid
4、Nginxエージェントと負荷の均衡配置と最適化
Nginxは0.7.48からSquidのようなキャッシュ機能をサポートしています.NginxのWebキャッシュサービスは主にproxy_Cache関連命令セットとfastcgi_Cache関連命令セットは,前者がリバースエージェントに用いられる場合,バックエンドの内蔵ソースサーバをキャッシュし,後者は主にFastCGIの動的プログラムをキャッシュするために用いられる.両者の機能は基本的に同じです.
Nginx 0.8.32バージョン、proxy_Cacheとfastcgi_Cacheは比較的完備しており、サードパーティのngx_を加えています.cache_purgeモジュール(指定したURLをクリアするためのキャッシュ)は、Squidに完全に取って代わることができます.
機能上、NginxはすでにSquidが持つWebキャッシュ加速機能、指定されたURLキャッシュをクリアする機能を備えている.性能の上で、NginxはマルチコアCPUの利用に対して、Squidに勝って少なくありません.また,リバースエージェント,負荷バランシング,ヘルスチェック,バックエンドサーバのフェイルオーバ,Rewrite書き換え,使いやすさにおいても,NginxはSquidよりはるかに強力である.これにより、1台のNginxを「ロード・バランシング・サーバ」と「Webキャッシュ・サーバ」として同時に使用できます.
次のドキュメントでは、nginxがプロキシサーバとして、リクエストを他のサーバに転送し、キャッシュしない方法について説明します.バージョンはnginx-0.8.15で、次のように構成されています.
5、Nginx負荷等化指令
Nginxはソフトウェアの7層負荷等化(lvsはソフトウェアの4層負荷等化の代表)に属し、7層負荷等化ソフトウェアにはL 7 SW(Layer 7 switching)、HAProxyなどがある.負荷分散をサポートするモジュールは、Http Upstreamです.このモジュールと彼の次のいくつかの命令を紹介します.
HTTP Upstreamモジュール
(1)ip_hash指令
バックエンドの複数のダイナミックアプリケーションサーバに負荷分散を行う場合、ip_hash命令は、あるクライアントIPの要求をハッシュアルゴリズムによって同じバックエンドサーバに位置決めする.このように、あるipユーザからSever Aにログインしてから、そのサイトの他のURLにアクセスすると、アクセスがサーバAに残っていることが保証される.ip_を付けなければhash,加入ユーザがServer Aにログインし,そのサイトの他のURLにアクセスすると,バックエンドのSever B,Cにジャンプする可能性があるが,sessionはAに記録されており,B,Cには登録されていないので,ユーザにログインしていないことを示す.
注意:しかし、このアクセスはバックエンドサーバの負荷の均衡を保証することはできません.バックエンドの一部のserverが受信した要求が多く、一部のserverが受け入れることが少なく、設定した重み値が機能しない可能性があります.
バックエンドのダイナミックアプリケーションサーバがnginxでip_を構成することなくsession共有を行うことを推奨します.hashの方式.
upstream mysrv {
ip_hash;
server 192.168.0.110:80 weight=2;
server 127.0.0.1:8000 down;
server 192.168.0.212:80 weight=8;
}
(2)server命令
このコマンド用語は、バックエンド・サーバの名前とパラメータを指定します.サーバの名前は、ドメイン名、ip、ポート番号、UNIX Socketです.
パラメータの説明:
weight=number : サーバのウェイト値を設定します.ウェイト値が高いほど、クライアントに割り当てられるリクエスト数が多くなります.デフォルトは1です.
max_fails=numbser : fail_timeoutが指定した時間内にバックエンドサーバに対して要求に失敗した回数は、バックエンドサーバが接続できないこととエラーが発生したことが検出された場合(404を除く)、失敗とマークされます.設定されていない場合は、デフォルトは1です.0に設定されている場合は、このチェックを閉じます.
fail_timeout=time : パラメータmax_fails設定の失敗回数を経験した後、一時停止する時間.
down : サーバーが永続的なオフライン状態であることを示します.
Backup : 非backupサーバがすべてダウンしているか、忙しい場合にのみ有効になります.
次のように構成されています.
upstream mysrv {
ip_hash;
server www.xywy.com weight=2;
server 127.0.0.1:8000 down;
server 192.168.0.212:80 max_fails=3 fail_timeout=30s;
server unix:/tmp/bakend3;
}
=================================================
nginxを使用して負荷等化を行うつもりで、リクエストエージェントを1つのapacheに転送します.apacheの後ろにはWebLogicのアプリケーションがあります.apacheには別のプラグインがあり、apacheを通過しなければなりません.
downからnginx-0.6.35まで、インストール後、構成は簡単です.構成後の問題は以下の通りです:nginxを歩いてWebLogicへのアプリケーションは問題ありませんが、nginxからapache、WebLogicへのアプリケーションには問題があります.
ログには302(nginxでは「HTTP/1.1 302 2783」、apacheでは「HTTP/1.0 302 2771」).対比して、HTTP/1.1とHTTP/1.0の問題だと思い始めた.後にNginxとブラウザがHTTP/1.1を使って会話をしていることを思い出し、バックグラウンドサービスでHTTP/1.0を使っているのが正しいことに気づき、2つのウェブサービスで得られたクライアントへの応答ヘッダを含まないワード数が異なることに気づき、この欠けた12バイトがどこに欠けているのかを追及する必要がある.
同時にアクセステストの時にアクセス/webとアクセス/web/が違うことを思い出して、apacheでは処理できますが、apacheが類似のリソース要求を処理していることに気づいたときにログに302を打ってから、後で自動的に追加/して、その後ログに200を入れました.nginxは処理していません.設定されていないせいなのか、彼自身が類似の問題を処理できないのか分かりません.後者の確率は大きくないはずですが、nginx構成とapacheに関する処理メカニズムも検討しなければなりません.
さらに書き換えメカニズムで「/」の処理を加えることも考えられるが,nginxエージェントがapacheに報告されることを考慮すると302となり,それでも問題は解決できないと推定され,proxyの構成も検討される.
はい、以上の3つの道を見てください.それは正解です.
アウトライン:
1、Nginxのインストール
2、Nginxの配置
3、Nginxの起動と停止
4、Nginxエージェントと負荷の均衡配置と最適化
5、Nginx負荷等化指令
1、nginx nginxをインストールするにはpcreをサポートする必要があります.一般的なシステムはすべて持参しています.もちろん、自分で高バージョンのソースパッケージをダウンロードしてインストールすることができます.高バージョンのpcreを使用することをお勧めします.
このように正則を使うと、より良いサポートが得られます.
まず行くhttp://wiki.nginx.org//NginxChsダウンロードnginx、私は0.7を使いました
# tar zxvf nginx-0.7.59.tar.gz # cd nginx-0.7.59 # ./configure –with-http_stub_status_module –prefix=/opt/nginx # make # make install
–with-http_stub_status_moduleはnginxのモニタリングモジュールを追加し、Nginxの現在の状態をモニタリングします.
2、nginxプロファイルを構成し、/opt/nginx/confの下のnginx.confで、ファイルの内容は以下の通りである.
#user nobody;
worker_processes 10;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll; //nginx ,epoll – , Linux 2.6 。
worker_connections 51200;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main ’$remote_addr – $remote_user [$time_local] $request ‘
# ’”$status” $body_bytes_sent “$http_referer” ‘
# ’”$http_user_agent” “$http_x_forwarded_for”‘;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 75;
#gzip on;
upstream 99ding {
server 124.42.*.***:7002 weight=10;
server 124.42.*.***:7001 weight=10;
} // weblogic , nginx , weblogic
server {
listen 80;
server_name www.test.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~ ^/status/ {
stub_status on;
access_log off;
} // nginx :http://www.test.com/status/
location / {
root /opt/html/app;
index index.html index.htm;
expires 30d; //expires cookie , 30
}
location ~ ^/(WEB-INF)/ {
deny all;
}
location ~ \.(htm|html|gif|jpg|jpeg|png|bmp|ico|rar|css|js|zip|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {
root /opt/html/app;
expires 24h;
}
location ~ (\.jsp)|(\.do) {
proxy_pass http://test;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_max_temp_file_size 512m;
} // , jsp do weblogic , test( ),
, test “ip: ” , http://10.0.0.1:7001
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
3、Nginxの起動と停止
#サービス開始
まず、プロファイルにエラーがないかどうかを確認します.
/opt/nginx/sbin/nginx -t -c/opt/nginx/conf/nginx.conf
サービスの開始:
/opt/nginx/sbin/nginx -c/opt/nginx/conf/nginx.conf
-cは、ロードプロファイルパスを指定したり、カスタムconfファイルをロードしたりすることができます.
#ストップサービス
sbin/nginx -s stop
#スムーズ再起動
kill -HUP `cat logs/nginx.pid
4、Nginxエージェントと負荷の均衡配置と最適化
Nginxは0.7.48からSquidのようなキャッシュ機能をサポートしています.NginxのWebキャッシュサービスは主にproxy_Cache関連命令セットとfastcgi_Cache関連命令セットは,前者がリバースエージェントに用いられる場合,バックエンドの内蔵ソースサーバをキャッシュし,後者は主にFastCGIの動的プログラムをキャッシュするために用いられる.両者の機能は基本的に同じです.
Nginx 0.8.32バージョン、proxy_Cacheとfastcgi_Cacheは比較的完備しており、サードパーティのngx_を加えています.cache_purgeモジュール(指定したURLをクリアするためのキャッシュ)は、Squidに完全に取って代わることができます.
機能上、NginxはすでにSquidが持つWebキャッシュ加速機能、指定されたURLキャッシュをクリアする機能を備えている.性能の上で、NginxはマルチコアCPUの利用に対して、Squidに勝って少なくありません.また,リバースエージェント,負荷バランシング,ヘルスチェック,バックエンドサーバのフェイルオーバ,Rewrite書き換え,使いやすさにおいても,NginxはSquidよりはるかに強力である.これにより、1台のNginxを「ロード・バランシング・サーバ」と「Webキャッシュ・サーバ」として同時に使用できます.
次のドキュメントでは、nginxがプロキシサーバとして、リクエストを他のサーバに転送し、キャッシュしない方法について説明します.バージョンはnginx-0.8.15で、次のように構成されています.
http
{
……..
client_max_body_size 300m ; //
client_body_buffer_size 128k;
// ,
proxy_connect_timeout 600;
// _
proxy_read_timeout 600;
// _ _
proxy_send_timeout 600;
proxy_buffer_size 16k; // , nginx
proxy_buffers 4 32k; // nginx buffer
proxy_busy_buffers_size 64k;
proxy_max_temp_file_size 64k;
// proxy
upstream clubsrv {
server 192.168.0.110:80 weight=5;
server 192.168.0.121:80 weight=5;
}
upstream mysrv {
server 192.168.0.32:80 weight=2;
server 127.0.0.1:8000 weight=8;
}
server {
listen 80;
server_name club.xywy.com;
charset gbk;
root /www;
access_log logs/aaa.log combined;
// , clubsrv
location / {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
// 502、504 , upstream
proxy_pass http://clubsrv;
// upstream
proxy_redirect off;
proxy_set_header Host club.xywy.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
// nginx , 127.0.0.1, IP( , )
index index.htm index.html index.php;
}
// , mysrv , www.sum.com/message
server {
listen 80;
server_name www.sum.com;
location /message {
proxy_pass http://mysrv;
proxy_set_header Host $host;
// , mysrv
}
// /message www.sum.com/ ,
location / {
proxy_pass http://mysrv;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
// , ,
error_page 500 502 503 504 /50x.html;
location = /50x.html
{
root html;
}
5、Nginx負荷等化指令
Nginxはソフトウェアの7層負荷等化(lvsはソフトウェアの4層負荷等化の代表)に属し、7層負荷等化ソフトウェアにはL 7 SW(Layer 7 switching)、HAProxyなどがある.負荷分散をサポートするモジュールは、Http Upstreamです.このモジュールと彼の次のいくつかの命令を紹介します.
HTTP Upstreamモジュール
(1)ip_hash指令
バックエンドの複数のダイナミックアプリケーションサーバに負荷分散を行う場合、ip_hash命令は、あるクライアントIPの要求をハッシュアルゴリズムによって同じバックエンドサーバに位置決めする.このように、あるipユーザからSever Aにログインしてから、そのサイトの他のURLにアクセスすると、アクセスがサーバAに残っていることが保証される.ip_を付けなければhash,加入ユーザがServer Aにログインし,そのサイトの他のURLにアクセスすると,バックエンドのSever B,Cにジャンプする可能性があるが,sessionはAに記録されており,B,Cには登録されていないので,ユーザにログインしていないことを示す.
注意:しかし、このアクセスはバックエンドサーバの負荷の均衡を保証することはできません.バックエンドの一部のserverが受信した要求が多く、一部のserverが受け入れることが少なく、設定した重み値が機能しない可能性があります.
バックエンドのダイナミックアプリケーションサーバがnginxでip_を構成することなくsession共有を行うことを推奨します.hashの方式.
upstream mysrv {
ip_hash;
server 192.168.0.110:80 weight=2;
server 127.0.0.1:8000 down;
server 192.168.0.212:80 weight=8;
}
(2)server命令
このコマンド用語は、バックエンド・サーバの名前とパラメータを指定します.サーバの名前は、ドメイン名、ip、ポート番号、UNIX Socketです.
パラメータの説明:
weight=number : サーバのウェイト値を設定します.ウェイト値が高いほど、クライアントに割り当てられるリクエスト数が多くなります.デフォルトは1です.
max_fails=numbser : fail_timeoutが指定した時間内にバックエンドサーバに対して要求に失敗した回数は、バックエンドサーバが接続できないこととエラーが発生したことが検出された場合(404を除く)、失敗とマークされます.設定されていない場合は、デフォルトは1です.0に設定されている場合は、このチェックを閉じます.
fail_timeout=time : パラメータmax_fails設定の失敗回数を経験した後、一時停止する時間.
down : サーバーが永続的なオフライン状態であることを示します.
Backup : 非backupサーバがすべてダウンしているか、忙しい場合にのみ有効になります.
次のように構成されています.
upstream mysrv {
ip_hash;
server www.xywy.com weight=2;
server 127.0.0.1:8000 down;
server 192.168.0.212:80 max_fails=3 fail_timeout=30s;
server unix:/tmp/bakend3;
}
=================================================
nginxを使用して負荷等化を行うつもりで、リクエストエージェントを1つのapacheに転送します.apacheの後ろにはWebLogicのアプリケーションがあります.apacheには別のプラグインがあり、apacheを通過しなければなりません.
downからnginx-0.6.35まで、インストール後、構成は簡単です.構成後の問題は以下の通りです:nginxを歩いてWebLogicへのアプリケーションは問題ありませんが、nginxからapache、WebLogicへのアプリケーションには問題があります.
ログには302(nginxでは「HTTP/1.1 302 2783」、apacheでは「HTTP/1.0 302 2771」).対比して、HTTP/1.1とHTTP/1.0の問題だと思い始めた.後にNginxとブラウザがHTTP/1.1を使って会話をしていることを思い出し、バックグラウンドサービスでHTTP/1.0を使っているのが正しいことに気づき、2つのウェブサービスで得られたクライアントへの応答ヘッダを含まないワード数が異なることに気づき、この欠けた12バイトがどこに欠けているのかを追及する必要がある.
同時にアクセステストの時にアクセス/webとアクセス/web/が違うことを思い出して、apacheでは処理できますが、apacheが類似のリソース要求を処理していることに気づいたときにログに302を打ってから、後で自動的に追加/して、その後ログに200を入れました.nginxは処理していません.設定されていないせいなのか、彼自身が類似の問題を処理できないのか分かりません.後者の確率は大きくないはずですが、nginx構成とapacheに関する処理メカニズムも検討しなければなりません.
さらに書き換えメカニズムで「/」の処理を加えることも考えられるが,nginxエージェントがapacheに報告されることを考慮すると302となり,それでも問題は解決できないと推定され,proxyの構成も検討される.
はい、以上の3つの道を見てください.それは正解です.