nginxエージェントweblogic負荷スキーム


参照先: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で、ファイルの内容は以下の通りである.
#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つの道を見てください.それは正解です.