ITお絵かき修行

3歩歩いても忘れないために

EhcacheとTerracottaでキャッシュレプリケーション(2)Terracotta・Ehcache設定

次は、
1.Terracotta・Ehcacheの資産(.tar.gz)を用意し定義体も用意する。またTerracottaTerracottaサーバにインストールする。
を行う。


1.Terracotta(Ehcache)ダウンロード

Terracottaは下記よりダウンロードした。
In-Memory Data Management for the Enterprise | Terracotta

トップページ>Products>Open Source>「No thanks, just take me to the download ›」>Terracotta Server Arrayの項より.tar.gzファイルをダウンロードした。

Terracottaの説明文を読むと、「This is compatible with Ehcache 2.6.8 and Quartz 2.1.7 only. Newer versions of Ehcache & Quartz may not be compatible with this」とある。
ダウンロードした.tar.gzファイル内にEhcache(Ehcache 2.6.8)の資産が入っているので、そちらを使用する。


2.定義体を作る(ehcache.xmlのみ)
用意すべき定義体は以下の通り。
ただし、今回Terracottaサーバの定義はデフォルトの定義を使用するため、tc-config.xmlは用意しない。Terrracottaサーバの多重化やセッションレプリケーションなどを行う場合は用意する必要がある。
f:id:hhhhhskw:20140505075453p:plain

→Ehcacheの資産として「ehcache.xml」が.tar.gzファイル内に格納されているのでそれを編集する。
コメントとサンプルは不要なので以下のように更新する。

<?xml version="1.0" encoding="UTF-8"?>

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    updateCheck="false"
    dynamicConfig="true">

    <!--ディスクキャッシュの保存先の設定 -->
    <diskStore path="java.io.tmpdir" />
	
    <!--デフォルトキャッシュの設定 -->
    <defaultCache />

    <!-- Terracottaサーバの設定 -->
    <terracottaConfig url="(Terracottaサーバのホスト名・IPアドレス):9510" />

    <!--APサーバ1号機用キャッシュの設定 -->
    <cache name="terracottaCacheAP01"
        maxElementsInMemory="100"
        maxElementsOnDisk="100"
        eternal="false"
        memoryStoreEvictionPolicy="LRU"
        timeToIdleSeconds="60"
        timeToLiveSeconds="60">
        <!-- Terracottaサーバを利用するCacheには以下の一文を追記する -->
        <terracotta />
    </cache>
</ehcache>

APサーバ2号機にも同じ定義体を使用する。
→1号機と2号機で使用するキャッシュのキャッシュ名を同一にするため。

ehcache.xmlはサーバ側の資産を作るときに使用するので一旦おいておく。


3.Terracottaをサーバにインストールする。
terracotta-3.7.7.tar.gzをサーバにアップロードし、解凍後「/usr/local」配下に置く。
(1)tar zxvf /home/(ftpユーザディレクトリ)/terracotta-3.7.7.tar.gz
(2)cp -ap /home/(ftpユーザディレクトリ)/terracotta-3.7.7 /usr/local/

4.Terracottaサーバ起動
(1)/usr/local/terracotta-3.7.7/bin/start-tc-server.sh
→「-f (定義体)」を指定することで定義体(tc-config.xml)を読み込ませることができる。
(2)Teratermで操作している場合、.shファイルを実行した後の操作は、「セッションの複製」より別窓を開いて操作するようにする。
(3)起動に成功すると以下のようなメッセージが標準出力に出力される。

[root@ip-xxx-xxx-xxx-xxx ~]# /usr/local/terracotta-3.7.7/bin/start-tc-server.sh
2014-05-05 07:18:34,386 INFO - Terracotta 3.7.7, as of 20140117-104005 (Revision 24356 by jenkins-slave@sfo-c64-jenkins-slave-007.eur.ad.sag from 3.7.7-rc)
2014-05-05 07:18:35,100 INFO - Successfully loaded base configuration from Java resource at '/com/tc/config/schema/setup/default-config.xml', relative to class com.tc.config.schema.setup.StandardXMLFileConfigurationCreator.
2014-05-05 07:18:35,184 INFO - Log file: '/root/terracotta/server-logs/terracotta-server.log'.
2014-05-05 07:18:37,792 INFO - Available Max Runtime Memory: 494MB
2014-05-05 07:18:40,237 INFO - JMX Server started. Available at URL[service:jmx:jmxmp://0.0.0.0:9520]
2014-05-05 07:18:46,375 INFO - Becoming State[ ACTIVE-COORDINATOR ]
2014-05-05 07:18:46,398 INFO - Terracotta Server instance has started up as ACTIVE node on 0:0:0:0:0:0:0:0:9510 successfully, and is now ready for work.

【注意】
Terracottaサーバの終了時はプロセスをkillせず、「stop-tc-server.sh」より終了する。
実行した.shのプロセスをkillするとJVM上にTerracottaのプロセスが残ってしまうので、
再度Terracottaサーバを起動しようとすると下記のエラーが出て怒られる。怒られた。
※エラーメッセージにもプロセスが多重に起動されているかも、という文言が出ていた。

java.lang.RuntimeException: Unable to setup StatisticsGathererSubSystem
        at com.tc.server.TCServerImpl.<init>(TCServerImpl.java:158)
        at com.tc.server.TCServerImpl.<init>(TCServerImpl.java:137)
        at com.tc.server.StandardServerFactory.createServer(StandardServerFactory.java:12)
        at com.tc.server.TCServerMain.main(TCServerMain.java:29)


次はTomcat上にのせる資産を作る。