CookBook

Payara の Docker を作成する。

投稿日:2018-12-07 更新日:

この CookBook では、Payara の Docker の作成手順について紹介しています。

レシピ

  1. ベースイメージの作成
  2. Payara の Docker イメージを作成します
  3. 実行します

1. ベースイメージの作成

CentOS 6.9 を使用します。

Dockerfile

ロケールを ja_JP, タイムゾーンを Asia/Tokyo に変更し、root/password で ssh 接続ができるように設定します。

mycentos:6.9 というタグでビルドします。

2. Payara の Docker イメージを作成します

先ほど作成したベースイメージを利用します。
jdk-8u191-linux-x64.tar.gzpayara-5.184.zip, JDBC Driver(ojdbc8.jar, postgresql-42.2.2.jar, sqljdbc42.jar) を事前にダウンロードしておきます。

Dockerfile

細かいセットアップはシェルスクリプトに逃がし、Dockerfile からはそれを実行するようにします。
これにより、Dockerfile をシンプルにでき、かつイメージ容量の削減にもつながります。

netcat と multitail を利用したいためインストールしています。

setup_jdk.sh

Payara のセットアップスクリプトです。

setup_payara.sh

以下の変更を加えています。

  • /var/payara/payara/bin/asadmin create-service domain1 (/etc/init.d/payara_domain1 start/stop が使えるように)
  • asadmin change-admin-password (admin/password に変更)
  • asadmin enable-secure-admin
  • システムプロパティ(default-config, server-config, imart-config に対して)
  • solr.solr.home=../solr
  • JVM Options(default-config, server-config, imart-config に対して)
  • -Xmx2048m -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Tokyo -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=30 -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+CMSClassUnloadingEnabled
  • JVM Debug Enable(Java リモートでバッグの有効化)
  • default-config, server-config, imart-config に対して
  • set configs.config.$config.thread-pools.thread-pool.http-thread-pool.max-thread-pool-size=200 (スレッドプール最大数)
  • set configs.config.$config.network-config.protocols.protocol.admin-listener.http.comet-support-enabled=true (Comet)
  • set configs.config.$config.network-config.protocols.protocol.http-listener-1.http.comet-support-enabled=true (Comet)
  • set configs.config.$config.network-config.protocols.protocol.http-listener-2.http.comet-support-enabled=true (Comet)
  • set configs.config.$config.network-config.protocols.protocol.admin-listener.http.encoded-slash-enabled=true (Encoded Slash)
  • set configs.config.$config.network-config.protocols.protocol.http-listener-1.http.encoded-slash-enabled=true (Encoded Slash)
  • set configs.config.$config.network-config.protocols.protocol.http-listener-2.http.encoded-slash-enabled=true (Encoded Slash)
  • imart-config の作成(default-config からコピーして作成)
  • imart-instance の作成(imart-config を参照)
  • PostgreSQL(XA), SQL Server(XA), Oracle(Non-XA, XA) のデータソース、jndi を追加
  • /var/payara/payara/glassfish/lib への JDBC ドライバの配置

docker run 時に実行するスクリプトです。

run.sh

sshd と Payara を起動しています。

mypayara というタグでビルドします。

3. 実行します

root/password で ssh 接続ができるようになっています。
あくまで検証用の Docker としてこのように設定しているため、セキュリティにはご注意ください。

クラスタリングする場合

Docker コンテナ化した Payara をクラスタリングする場合、ポートフォワードされている事が原因で Hazelcast 側で「"Wrong bind request from ..."」エラーが発生するため、以下のような手順が必要です。
ここでは、Docker 化した Payara を 192.168.0.1 と 192.168.0.2 の二台のマシンでクラスタを組む例として説明します。

--net=host オプションを利用する方法

docker run する際に --net=host を付けることで docker コンテナがブリッジではなくホストのネットワークインタフェースを利用します。
--net=host オプションを付けて docker run 後、192.168.0.1:4848 と 192.168.0.2:4848 それぞれの管理コンソールから、[Domain] - [Data Grid] の [Configuration] タブの [Data Grid Discovery Mode] を「tcpip」に変更し、[TCP/IP Instances] を「192.168.0.1:4900,192.168.0.2:4900」に設定してください。
設定後、それぞれのマシンから /etc/init.d/payara_domain1 stop && /etc/init.d/payara_domain1 start を実行し再起動してください。

hazelcast-config.xml を作成する方法

--net=host オプションを付けずに上記のように docker run します。
docker run 後、192.168.0.1 マシンに以下のファイルを作成します。

/var/payara/payara5/glassfish/domains/domain1/config/hazelcast-config.xml

同様に、192.168.0.2 マシンに以下のファイルを作成します。

/var/payara/payara5/glassfish/domains/domain1/config/hazelcast-config.xml

設定後、それぞれのマシンから /etc/init.d/payara_domain1 stop && /etc/init.d/payara_domain1 start を実行し再起動してください。

docker network を利用する方法

1台の物理マシン上でクラスタリングを構成する場合 docker network を利用することで簡単にクラスタリング環境を構築できます。
1. docker network create -d bridge --subnet=172.16.0.0/24 payara-cluster
2. docker run -d -h payara1 --name payara1 --net=payara-cluster (省略) mypayara:5.182
3. docker run -d -h payara2 --name payara2 --net=payara-cluster (省略) mypayara:5.182
4. payara1 の管理コンソールにログインし、payara2 の ssh ノードを追加

なお、Kubernetes 環境で実行する場合、以下を利用することで、簡単にクラスタリングすることが可能です。
Hazelcast Discovery Plugin for Kubernetes
以下にあるように、サービスを先に作成することに注意してください。
payara-hazelcast-kubernetes

このように、Docker イメージ化するだけで、検証用の Payara をすぐに準備できます。
是非ご活用ください。

-CookBook

執筆者:


  1. […] この CookBook では以下の CookBook で作成した docker image を使用します。 Payara の Docker を作成する。 […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

IM-BISの処理画面でIMBoxのチャットを利用してコミュニケーションする方法

このCookBookでは、IM-BISの処理画面でIMBoxのチャットを利用してコミュニケーションする方法を紹介しています。 本稿では、案件単位にIMBoxのダイレクトメッセージ(以降DM)を作成し、 …

no image

画面操作方法によって画面アイテムの入力チェックを切り替える方法

このCookBookでは、IM-FormaDesignerの入力チェックプログラムで、画面の操作方法に応じた入力チェックを設定する方法を紹介します。 この方法は、以下の製品で作成したアプリケーションや …

no image

前回のログイン時刻を表示するポートレットの作成方法

このクックブックでは、前回のログイン時刻を表示するポートレットの作成方法をご紹介します。 具体的には、以下の3つの情報を表示するポートレットを作成します。 前回のログイン時刻 前回ログイン時のIPアド …

AccelStudio 共通定数定義の活用方法

このCookBookでは、共通定数の作成、利用方法、利用するメリットをご紹介します。 共通定数とは共通定数とはIM-BloomMakerやIM-LogicDesignerで共通で利用できる定数です。I …

no image

Formaの実行画面でアクセスログを収集する

このCookBookでは、Formaの実行画面で、アクセスログを収集する方法を紹介します。 サンプルでは、登録画面を開いた時点とデータ登録を実行した時点で、ログを収集します。 ログを収集することで、登 …