Tomcatクラスタと負荷等化の実装(session同期)

7518 ワード

(一)環境説明
  • サーバは4台、1台はapacheをインストールし、3台はtomcat
  • をインストールします.
  • apache 2.0.55、tomcat 5.5.15、jk 2.0.4、jdk 1.5.6またはjdk 1.4.2
  • ip構成:apacheをインストールするipは192.168.0.88、tomcatをインストールするサーバipはそれぞれ192.168.0.1/2/4
  • (二)取付過程
  • tomcatをインストールする3台のサーバにjdk
  • をインストールします.
  • jdkのインストールパスを設定し、環境変数pathにjdkのbinパスを加え、環境変数JAVA_を新規作成HOMEはjdkのインストール経路
  • を指す.
  • tomcatをインストールする3台のサーバにtomcatをそれぞれインストールし、
  • を正常に起動できるように3つのtomcatをデバッグします.
  • tomcatのserver.xmlポートをそれぞれ3台変更:7080/8888/9999
  •   
    
      
    
      
    
  • 各tomcatの起動が正常かどうかをそれぞれテストする
  • http://192.168.0.1:7080 http://192.168.0.2:8888 http://192.168.0.4:9999
    (三)負荷等化配置過程
  • apacheをインストールするサーバにapache 2.0.55をインストールします.私のインストールパスはデフォルトC:Program FilesApache GroupApache 2
  • です.
  • インストール後、apacheが正常に起動できるかどうかをテストし、正常に起動できるようにデバッグします.http://192.168.0.88
  • jk 2.0.4をダウンロードしてファイルを解凍する
  • 解凍されたディレクトリのmodulesディレクトリのmod_jk 2.soファイルはapacheのインストールディレクトリの下のmodulesディレクトリにコピーされ、私のはC:Program FilesApache GroupApache 2modules
  • です.
  • apacheのインストールディレクトリのconfディレクトリのプロファイルhttpd.confを変更し、ファイルにLoadModuleモジュールのプロファイル情報の最後にLoadModule jk 2_を追加します.module modules/mod_jk2.so
  • はそれぞれ3つのtomcatのserver.xmlを修正し、修正内容は以下の通りである:
  • jvmRoute="jvm 1"をそれぞれjvmRoute="tomcat 1"、jvmRoute="tomcat 2"およびjvmRoute="tomcat 3"に変更します.
           
      
           
                 
           
              
         
    
  • それから3つのtomcatを再起動して、デバッグは正常に
  • を起動することができます.
  • apacheのインストールディレクトリのconfディレクトリの下にファイルworkers 2.propertieを作成し、ファイル内容を以下の
  • に書き込む.
    # Define the communication channel   
    [channel.socket:192.168.0.1:8009]   
    info=Ajp13 forwarding over socket   
    #           
    tomcatId=tomcat1 #  tomcat     server.xml  jvmRoute="tomcat1"       
    debug=0   
    lb_factor=1 #      ,                 
      
    # Define the communication channel   
    [channel.socket:192.168.0.2:8009]   
    info=Ajp13 forwarding over socket   
    tomcatId=tomcat2   
    debug=0   
    lb_factor=1   
      
    # Define the communication channel   
    [channel.socket:192.168.0.4:8009]   
    info=Ajp13 forwarding over socket   
    tomcatId=tomcat3   
    debug=0   
    lb_factor=1   
      
    [status:]   
    info=Status worker, displays runtime information.    
      
    [uri:/jkstatus.jsp]   
    info=Display status information and checks the config file for changes.   
    group=status:   
      
    [uri:/*]   
    info=Map the whole webapp   
    debug=0   
    
  • は3つのtomcatのインストールディレクトリの中のwebappsで同じアプリケーションを創立して、私とアプリケーションディレクトリ名はTomcatDemoで、3つのアプリケーションディレクトリの中で同じWEB-INFディレクトリとページindex.jspを創立して、index.jspのページの内容は以下の通りです:
  •    
       
    Cluster App Test   
       
    Server Info:   
    ");%>   
     ID " + session.getId()+"
    "); // Session String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.print("Session "); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"
    "); System.out.println( name + " = " + value); } %>
    :
    :
  • apacheサーバと3つのtomcatサーバを再起動し、この負荷等化が完了しました.テスト負荷等化先テストapache、アクセスhttp://192.168.0.88/jkstatus.jsp、正常にアクセスでき、その内容をクエリーできますか?tomcatに関する構成情報と負荷説明が3つあり、アクセスhttp://192.168.0.88/TomcatDemo/index.jsp実行可能、実行可能を見ると、負荷等化
  • が確立されている.
    (四)tomcatクラスタ構成
  • 負荷等化構成の条件下でtomcatクラスタ
  • を構成する
  • はそれぞれ3つのtomcatのserver.xmlを修正し、修正内容は以下の通りである:
  •            
      
                   
      
                   
      
                   
      
                  
                         
                   
                            
                  
              
    

    クラスタ構成オプションのコメントを放せばよい
  • は3つのtomcatを再起動し、このtomcatのクラスタは
  • を完了しました.
    (五)応用構成
    ロードとクラスタを行うtomcatディレクトリの下にあるwebappsのアプリケーションのWEB-INFのweb.xmlファイルには、次のような構成を追加します.
       
      
       TomcatDemo   
          
    
    

    補足:tomcatのセッション同期機能はマルチキャストに使用する必要があるため、windowsのデフォルトではマルチキャストサービスが開通していますが、linuxのデフォルトでは開通していません.route add-net 224.0.0.0 netmask 240.0.0 dev eth 0を開くように命令することができます.サーバの起動時にマルチキャストを開始する必要がある場合は、/etc/sysconfig/static-routesファイルにeht 0 net 224.0.0.0 netmask 240.0.0を追加します.具体的なマルチキャストの概念はCCNP関連の内容を参照してください.