LoginSignup
5
7

More than 1 year has passed since last update.

ACMS Apexの検証環境を高速で用意する

Last updated at Posted at 2019-06-11

ACMS Apex 実験室 ~ 実験その0「実験環境」

はじめに

本記事の内容は、前半はほとんど他所でたくさん書かれた内容になっています。
このあと、いろいろ投稿するつもりなので、共通の環境を定義する意味で記事を書きました。
慣れるとだいたい1時間くらいで、ACMS Apexのマスターノードが使える環境が立ち上がります。

対象読者

AIやIoTのシステム構築に携わる方に読んでもらえる記事にしたいと思っています。
次のような技術者を対象にしています。

  • Linuxが普通に扱える

    どのレベルを普通というかは賛否両論あると思いますが…

    コマンドラインで操作ができて、この記事に書いてあることが理解できる程度、と考えてください。
  • 仮想環境やネットワークなど、環境構築に関する知識がある
  • ACMS Apexが操作できる

    エンタープライズ・データ連携基盤 シルバーコース受講者相当の知識があるとよいです。

    本筋から外れるところは説明を端折りますので、各自補完していただけることを期待します。

環境

次のような環境を構築します。

  • Windows10 Pro(Anniversary Update以降)
  • Hyper-V

    他の仮想環境でも構いません。各自、自分の環境に合わせて読み替えてください。
  • CentOS7(CentOS-7-x86_64-Minimal-1810)
  • OpenJDK(1.8.0_191-b12)
  • MySQL community 5.7
  • MySQL connector for java
  • ACMS Apex 1.3

前提条件

  • Hyper-Vの環境設定(ネットワーク等)ができていること
  • 仮想マシンが外部ネットワークに接続できること1
  • Windows10がNTPサーバになっていること2

ネットワーク構成

次のようなネットワーク環境を想定して記事を書いています。

アドレス 機器
192.168.249.1 母艦 仮想NIC側
192.168.249.20 仮想マシン(ACMS Apex マスターノード)
10.20.30.10 母艦 LAN側
10.20.30.200 DNS1
10.20.30.201 DNS2
proxy.aaa.bbb:8080 プロキシサーバ

注意事項

いわゆる「やってみた」系の記事ですので、無保証、無サポートです。

  • ここで構築する環境は動作が保証されたものではありません。

    あくまでお試し程度に「使ってみる」ことを目的とした環境を構築します。
  • フリーソフトや評価版を使うので、メーカーサポートはありません。

    自己解決できない場合は、本記事のコメント欄でご相談ください。

    解決できるかどうかはわかりませんが…

インストールの準備

まずはメディアをご用意ください。

  • CentOS インストールメディアのダウンロード

    minimalがインストールできればよいです。
  • ACMS Apexインストールメディアのダウンロード

    DAL社サイトのお問い合わせページから、評価版をご希望の旨、お伝えください。

    また、その際ノード数を4(またはそれ以上の必要な数)とご指定ください。

    折り返し、ダウンロードサイトのURLをお知らせします。

    (お問い合わせ内容欄に、本記事を見たとご記入いただけると非常に助かります。)

構築手順

淡々と手順を説明していきます。

仮想マシンを作成

私が作った仮想マシンの設定は次の通りです。

項目 設定値
メモリ 2048MB(動的メモリ有効 最小512MB 最大1048576MB メモリバッファー20%)
プロセッサ 1個の仮想プロセッサ
ハードドライブ 120GB(で作りましたが今のところ5GB弱くらいしか使っていません)
ネットワークアダプター WinNAT

OSインストール

仮想マシンにCentOS7をインストールします。
詳細な手順はいろんなところで説明されているので、そちらを参照してください。
ポイントは次の通り。

  • minimal(最小限のインストール)でインストール
  • 日本語を選ぶところ以外はデフォルトの設定

    インストール先は自動構成

    あまり影響はないと思いますが、kdumpは無効にした
  • ルートパスワードは"acms"を設定(した前提で説明する)
  • ユーザは"acms"/"acms"(で作った前提で説明する)

    「このユーザーを管理者にする」にチェックを入れること

再起動後、最低限の初期設定をします。
Hyper-V マネージャーから仮想マシンに接続してacmsユーザでログインして、nmtuiコマンドを使って次の項目を設定。

sudo nmtui
項目 設定値
ホスト名 apex-01-mst
IPv4設定 <手作業>
アドレス 192.168.249.20/24
ゲートウェイ 192.168.249.1
DNSサーバー 10.20.30.200

10.20.30.201

IPv6 設定 <無視する>
この接続にはIPv4アドレス設定が有効になります [X]
自動的に接続する [X]
全ユーザーに使用可能 [X]

念のため、「接続をアクティベートする」で有効になっていることを確認します。
設定が反映されていること、SSHが動いていることを確認します。

ip a
ss -na | grep 22

コンソールからいったん抜けて、teratermを使ってacmsユーザでログインしなおします。

exit

hostsを編集。

sudo vi /etc/hosts
/etc/hosts
<最後に追加>
192.168.249.20 apex-01-mst
192.168.249.21 apex-01-alt
192.168.249.22 apex-01-s01
192.168.249.23 apex-01-s02

proxyサーバを設定

vi ~/.bash_profile
~/.bash_profile
<最後に追加>
export http_proxy=proxy.aaa.bbb:8080
export https_proxy=proxy.aaa.bbb:8080
export HTTP_PROXY=proxy.aaa.bbb:8080
export HTTPS_PROXY=proxy.aaa.bbb:8080

yumのproxyサーバも設定。

sudo vi /etc/yum.conf
/etc/yum.conf
<最後に追加>
proxy=http://proxy.aaa.bbb:8080

NTPはCentOS7標準のchronyを使います。
デフォルトのNTPサーバを全部無効にして母艦に合わせるように設定します。

rpm -qa | grep chrony
systemctl status chronyd
sudo cp -p /etc/chrony.conf /etc/chrony.conf.org
sudo vi /etc/chrony.conf
/etc/chrony.conf
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
server 192.168.249.1 iburst
sudo systemctl restart chronyd
chronyc sources
date

これから使う予定のポートに対して、ファイヤーウォールに穴をあけておきます。

sudo firewall-cmd --zone=public --add-port=2011/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2013/tcp --permanent
sudo firewall-cmd --zone=public --add-port=9999/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

ここらで一度再起動しておきます。

sudo shutdown -r now

改めてteratermを使ってacmsユーザでログインします。
コンポーネントのアップデートと追加パッケージのインストールをします。

sudo yum -y update
sudo yum -y install unzip
sudo yum -y install open-vm-tools

念のためもう一度再起動しておきます。

sudo shutdown -r now

teratermを使ってacmsユーザでログインします。

MySQLをインストール

標準でインストールされているmariadbを削除し、mysqlのリポジトリからインストールします。

sudo yum -y remove mariadb-libs
su -
export http_proxy=proxy.aaa.bbb:8080
export https_proxy=proxy.aaa.bbb:8080
export HTTP_PROXY=proxy.aaa.bbb:8080
export HTTPS_PROXY=proxy.aaa.bbb:8080
rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
exit
sudo yum -y install --enablerepo=mysql57-community mysql-community-server mysql-connector-java
sudo systemctl start mysqld.service
sudo systemctl status mysqld.service
sudo grep 'temporary password' /var/log/mysqld.log
sudo mysql_secure_installation

rootのパスワードはお好きにどうぞ。(ここではaA1!bB2cC3#dD4を指定しました。)
また、mysql_secure_installationの設定もご自由に。

sudo vi /etc/my.cnf
/etc/my.cnf
<最後に追加>
default-storage-engine=InnoDB
character-set-server=utf8
transaction-isolation=READ-COMMITTED
default_password_lifetime = 0

[mysql]
default-character-set=utf8

[client]
default-character-set=utf8
sudo systemctl restart mysqld.service

ACMS Apexをインストール

ACMSデータベースを作成します。

mysql -u root -p
CREATE DATABASE apex_db CHARACTER SET utf8;
USE apex_db;
GRANT ALL PRIVILEGES ON apex_db.* To acms@"%" IDENTIFIED BY "aA1!bB2cC3#dD4";
GRANT ALL PRIVILEGES ON apex_db.* To acms@localhost IDENTIFIED BY "aA1!bB2cC3#dD4";
FLUSH PRIVILEGES;
exit

ACMSのメディアからapex.zipを探し出して、teratermのSCP等でを~acmsにコピーしておきます。
モジュールを展開します。

mkdir apex
cd apex
unzip ../apex.zip

JDBCドライバを所定の場所にコピーします。

cp /usr/share/java/mysql-connector-java.jar bin/Common

設定ファイルをコピーし、編集します。

cp system.properties.org system.properties
cp local.properties.org local.properties
cp holidays.properties.org holidays.properties
cp apex.sh.org apex.sh
vi system.properties
system.properties
masterNodeName=apex-01-mst
dispatcher.master.pingTargetName=192.168.249.1

pse.storage_type=MYSQL
pse.storage_url=jdbc:mysql://localhost:3306/apex_db?useSSL=false

pse.storage_user=acms
pse.storage_password=aA1!bB2cC3#dD4

pse.encrypt_id=1234567890

DB自動構築と合わせて画面がつながることを確認しておきましょう。

./apex.sh Boot -construct
正常終了しました。

母艦のブラウザで下記のURLを開く
http://192.168.249.20:8080/login.html
※接続できるようになるまで数分かかるかもしれません。

次の値を入力して[ログイン]をクリック

項目
テナント (入力しない)
オペレーターID administrator
パスワード admin123

ログインできることが確認できたらブラウザを閉じ、いったん止めます。

./apex.sh Shutdown -oi administrator -pwd admin123
正常終了しました。

初期設定と動作確認

この後、次のような操作でテスト用の設定と動作確認を行います。
手順と設定値のみ掲載します。それぞれの設定内容はマニュアル等で調べてください。

Apexを起動

cd ~/apex
./apex.sh Boot
正常終了しました。

管理画面にログイン

母艦のブラウザで下記のURLを開く
http://192.168.249.20:8080/login.html

項目
テナント (入力しない)
オペレーターID administrator
パスワード admin123

マスターノードを登録する

[▼マスター] - [▼システム] - [ノード]
[新規作成]

項目
ノード名 apex-01-mst
注釈 マスターノード
□ 指定しない

[保存]
[OK]

データストアを作る

cd ~
mkdir -p datastore/default

[▼マスター] - [▼システム] - [データストア]
[新規作成]

項目
データストア名 DFS_DEFAULT
ノード名 apex-01-mst
ディレクトリ /home/acms/datastore/default
デフォルトストア ■ デフォルトストアとする
暗号化 ■ 暗号化する
注釈 ■ 指定しない

[保存]
[OK]

業務グループを作成する

[▼マスター] - [▼システム] - [業務グループ]
[新規作成]

項目
業務グループ WG_TEST
アプリケーションポートグループ (デフォルト値なし)
データストア名 DFS_DEFAULT
運用日切り替え (00:00)
完了保存日数 (7)
未完了保存日数 (7)
注釈 ■ 指定しない

[保存]
[OK]
[アクション▼] - [開始]

オペレーターグループを作成する

[▼マスター] - [▼システム] - [オペレーターグループ]
[新規作成]

項目
オペレーターグループ OPG_TEST
注釈 ■ 指定しない
システム運用権限 アドミニストレーター
マスク内容閲覧 ■
データダウンロード ■
セキュリティ情報閲覧 ■

[▼業務グループ運用権限]
[新規作成]

項目
業務グループ WG_TEST
業務グループ運用権限 アドミニストレーター
マスク内容閲覧 ■
データダウンロード ■

[OK]

[▼パスワードセキュリティポリシー]

項目
パスワード有効期間(日) ■指定しない
パスワード変更通知期間(日) ■指定しない

[保存]
[OK]

オペレーターを作成する

[▼マスター] - [▼システム] - [オペレーター]
[新規作成]

項目
オペレーターグループ OPG_TEST
オペレーターID OP_TEST
オペレーター名称 ■ 指定しない
注釈 ■ 指定しない
オペレーター/テンプレート管理 権限なし
権限 オペレーター自身に設定
システム運用権限 アドミニストレーター
マスク内容閲覧 ■
データダウンロード ■
セキュリティ情報閲覧 ■

[▼業務グループ運用権限]
WG_TEST [詳細]

項目
業務グループ運用権限 アドミニストレーター
マスク内容閲覧 ■
データダウンロード ■

[OK]
[保存]
[OK]

新しく作ったオペレータでログインしなおす

[▼マスター] - [▼システム] - [オペレーター]
OPG_TESTの行の右にある「アクション▼」から「仮パスワード発行」を選択
[OK]
発行された仮パスワードをメモする
[OK]

[ログアウト]

項目
テナント (入力しない)
オペレーターID OP_TEST
パスワード <仮パスワード>

<新しいパスワード>には好きな文字列を設定してください。

項目
テナント (入力しない)
オペレーターID OP_TEST
現在のパスワード <仮パスワード>
新しいパスワード <新しいパスワード>
新しいパスワード(確認) <新しいパスワード>

[パスワード変更]

アプリケーションポートグループを作成する

[▼マスター] - [▼アプリケーション] - [アプリケーションポートグループ]
[新規作成]

項目
業務グループ WG_TEST
アプリケーションポートグループ APG_TEST
貸出 しない
注釈 ■ 指定しない
デフォルトポートグループ □デフォルトポートグループにする

[保存]
[OK]

アプリケーションポートを作成する

[▼マスター] - [▼アプリケーション] - [アプリケーションポート]
[新規作成]

項目
アプリケーションポートグループ APG_TEST
アプリケーションポート名 1
ノード名 apex-01-mst

[保存]
[OK]
[アクション▼] - [開始]

ファイル配布を作成する

mkdir -p ~/sample_ap/bin

[▼マスター] - [▼システム] - [ファイル配布]
[新規作成]

項目
ファイル配布名 FD_SAMPLE
配布元のノード名 apex-01-mst
配布元のディレクトリ /home/acms/sample_ap/bin

[保存]
[OK]

サンプルスクリプトを作成する

vi ~/sample_ap/bin/sample.sh
chmod +x ~/sample_ap/bin/sample.sh
sample.sh
#!/bin/sh
# $1:入力ファイルのパス
# $2:結果ファイルのパス

# 出力ファイル(相対パス)
outfile=`mktemp -p .`

# 入力ファイルの行数を数える
lines=`wc -l $1 | cut -d " " -f 1`

# 出力ファイルを作る(入力ファイルから変更なし)
cat $1 > $outfile

# 結果ファイルを作成する
echo lines=$lines > $2
echo output_file=$outfile >> $2
echo section=end >> $2

# 終了
exit 0

スクリプトを配信する

[▼マスター] - [▼システム] - [ファイル配布]
FD_SAMPLEの行の右にある「アクション▼」から「同期」を選択
[実行中]ウィンドウが消えるのを待つ

アプリケーション(外部アプリ)を作成する

[▼マスター] - [▼アプリケーション] - [アプリケーション]
[新規作成]

項目
業務グループ WG_TEST
アプリケーション名 サンプルアプリ
アプリケーションタイプ 外部アプリ実行
貸出 しない
アプリケーションポートグループ APG_TEST
実行モジュールパス //FD_SAMPLE/sample.sh

外部アプリ入力パラメーター
[新規作成] ×2

パラメーター名 必須区分 パラメーター値 デフォルト値 オプション文字列 オプション文字列の出力条件 オプション文字列の連結
infile 必須 %input_file% 値があったらオプション文字列と値を出力 しない
resultfile 必須 %result_file% 値があったらオプション文字列と値を出力 しない

[保存]
[OK]
[アクション▼] - [開始]

外部アプリ実行フローを作成する

[▼マスター] - [▼アプリケーション] - [フロー]
[新規作成]

項目
業務グループ WG_TEST
フロー名 サンプルフロー
貸出 しない
アプリケーションポートグループ APG_TEST

フロー入力パラメーターには何も設定しない
[フローエディター]をクリック
画面右のパレットのドロップダウンリストで[アプリケーションジョブ]を選択
[外部アプリ実行]の上でマウスの左ボタンを押し、そのまま[START]の横のマスまで移動して離す
画面右のパレットのドロップダウンリストで[コントロールジョブ]を選択
[正常終了]の上でマウスの左ボタンを押し、そのまま[EXTERNAL_APL_E...]の横のマスまで移動して離す
[START]の右側の丸でマウスの左ボタンを押し、そのまま[EXTERNAL_APL_E...]の左側の丸まで移動して離す
[EXTERNAL_APL_E...]の右側の丸でマウスの左ボタンを押し、そのまま[NORMAL_END]の左側の丸まで移動して離す
[EXTERNAL_APL_E...]の文字をクリック

項目
フロー名 サンプルフロー
ジョブ名 サンプルジョブ
アプリケーション名 サンプルアプリ

(操作後のフロー図)
image.png

[OK]
[保存]
[OK]
[アクション▼] - [開始]

アプリケーションを実行する

母艦側でテスト用のファイルを用意する

sampledata.txt
1行目
2行目
3行目

[▼データ操作] - [ロード(フロー)]

項目
業務グループ WG_TEST
フロー名 サンプルフロー
データファイル [ファイル選択]をクリックしてsampledata.txt
パラメーター (空白)
予約登録 □する(チェックしない)
処理予定日時 (空白)
強制登録 □する(チェックしない)

[実行]

実行結果を確認する

[▼状況] - [トップフロー]

登録日時 簡易遷移状況 トップフロータスク状態
(時刻) :load=>:サンプルフロー 完了

[▼状況] - [タスク]

登録日時 業務グループ ターゲットのID ターゲットのID ターゲットのID ターゲットのID
(時刻) WG_TEST サンプルアプリ 完了
(時刻) WG_TEST サンプルフロー 完了
(時刻) WG_TEST load 完了

サンプルアプリの右の[詳細]をクリック
[▶実行結果]をクリック
出力パラメータを確認

キー
lines 3

Apexを停止

[ログアウト]

./apex.sh Shutdown -oi administrator -pwd admin123
正常終了しました。

お疲れさまでした。以上で環境構築と動作確認は終了です。
最後まで読んでいただき、ありがとうございました。

  1. 次のURLを参考にするとNAT機能を設定できます。
    Tech TIPS:Windows 10/Windows Server 2016のHyper-VでNAT(ネットワークアドレス変換)機能を利用する

  2. 必須ではありませんが、次のURLのような設定がなされていることを前提に、NTPクライアントで母艦と時刻を同期する設定手順を入れてます。
    Windows 10 をNTPサーバにする手順

5
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7