Alfresco Community Editionでクラスタリングを試す(3)〜aldicaのインストール〜 - Alfresco Community Editionでクラスタリングを試す(3)〜aldicaのインストール〜 - aegif Labo Blog Alfresco
null Alfresco Community Editionでクラスタリングを試す(3)〜aldicaのインストール〜
こんにちは。てらしたです。
全3回のこのシリーズも今回が最後です。前回用意したalfresco1とalfresco2にaldicaをインストールしてキャッシュのレプリケーションが行われていることを確認します。
Acosix Alfresco Utilityのビルド
aldicaをインストールする際に、事前にAcosix Alfresco Utilityというモジュールをインストールする必要があるため、まずはこれをビルドするために適当な作業ディレクトリにGitHubからcloneします(記事執筆時点ではバージョンは1.2.3でした)。
git clone https://github.com/Acosix/alfresco-utility.git
このモジュールではMaven Toolchainsプラグインが使用されていて、ビルドするためにはtoolchains.xmlという設定ファイルを.m2ディレクトリ(Macの場合は~/.m2)に作成します。内容はこちらのサンプルを参考に、JDKのバージョン毎にjdkHomeを指定すればOKです。JDK1.7用の設定はAlfresco 4.2用のブランチでビルドする際に必要になるものなので、1.8用の設定だけでも問題ありません(私も1.8用の設定しか書いていません)。
準備ができたら以下のコマンドでビルドします。
mvn clean package
aldicaのビルド
次に、aldicaをビルドします。先ほどと同様にまずはGitHubからcloneします(記事執筆時点のバージョンは1.0.1)。
git clone https://github.com/aldica/aldica.git
aldicaでもToolchainsプラグインが使われていますが、toolchains.xmlは先ほど設定したので追加で必要な作業はなく、以下のコマンドでビルドします。
mvn clean package
単体テストをスキップしたい場合はこのドキュメントにある通り、以下のオプションを付ければOKです。
mvn clean package -P surefireSuppression
alfresco1へのaldicaのインストールと設定
モジュールが準備できたので、まずは前回構築したalfresco1にaldicaをインストールします。もし起動したままだったらTomcatは停止しておきます。
alfresco.warに、Acosix Alfresco Utility、aldicaの順にAMPを適用します。alfresco-mmt.jarのあるディレクトリに移動し、以下のコマンドを実行します。
java -jar alfresco-mmt.jar install [Acosix Alfresco Utilityをcloneしたディレクトリ]/core/repository/target/de.acosix.alfresco.utility.core.repo-x.x.x.amp [tomcat1のディレクトリ]/webapps/alfresco.war
java -jar alfresco-mmt.jar install [aldicaをcloneしたディレクトリ]/repository/target/aldica-repo-ignite-x.x.x.amp [tomcat1のディレクトリ]/webapps/alfresco.war
java -jar alfresco-mmt.jar list [tomcat1のディレクトリ]/webapps/alfresco.war
元のalfresco.warから展開されたフォルダや一時ファイルを削除します。
rm -r [tomcat1のディレクトリ]/webapps/alfresco
rm -r [tomcat1のディレクトリ]/work/*
rm -r [tomcat1のディレクトリ]/temp/*
alfresco1のalfresco-global.propertiesに以下の行を追記して保存します。
aldica.core.enabled=true
aldica.caches.enabled=true
aldica.caches.remoteSupport.enabled=true
aldica.core.local.comm.port=47100
aldica.core.local.disco.port=47110
aldica.core.local.time.port=47120
alfresco1を起動します。前回作成したコンテナを停止していたら、alfresco1を起動する前に起動しておきます。
alfresco2へのaldicaのインストールと設定
同様にalfresco2にもインストールしますが、aldicaインストール済のalfresco.warは既に作ったので、tomcat1からtomcat2にコピーします(tomcat2のalfresco.warはあらかじめ適当にリネームしておいてください)。
cp [tomcat1のディレクトリ]/webapps/alfresco.war [tomcat2のディレクトリ]/webapps/
古いalfrescoディレクトリや一時ファイルを削除します。
rm -r [tomcat2のディレクトリ]/webapps/alfresco
rm -r [tomcat2のディレクトリ]/work/*
rm -r [tomcat2のディレクトリ]/temp/*
alfresco2のalfresco-global.propertiesに以下の行を追記して保存します。
aldica.core.enabled=true
aldica.caches.enabled=true
aldica.caches.remoteSupport.enabled=true
aldica.core.local.comm.port=47200
aldica.core.local.disco.port=47210
aldica.core.local.time.port=47220
alfresco2を起動します。正常に起動すると、アクティブなノードが2つあるという以下のようなログがalfresco1とalfresco2の両方に出力されると思います。
INFO [ignite.lifecycle.SpringIgniteLifecycleBean] [disco-event-worker-#36%repositoryGrid%] Ignite instance repositoryGrid currently has 2 active nodes on addresses [0:0:0:0:0:0:0:1%lo0, 127.0.0.1, 192.168.xxx.xxx]
キャッシュのレプリケーションの確認
前回と同じ方法で、alfresco1で取得した認証チケットがalfresco2でも有効であることを確認します。まずは以下のコマンドでalfresco1から認証チケットを取得します。
curl "http://localhost:8080/alfresco/service/api/login?u=admin&pw=admin"
取得した認証チケットを使用して、alfresco1からadminユーザのユーザ情報を取得します。ここまでは前回と同じ結果になります。
curl "http://localhost:8080/alfresco/service/api/people/admin?alf_ticket=TICKET_d2c72dbcd224ad7691df60f0a8116614b126a21b"
次に、alfresco2に対して同じ認証チケットを使ってリクエストを送ると、前回は認証エラーになりましたが今回はユーザ情報が正しく返ってきます。
curl "http://localhost:18080/alfresco/service/api/people/admin?alf_ticket=TICKET_d2c72dbcd224ad7691df60f0a8116614b126a21b"
こちらの動作確認の手順に書かれているように、一方でフォルダのプロパティの値を変更するともう一方にも反映されます(ここではこの確認は割愛します)。
以上のことから、キャッシュのレプリケーションが正常に機能しており、2台のAlfrescoがクラスタとして機能することが確認できました。
最後に
Community Editionでもaldicaをインストールするだけでクラスタリングが可能になるのであれば、今まではコストや開発難易度の観点から諦めていたようなケースでもCEが使える可能性が広がるのではないかと思います。ただ、今回はaldicaのインストールと動作確認を目的に最小構成かつ最低限の設定で試しているため、本番環境で使う場合やより多くのサーバでクラスタリングする場合はパラメータのチューニングが必要になってくると思います。設定可能なプロパティの説明はこちらのドキュメントに詳しく書かれているので参考にしていただければと思います。