Child pages
  • IdPClusteringTerracotta
Skip to end of metadata
Go to start of metadata

本ページの記述はIdPv2に対するものです。IdPv3ではTerracottaを用いた冗長化手順は提供されません。

Shibboleth-IdP冗長化環境構築手順書(Terracotta編)

2011年12月26日
金沢大学

- 目次 -
1. はじめに
1.1. 本章の目的
1.2. 前提条件
2. Terracottaの構築
2.1. ファイヤーウォールを解放する。
2.2. Terracotttaの設定ファイルの編集
2.3. Terracottaのインストール
2.4. Terracottaクライアントの設定
3. 起動・停止
3.1. Terrracottaサーバ、クライアントの起動順
3.2. Terracottaサーバの起動/停止
3.3. tomcat (Terracottaクライアント)の起動/停止

1. はじめに

1.1. 本章の目的

本書は、JavaクラスタリングソフトウェアであるTerracottaを使用したShibboleth-IdPの冗長化環境の構築手順書です。
本書にて、TerracottaのインストールとShibboleth-IdPとの連携ができることを目的とします。

1.2. 前提条件

Terracottaを使ったShibboleth-IdP冗長化環境を構築するにあたり、下記を前提条件とします。
前提条件

  • Shibboleth-IdPがインストールされ、認証ができる状態とします。
  • OSはCentOS(64bit)を前提とします。
  • Terracottaをインストールするサーバは2台とします。
  • 本書は下記のソフトウェアを使用して記述します。

 

ソフトウェア名

バージョン

インストール先

Terracotta

3.6.1

/opt/terracotta

Shibboleth-IdP

2.3.6

/opt/shibboleth-idp

Apache Tomcat

6.0.35

/usr/java/tomcat


2. Terracottaの構築

Terracottaを構築する全てのサーバで実施します。

2.1. ファイヤーウォールを解放する。

Terracottaは3つのポートを使用します。
ClientからServerへのポート (デフォルトは 9510)
ServerからServerへのポート (デフォルトは 9530)
JMXを利用する場合のポート (デフォルトは 9520。本マニュアルでは利用しません。)

2.2. Terracotttaの設定ファイルの編集

  • 下記URLからtc-config.xml をダウンロードします。
    https://wiki.shibboleth.net/confluence/download/attachments/4358352/tc-config.xml

    # cd /opt/shibboleth-idp/conf/
    # wget https://wiki.shibboleth.net/confluence/download/attachments/4358352/tc-config.xml
    
  • /opt/shibboleth-idp/conf/tc-config.xmlの設定
    赤の太字が追加、又は変更となる箇所となります。

    <?xml version="1.0" encoding="UTF-8"?>
    <tc:tc-config
        xsi:schemaLocation=http://www.terracotta.org/config http://www.terracotta.org/schema/terracotta-4.xsd
        xmlns:tc=http://www.terracotta.org/config
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

        <servers>
           <!-- START Terracotta server definitions -->
            <server name="idpNode1" host="XXX.XXX.XXX.XXX">
                <dso-port>9510</dso-port>
                <l2-group-port>9530</l2-group-port>
                <dso>
                    <persistence>
                        <mode>permanent-store</mode>
                    </persistence>
                </dso>
                <logs>/opt/shibboleth-idp/cluster/server/logs</logs>
                <data>/opt/shibboleth-idp/cluster/server/data</data>
                <statistics>/opt/shibboleth-idp/cluster/server/stats</statistics>
            </server>
            <server name="idpNode2" host="YYY.YYY.YYY.YYY">
                <dso-port>9510</dso-port>
                <l2-group-port>9530</l2-group-port>
                <dso>
                    <persistence>
                        <mode>permanent-store</mode>
                    </persistence>
                </dso>
               <logs>/opt/shibboleth-idp/cluster/server/logs</logs>
                <data>/opt/shibboleth-idp/cluster/server/data</data>
                <statistics>/opt/shibboleth-idp/cluster/server/stats</statistics>
            </server>
           <!-- END Terracotta server definitions -->
            <ha>
                <mode>networked-active-passive</mode>
                <networked-active-passive>
                    <election-time>5</election-time>
                </networked-active-passive>
            </ha>
        </servers>

        <system>
            <configuration-model>production</configuration-model>
        </system>

        <!-- terracotta client start -->
        <clients>
            <logs>/opt/shibboleth-idp/cluster/client/logs-%i</logs>
            <!--
            <statistics>/opt/shibboleth-idp/cluster/client/stats-%i</statistics>
            -->
            <modules>
                <module name="tim-vector" version="2.7.1" group-id="org.terracotta.modules"/>
                <module name="tim-tomcat-6.0" version="2.3.0"/>
            </modules>
        </clients>
        <!-- terracotta client end -->
        <application>
            <dso>
                ~~(中略)~~

                <web-applications>
                    <web-application>idp</web-application>
                </web-applications>
            </dso>
        </application>
    </tc:tc-config>

  • XXX.XXX.XXX.XXX および YYY.YYY.YYY.YYY はTerracotta を構築したサーバのIPアドレスです。

 

2.3. Terracottaのインストール

2.4. Terracottaクライアントの設定

  • tomcatの起動ファイルにTerracottaクライアントの起動コマンドを追加します。
    Terracotta クライアントは tomcat のサービスとして起動します。

    # vi /etc/init.d/tomcat6
    

    ~~(省略)~~

    export TC_INSTALL_DIR=/opt/terracotta
    export TC_CONFIG_PATH=/opt/shibboleth-idp/conf/tc-config.xml

    ~~(省略)~~

    start(){
        # if [ -z $(/sbin/pidof java) ]; then
        if [ -z $(/sbin/pidof tomcat) ]; then
            echo "Starting tomcat"

            . $TC_INSTALL_DIR/platform/bin/dso-env.sh --q
            export JAVA_OPTS=$TC_JAVA_OPTS $JAVA_OPTS

            /usr/java/tomcat/bin/startup.sh
            touch /var/lock/subsys/tomcat
        else
            echo "tomcat allready running"
        fi
    }

  • dso-boot-hotspot_linux_160_23.jarがterracottaクライアント起動時に最新化されるようにします。

    # vi /opt/terracotta/platform/bin/make-boot-jar.sh
    

    exec "${JAVA_HOME}/bin/java" \
        -Dtc.install-root="${TC_INSTALL_DIR}" \
        -cp "${TC_INSTALL_DIR}/lib/tc.jar" \
        com.tc.object.tools.BootJarTool make "$@" -w

3. 起動・停止

3.1. Terrracottaサーバ、クライアントの起動順

  • 下記の順で起動してください。

    1. Terracotta サーバ
    2. Terracotta クライアント

3.2. Terracottaサーバの起動/停止

  • 起動

    Terracottaサーバ :  idpNode1の場合
    # /opt/terracotta/bin/start-tc-server.sh -n idpNode1 -f /opt/shibboleth-idp/conf/tc-config.xml &

    Terracottaサーバ :  idpNode2の場合
    # /opt/terracotta/bin/start-tc-server.sh -n idpNode2 -f /opt/shibboleth-idp/conf/tc-config.xml &

    Terracottaサーバがクラスタリングされている場合は先に起動したサーバがActiveとなります。

  • 停止

    # /opt/terracotta/bin/stop-tc-server.sh
    

3.3. tomcat (Terracottaクライアント)の起動/停止

  • 起動

    # /etc/init.d/tomcat6 start
    
  • 停止

    # /etc/init.d/tomcat6 stop
    






以上。

  • No labels