GlassfishにLiferayクラスターをインストールするためのステップバイステップのチュートリアルを知っていますか?
3 に答える
Googleは、 how-to-install-and-configure-a-liferay-clusterと呼ばれるこの記事を見つけました
楽しみ!
私は同じ問題、または非常によく似た問題に取り組んでいます。LiferayWARファイルを2つのノードを持つGlassfishクラスターにデプロイしています。まだ完全に正しく構成されていませんが、正常にデプロイされています。たぶんこれもあなたを助けるでしょう、そして私たちはメモを比較することができます。
これが私がしなければならなかったことです。
まず、基礎。GlassFishは、WARを展開する方法が少し奇妙です。私が理解しているように、WARファイルはノードエージェントによってどこかで分解されますが、一度デプロイされるとファイルを突くアクセスはできません。これは、構成ファイル(portal-ext.properties)を微調整するときに、毎回再デプロイする必要があることを意味します。Liferayは約73MBとかなり大きいです。これにより、PermGenのスペース不足例外が定期的に発生し、クラスターを再起動する必要があります。したがって、JVMオプションを設定して、GlassfishのPermGenスペースのサイズを増やすことをお勧めします。ここに問題の良い説明があります:
http://www.freshblurbs.com/explaining-java-lang-outofmemoryerror-permgen-space
このJVMオプションでは問題は解決しませんが、クラスターの再起動間の遅延が増加します(glassfishコンソールは再起動できませんでした。コマンドラインで実行する必要がありました)。
次の質問は、依存関係JARファイルはどこに行くのかということでした。他のサービスを実行している共有クラスターで運用しているため、domains / domain1/libフォルダーに配置しても機能しません。依存関係のJARファイルをliferaywarファイルのWEB-INF/libに貼り付けましたが、これには満足しているようです。
次へ:portal-ext.propertiesオーバーライドファイルはどこに行きますか?答えは、WEB-INF/classesのliferaywarファイルにもあります。これは、上記のようにプロパティを変更するたびに再デプロイする必要がある理由でもあります。
次へ:コンテキスト。デフォルトでは、liferayはルートコンテキスト「/」にデプロイしようとします。私たちは共有環境にいるので、WARをコンテキスト/lr1にデプロイしました。portal-ext.propertiesで、プロパティを設定する必要がありました
portal.ctx = / lr1
次へ:クラスター化された環境で組み込みHSQLを使用することはあまり意味がありません。GlassFishを使用してデータベース接続プールのJNDI名を設定します。これを行う方法については、Liferayドキュメントガイドに説明があります。その後、portal-ext.propertiesファイルに次のように配置できました。
jdbc.default.jndi.name = jdbc / LiferayPool
また、Luceneインデックスをファイルシステムに保存したくありません。portal-ext.propertiesファイルのこれらのプロパティを上書きして、次のことを修正します。
lucene.store.type = jdbc
lucene.store.jdbc.auto.clean.up = true
lucene.store.jdbc.dialect.oracle = org.apache.lucene.store.jdbc.dialect.OracleDialect
同様のロジックがJackRabbitリポジトリに適用されます。現在、次のプロパティを設定しています(これが正しいかどうかはわかりませんが、ドキュメントライブラリは機能しています)。
jcr.jackrabbit.repository.root = WEB-INF / classes /
jackrabbitのrepository.xmlファイルもWEB-INF/classesに配置する必要がありました。そのxmlファイルは、使用するデータベース接続パラメーターをjackrabbitに指示します(詳細については、ApacheのJackrabbit構成ページを参照してください)。繰り返しになりますが、それをWEB-INF / classesに入れることが正しい考えであるかどうかはわかりませんが、同じデータを共有するには、クラスター内のすべてのノードがWARファイルのどこかにあるか、共有ファイルシステムにある必要があります。 。
私はまだEHcacheをいじっていませんが、休止状態のプロパティを入れました:
hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
私たちのオラクルデータベースのために。上記のデフォルトのJDBCプロパティを使用して、JNDIデータベース接続を参照していると思います。
「Liferayホームディレクトリ」変数が「サーバーホームの1つ上のフォルダー」であるという概念は、私がまだ取り組んでいるものであり、/ opt / ee/licenseに関連するHTTPリクエストが送信されるたびにエラーが発生します。 。
liferayを実行しているユーザーには、/ optを変更する権限がありません。いずれの場合も、クラスター環境ではこれはお勧めできません。設定がどこにあるのかわかりません。見ていると、
liferay.home = $ {resource.repositories.root}
と
resource.repositories.root = $ {default.liferay.home}
default.liferay.homeがどこで定義されているかはまだわかりません。まだそれに取り組んでいます。
残念ながら、Liferayをクラスター化された環境にデプロイすることは、まだ十分に文書化されていませんが、これを共有することが少しでも役立つことを願っています。
幸運を!
Liferayはサーバーに依存しないSpring/Hibernateアプリケーションであるため、クラスタリング構成のほとんどは、portal(-ext).propertiesファイルのクラスタリングセクション(Hibernate、EHCache、およびJGroup構成)である必要があります。デプロイされている他のWebアプリと同様に、アプリサーバー固有の構成はセッションフェイルオーバーのみである必要があります。