2012年11月30日金曜日

mod_cluster で簡単クラスタリング ~ JBoss EAP 編

ご無沙汰しています。サイオステクノロジーの鎌田です。

今回は JBoss のプロジェクトの一つである mod_cluster を使って、クラスタリング構成を簡単に実現するレシピを紹介します。

今回使用する材料は次の通りです。

  • Red Hat Enterprise Linux 6.3 (x86_64)

  • JBoss Enterprise Application Platform 6.0.0

    Red Hat Customer Portal からダウンロード。ファイル名: jboss-eap-6.0.0.zip

  • JBoss Enterprise Application Platform 6.0.0 Webserver Connector Natives for RHEL 6 x86_64

    Red Hat Customer Portal からダウンロード。ファイル名: jboss-eap-native-webserver-connectors-6.0.0-RHEL6-x86_64.zip

レシピで想定しているネットワーク IP アドレスは次の通りです。

  • Web サーバ: 外部からの HTTP リクエスト等を受け付ける以外に、内部用に 192.168.41.2。
  • AP サーバ1: 192.168.41.3。
  • AP サーバ2: 192.168.41.4。

それでは、さっそくクラスタリング環境を構築します。

Web サーバの構築

  1. Web サーバを構築するため、まずは httpd パッケージをインストールします。

    # yum install httpd
  2. jboss-eap-native-webserver-connectors-6.0.0-RHEL6-x86_64.zip を展開し、Web サーバのモジュールを適切なパスにコピーします。

    # unzip jboss-eap-native-webserver-connectors-6.0.0-RHEL6-x86_64.zip
    # cp jboss-eap-6.0/modules/lib64/* /usr/lib64/httpd/modules/
  3. mod_cluster の設定を行います。/etc/httpd/conf.d/mod_cluster.conf を作成し、次の内容で設定します。

    LoadModule slotmem_module modules/mod_slotmem.so
    LoadModule manager_module modules/mod_manager.so
    LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
    LoadModule advertise_module modules/mod_advertise.so
    
    Listen 192.168.41.2:6666
    <VirtualHost 192.168.41.2:6666>
    
      <Directory />
        Order deny,allow
        Deny from all
        Allow from 192.168.41.
      </Directory>
    
      KeepAliveTimeout 60
      MaxKeepAliveRequests 0
    
      ManagerBalancerName mycluster
      AdvertiseFrequency 5
      EnableMCPMReceive
    
    </VirtualHost>
  4. /etc/httpd/conf/httpd.conf から、不要なモジュールをロードしないよう設定します。

    #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
  5. mod_cluster が advertise パケットをマルチキャストアドレス 224.0.1.105 に対して送信するため、route コマンドでルーティングを定義します。

    # route add -host 224.0.1.105 dev eth1
  6. httpd サービスを起動します。

    # service httpd start

AP サーバの構築

  1. JBoss EAP の動作には Java が必要になるため、まずは java-1.6.0-openjdk パッケージをインストールします。

    # yum install java-1.6.0-openjdk
  2. jboss-eap-6.0.0.zip を /opt 配下に展開します。

    # unzip jboss-eap-6.0.0.zip -d /opt/
  3. mod_cluster の設定が済んでいる設定ファイル standalone-ha.xml を使用するよう、/opt/jboss-eap-6.0/bin/standalone.conf の 52 行目を修正します。

    JAVA_OPTS="$JAVA_OPTS -Djboss.server.default.config=standalone-ha.xml"
  4. JBoss EAP が listen する IP アドレスを、ローカルアドレスから変更します。/opt/jboss-eap-6.0/standalone/configuration/standalone-ha.xml の 368 行目を修正します。

    <inet-address value="${jboss.bind.address:192.168.41.3}"/>
    <inet-address value="${jboss.bind.address:192.168.41.4}"/>
  5. JBoss EAP を起動します。

    # /opt/jboss-eap-6.0/bin/standalone.sh

以上で mod_cluster によるクラスタリング構成が完了です。AP サーバ側に war ファイル等の Web アプリケーションをデプロイして、ブラウザから Web サーバにアクセスしてみてください。おそらく、正常にアクセスできるはずです。

いかがでしょうか。mod_cluster を使えば、簡単にクラスタリング構成を実現できますので、検証できる環境があれば試してみてください。

0 件のコメント:

コメントを投稿