前提条件
- クラウド環境
- Oracle Cloudのアカウントを取得済みであること
- WebLogic Server for OCIのプロビジョニングを実施済みであること
- このハンズオンでは以後この環境を「移行元環境」と呼びます
ハンズオンの全体像
- 移行先環境で利用するデータベースのスキーマを作成
- 移行先環境となるWebLogic Server for OCIを移行元環境と同一サブネットに作成
- 移行元環境より移行ファイルを抽出
- 移行ファイルを編集
- 移行先環境に移行ファイルを適用
Note: 移行元/移行先のデータベースに関して
本ハンズオンでは、移行元と移行先で同一データベースを利用しますが、異なるスキーマを利用します。実際の移行では、接続先となるデータベースそのものが異なる場合が考えられます。
Note: ツールで移行可能なファイル
本ハンズオンで利用する移行ツールのWebLogic Deploy Toolingでは、アプリケーション/アプリケーションの構成 以外のファイルは移行できません。 そのため、アプリケーションが利用するファイル(例: データベースウォレット)などの移行は手作業で行う必要があります。
本ハンズオンでは、データベースにAutonomous Databaseを利用しているため、データベースウォレットの手動移行が必要になります。
1.移行先環境で利用するデータベースのスキーマを作成
Note: 移行元/移行先のデータベースに関して
この手順では、移行元と移行先で同一データベースのスキーマのみを変更しています。実際の移行では、接続先となるデータベースが異なる場合が考えられます。その場合、接続先のJDBC URLが異なる場合がございますので、ご注意ください
左上のハンバーガーメニューを展開して、「Oracle Database」から「Autonomous Transaction Processing」を選択します。
データベース・アクションをクリックします。
「ユーザー名」にADMIN
、「パスワード」にWelcome1234!
と入力します。※セッションの関係で、入力の必要がない場合があります。
「SQL」のパネルをクリックします。
以下のSQLをワークシートに貼り付け、F5を押下し全文を実行し、移行先環境が利用するスキーマを作成します。
-- USER SQL
CREATE USER "DEST" IDENTIFIED BY "Welcome1234!";
-- ADD ROLES
GRANT CONNECT TO DEST;
GRANT RESOURCE TO DEST;
ALTER USER DEST DEFAULT ROLE CONNECT,RESOURCE;
-- ENABLE REST
BEGIN
ORDS.ENABLE_SCHEMA(
p_enabled => TRUE,
p_schema => 'DEST',
p_url_mapping_type => 'BASE_PATH',
p_url_mapping_pattern => 'dest',
p_auto_rest_auth=> TRUE
);
commit;
END;
/
-- QUOTA
ALTER USER DEST QUOTA UNLIMITED ON DATA;
画面右上、「ADMIN」をクリックし、「サインアウト」をクリック
「サインイン」をクリックし、「ユーザー名」にDEST
と入力し、「次」をクリックします。
その後、「パスワード」にWelcome1234!
と入力し、DESTユーザーでログインします。
「SQL」のパネルをクリックします。
以下のSQLをワークシートに貼り付け、F5を押下し全文を実行。
CREATE TABLE "DEST"."TODO_HEAD"
(
"RID" NUMBER(10,0),
"STATUS" NUMBER(2,0),
"TITLE" VARCHAR2(100 BYTE),
"MEMO" VARCHAR2(1000 BYTE),
"IMPORTANCE" NUMBER(2,0),
"INCHARGE" NUMBER(10,0),
"CREATE_DATE" DATE,
"MODIFY_DATE" DATE
);
INSERT INTO "DEST"."TODO_HEAD"
(
"RID",
"STATUS",
"TITLE",
"MEMO",
"IMPORTANCE",
"INCHARGE",
"CREATE_DATE",
"MODIFY_DATE"
) VALUES (
0,
0,
'TODO TITLE',
'TODO MEMO',
0,
1000,
sysdate,
sysdate
);
2.移行先環境となるWebLogic Server for OCIを移行元環境と同一サブネットに作成
2.1. マーケットプレイスにてスタックを起動する
左上のハンバーガーメニューを展開して、「マーケットプレイス」から「すべてのアプリケーション」を選択します。
検索欄に「WebLogic Server Enterprise Edition UCM」と入力し、先頭に出てくるパネルをクリックします。
チェックボックスにチェックを入れ、「スタックの起動」をクリックします。
2.2. WebLogic Server for OCIをプロビジョニングする
Note: 特に記載のない部分に関してはデフォルトの値で構いません
名前に「handson_dest」と入力し、「次」をクリックします。
Resource Name Prefix に「dest」と入力します。
SSH Public Keyでは、事前準備で作成したSSH Keyを選択します。
Validated Secret for WebLogic Server Admin Passwordでは、事前準備で作成したSecret(wlsadmin)を選択します。
Existing Networkは「base-wls_handson」を選択し、Validated Existing Networkに「YES」と入力します。
Existing Subnet for WebLogic Serverは「base-wl-subnet」を選択します。
Existing Subnet for Bastion Hostは「base-bsubnet」を選択します。
Existing Subnet for Load Balancerは「base-lbpubst1」を選択します。
「次」をクリックし、「作成」をクリックします。
3.移行ファイルの抽出
WebLogic Deploy Tooling (WDT)を利用して、アプリケーションなどの移行ファイルを移行元環境より抽出します。
3.1. WDT をインストールする
コンソール右上、OCI Cloud ShellのアイコンをクリックしてOCI Cloud Shellを開きます。
WDTをダウンロードします。
wget https://github.com/oracle/weblogic-deploy-tooling/releases/download/release-2.3.2/weblogic-deploy.zip
WDTとSSH KeyをSCPで転送します。
scp -i <SSH Keyのパス> \
-o ProxyCommand='ssh -i <SSH Keyのパス> \
-W %h:%p opc@<base-bastion-instanceのパブリックIP>' \
~/weblogic-deploy.zip <SSH Key> opc@<base-wls-0のプライベートIP>:~/
以下コマンドを実行し、移行元のWebLogicインスタンス(base-wls-0)にSSHログインします。
ssh -i <SSH Keyのパス> \
-o ProxyCommand='ssh -i <SSH Keyのパス> \
-W %h:%p opc@<base-bastion-instanceのパブリックIP>' \
opc@<base-wls-0のプライベートIP>
rootユーザーにスイッチします。
sudo su -
WDTとSSH Keyをoracleユーザーが利用できるようにします。
mv /home/opc/weblogic-deploy.zip /home/oracle/
mv <SSH Key> /home/oracle/
chown oracle:oracle /home/oracle/weblogic-deploy.zip
chown oracle:oracle <SSH Key>
oracleユーザーにスイッチします。
sudo su - oracle
WDTをunzipします。
unzip weblogic-deploy.zip
WDTスクリプトの権限変更を行います。
chmod +x weblogic-deploy/bin/*.sh
3.2. 移行ファイルを抽出する
以下のdiscoverDomain
コマンドを利用して、移行ファイルの抽出を行います。
weblogic-deploy/bin/discoverDomain.sh \
-oracle_home $MW_HOME \
-domain_home $DOMAIN_HOME \
-archive_file ./source.zip \
-model_file ./source.yaml \
-variable_file source.properties \
4.移行ファイルの編集
Cloud Shell上のVimなど任意のテキストエディタで、移行ファイル(WDTモデルファイル)を編集します。
4.1. source.propertiesファイルの編集
source.properties
は、モデルファイル(source.yaml
)で利用する変数をまとめたファイルです。
JDBC.Handson.PasswordEncrypted
にWelcome1234!
JDBC.Handson.user.Value
はDEST
と入力します。
JDBC.Handson.PasswordEncrypted=Welcome1234!
JDBC.Handson.user.Value=DEST
4.2. source.yamlファイルの編集
source.yaml
は、WebLogicドメインをモデル化したファイルです。
domainInfo
フィールドとtopology
フィールドをすべて削除します。
resouces
フィールドとappDeployments
フィールドのみが残ります。
Handson
フィールド下のTarget
はbase_cluster
をdest_cluster
と変更します。
resources:
JDBCSystemResource:
Handson:
Target: dest_cluster #変更
TodoApp-0.0.1-SNAPSHOT
フィールド下のTarget
はbase_cluster
をdest_cluster
と変更します。
appDeployments:
Application:
TodoApp-0.0.1-SNAPSHOT:
SourcePath: wlsdeploy/applications/TodoApp-0.0.1-SNAPSHOT.war
ModuleType: war
Target: dest_cluster #変更
StagingMode: stage
をappDeployments
内のTarget: dest_cluster
の下に追加します。
appDeployments:
Application:
TodoApp-0.0.1-SNAPSHOT:
SourcePath: wlsdeploy/applications/TodoApp-0.0.1-SNAPSHOT.war
ModuleType: war
Target: dest_cluster
StagingMode: stage #追加
4.3. WDTモデルファイルを移行先管理サーバに転送する
WDT、移行ファイル、Walletを移行先のWebLogic Server for OCIのインスタンスにscpで転送します。
scp -i <SSH Key> weblogic-deploy.zip source.* \
Wallet_handsonDB.zip opc@<移行先インスタンスのPrivate IP>:~/
移行先のWebLogic Server for OCIのインスタンスにSSH接続します。
ssh -i [SSH Keyの名前] opc@[移行先インスタンスのPrivate IP]
WDT、移行ファイル、Walletの所有者を変更します。
sudo chown oracle:oracle *
ファイルすべてを移動します。
sudo mv * /home/oracle/
oracleユーザにスイッチします。
sudo su - oracle
Walletをunzip
します。
unzip -d handsondb Wallet_handsonDB.zip
WDTをunzip
します。
unzip weblogic-deploy.zip
WDTの権限変更を行います。
chmod +x weblogic-deploy/bin/*.sh
5.移行ファイルの適用
移行ファイルを移行先環境に適用し、移行が正常に行われることを確認します。
5.1. 移行ファイルを移行先環境に適用する
以下のコマンドを実行し、WebLogic Server for OCIにデプロイを行います。
weblogic-deploy/bin/updateDomain.sh \
-oracle_home $MW_HOME \
-domain_home $DOMAIN_HOME \
-model_file source.yaml \
-variable_file source.properties \
-archive_file source.zip \
-admin_url t3://$(hostname -i):9071
コマンドを実行すると、ユーザー名とパスワードを聞かれます。
それぞれweblogic
, wilcome1
と入力してください。
5.2. アプリケーションの動作確認を行う
<Load Balancer IP>
を移行先のものに置き換えて、アプリケーションにアクセスします。
https://<Load Balancer IP>/todo