クラウドでの運用開始手順について説明します。
AWSを使用する場合、「8.3.2.1 AWSでの運用開始手順」を参照してください。Azureを使用する場合、「8.3.2.2 Azureでの運用開始手順」を参照してください。
AWSでの運用開始手順について以下に示します。
オブジェクトストレージの作成
Amazon S3を使用します。使用用途は以下の通りです。
ログの退避先(スケールイン用)
退避するログ情報については、「8.2.3 ログ情報」を参照してください。
オートスケーリングスクリプトの格納先
Amazon S3を使用するために、AWS Management Console画面の「Amazon S3」-「バケット」から、ログ退避用、オートスケーリングスクリプト格納用の2つのバケットを作成します。
詳細な設定はAWSの公式ドキュメントを参照してください。
ポイント
Auto Scaling グループがプライベートサブネットに属する場合は、プライベートサブネットの「ルートテーブル」にAmazon S3に接続するためのVPCエンドポイントを設定します。
VPCエンドポイントについては、AWSの公式ドキュメントを参照してください。
オートスケーリングスクリプトの作成
以下のスクリプトを作成します。詳細は、「8.2 オートスケーリングスクリプト」を参照してください。
オートスケーリングスクリプト
スケールアウト時の処理、スケールイン時の処理を記載したスクリプトです。
作成したオートスケーリングスクリプトは、「オブジェクトストレージの作成」で作成したAmazon S3のバケットに格納してください。
オートスケールで使用する仮想サーバー(VM)イメージの作成 (スケールアウト用)
Amazon マシンイメージ(AMI)の作成手順を以下に示します。平常/ピークのシステム処理量を設計したうえで作成してください。
機能のインストール、セットアップ
以下をインストールします。
GlassFish 5
Webサーバ(Interstage HTTP Server 2.4)
Webサーバコネクタ(Interstage HTTP Server 2.4用)
IP・ホスト一括変更ツール(ismodifyhostinfo)を実行するため、インストールした機能の自動起動を無効にします。
PCMIサービス
「4.2.5 サービスの自動起動/自動停止」を参照してください。
DAS
「4.3.6 サービスの自動起動/自動停止」を参照してください。
Webサーバ(Interstage HTTP Server 2.4)
「Interstage HTTP Server 2.4 運用ガイド」の「運用・保守」-「起動・停止」-「自動起動の設定」を参照してください。
Jakarta EEアプリケーションを運用するための設定、チューニングを行います。
GlassFish Serverクラスター、GlassFish Serverインスタンスの作成
Jakarta EEアプリケーションの配備
チューニング
ファイアウォールを停止・無効にします。
ファイアウォールが無効になっていることを確認してください。
UpdateAdvisorのインストール(必要な場合)
UpdateAdvisorの利用許諾への同意を行ってください。UpdateAdvisorをインストール後、初めてuamコマンドを実行したときに表示されます。
AWS コマンドラインインターフェイス(AWS CLI)のインストール
AWS CLIをインストールします。インストールの詳細はAWSの公式ドキュメントを参照してください。
VMの一般化
VMイメージ作成の前に複写元のVMから固有情報(ファイルとデータ)を削除して一般化します。
VMの一般化の詳細は、AWSの公式ドキュメントを参照してください。
VMのイメージ作成
VMのイメージを作成します。
VMのイメージ作成方法の詳細は、AWSの公式ドキュメントを参照してください。
オートスケールの設定とロードバランサーの作成
オートスケールの設定のポイントを以下に示します。手順の詳細は、AWSの公式ドキュメントを参照してください。
起動テンプレートの作成
起動テンプレート作成時のポイントは以下です。
「アプリケーションおよび OS イメージ (Amazon マシンイメージ)」の「自分のAMI」から「オートスケールで使用する仮想サーバー(VM)イメージの作成 (スケールアウト用)」で作成したイメージを指定します。
「高度な詳細」の「IAM インスタンスプロフィール」に以下の権限を持つロールを設定します。
Amazon S3の操作権限
Amazon S3にログを退避するために必要です。
AWS コマンドラインインターフェイス(AWS CLI)のcomplete-lifecycle-action コマンドの実行権限
ライフサイクルアクション完了通知をAmazon EC2 Auto Scalingに行うために必要です。
「高度な詳細」の「ユーザーデータ」にオートスケーリングスクリプトを実行するための以下の処理を登録します。オートスケーリングスクリプトはAmazon S3から取得します。
オートスケーリングスクリプトをAmazon S3からVMへコピー
VM上のオートスケーリングスクリプトの実行
記述例を以下に示します。
例
<powershell> aws s3 cp s3://aps-bucket/UserScript.ps1 "C:\Script\UserScript.ps1" Start-Process powershell.exe -ArgumentList "-file C:\Script\UserScript.ps1" -WindowStyle Hidden </powershell>
#!/bin/bash aws s3 cp s3://aps-bucket/userdata.sh /root/userdata.sh bash /root/userdata.sh
Auto Scaling グループの作成
Auto Scaling グループ作成時のポイントは以下です。
「起動テンプレート」に上記で作成した起動テンプレートを指定します。
その他の設定は用途に応じて選択してください。
ライフサイクルフックの作成
上記で作成したAuto Scaling グループの「インスタンス管理」からライフサイクルフックを追加します。
ライフサイクルフックは、スケールアウト用とスケールイン用の2つを作成します。
ライフサイクルフック作成時のポイントは以下です。
スケールアウト用に以下を設定します。
「ライフサイクル移行」に「インスタンス起動」を設定
「ハートビートタイムアウト」に7200秒(最大値)を設定
オートスケーリングスクリプトのスケールアウト時の処理完了に十分な時間を設定します。
「デフォルトの結果」に「CONTINUE」を設定
ライフサイクルアクション完了通知がない(スケールアウト時のスクリプトの処理に異常がある)場合でも、ハートビートタイムアウト後に仮想サーバー(VM)は実行中(「InService」に移行)になります。
スケールイン用に以下を設定します。
「ライフサイクル移行」に「インスタンス終了」を設定
「ハートビートタイムアウト」に7200秒(最大値)を設定
オートスケーリングスクリプトのスケールイン時の処理完了に十分な時間を設定します。
「デフォルトの結果」に「CONTINUE」を設定
ライフサイクルアクション完了通知がない(スケールイン時のスクリプトの処理に異常がある)場合でも、ハートビートタイムアウト後に仮想サーバー(VM)は削除(「Terminated」に移行)されます。
ロードバランサーの作成のポイントを以下に示します。作成手順の詳細は、AWSの公式ドキュメントを参照してください。
ターゲットグループの作成
ターゲットグループ作成時のポイントは以下です。
Application Load Balancerを使用する場合は、「Protocol」に「HTTP」、または「HTTPS」を指定します。
Network Load Balancerを使用する場合は、「Protocol」に「TCP」を指定します。
「Health checks」を設定します。
GlassFish Serverクラスター、Webサーバーが異常(停止)の場合に、仮想サーバー(VM)がロードバランサーの振り分け先(リクエストの振り分け先)に追加されないように、WebサーバーやJakarta EEアプリケーションの生存監視をしてください。
Application Load Balancerの作成
Application Load Balancer作成時のポイントは以下です。
「Listener」の「Default action」に上記で作成したターゲットグループを指定します。
Network Load Balancerの作成
Network Load Balancer作成時のポイントは以下です。
「Listener」の「Default action」に上記で作成したターゲットグループを指定します。
Azureでの運用開始手順について以下に示します。
オブジェクトストレージの作成
Azure Blob Storageを使用します。使用用途は以下の通りです。
ログの退避先(スケールイン用)
退避するログ情報については、「8.2.3 ログ情報」を参照してください。
オートスケーリングスクリプトの格納先
スケールアウトスクリプトを格納します。
Azure Blob Storageの作成手順を以下に示します。詳細な設定はAzureの公式ドキュメントを参照してください。
ストレージアカウントの作成
作成時の設定は以下です。
BLOBパブリックアクセスを無効にする
アクセス許可のあるユーザー以外はコンテナーへアクセスできなくなります。
ネットワークアクセス: すべてのネットワークからのパブリックアクセスを有効にする
Microsoft Azure portal画面からコンテナーにファイルをアップロードできるようになります。
その他の設定は用途に応じて選択してください。
コンテナー(格納先)の作成
ログ退避用、オートスケーリングスクリプト格納用の2つのコンテナーを作成します。
Microsoft Azure portal画面の「ストレージアカウント」-「データストレージ」-「コンテナー」からコンテナーを作成します。
Shared Access Signature(SAS)トークンの作成
SASトークンを使用するとコンテナーへアクセスが可能になります。
Microsoft Azure portal画面の「ストレージアカウント」-「セキュリティとネットワーク」-「Shared Access Signature」から作成します。
作成時の設定は以下です。
使用できるリソースの種類: オブジェクト
その他の設定は用途に応じて選択してください。
オートスケーリングスクリプトの作成
以下の2つのスクリプトを作成します。詳細は、「8.2 オートスケーリングスクリプト」を参照してください。
スケールアウトスクリプト
スケールアウト時の処理を記載したスクリプトです。
スケールインスクリプト
スケールイン時の処理を記載したスクリプトです。
オートスケールで使用する仮想サーバー(VM)イメージの作成 (スケールアウト用)
VMのイメージの作成手順を以下に示します。平常/ピークのシステム処理量を設計したうえで作成してください。
機能のインストール、セットアップ
以下をインストールします。
GlassFish 5
Webサーバ(Interstage HTTP Server 2.4)
Webサーバコネクタ(Interstage HTTP Server 2.4用)
IP・ホスト一括変更ツール(ismodifyhostinfo)を実行するため、インストールした機能の自動起動を無効にします。
PCMIサービス
「4.2.5 サービスの自動起動/自動停止」を参照してください。
DAS
「4.3.6 サービスの自動起動/自動停止」を参照してください。
Webサーバ(Interstage HTTP Server 2.4)
「Interstage HTTP Server 2.4 運用ガイド」の「運用・保守」-「起動・停止」-「自動起動の設定」を参照してください。
Jakarta EEアプリケーションを運用するための設定、チューニングを行います。
GlassFish Serverクラスター、GlassFish Serverインスタンスの作成
Jakarta EEアプリケーションの配備
チューニング
ファイアウォールを停止・無効にします。
ファイアウォールが無効になっていることを確認してください。
スケールインスクリプトの格納
スケールインスクリプトを任意の場所に格納します。
UpdateAdvisorのインストール(必要な場合)
UpdateAdvisorの利用許諾への同意を行ってください。UpdateAdvisorをインストール後、初めてuamコマンドを実行したときに表示されます。
AzCopyのインストール
AzCopyをインストールし、任意の場所に格納します。スケールインスクリプトで使用します。
jqコマンドのインストール
jqコマンドをインストールし、任意の場所に格納します。スケールインスクリプトで使用します。
スケールインスクリプトの設定
タスクスケジューラの設定
以下の手順を実施し、タスクスケジューラの設定を行います。
スケールインスクリプトを実行するための推奨の設定について示します。設定方法の詳細はOSのドキュメントを参照してください。
「タスクの作成」をクリックします。
「全般」タブを設定します。
名前
任意の名前を入力します。
「セキュリティ オプション」に以下を設定します。
タスクの実行時に使うユーザー アカウント
スケールインスクリプトを実行するOSのユーザーアカウント名(管理者アカウント)を指定します。
「ユーザーがログオンしているかどうかにかかわらず実行する」を選択します。
「最上位の特権で実行する」にチェックを入れます。
図8.1 「全般」タブの設定 (Windows Server 2022の画面例)
「トリガー」タブを設定します。
「新規」から以下を設定したトリガーを作成します。
タスクの開始
「スタートアップ時」を指定します。
「詳細設定」に以下を設定します。
遅延時間を指定する
「1分間」を指定します。
「有効」にチェックを入れます。
図8.2 「トリガー」タブの設定 (Windows Server 2022の画面例)
「操作」タブを設定します。
「新規」から以下を設定した操作を作成します。
操作
「プログラムの開始」を選択します。
プログラム/スクリプト
powershell.exeを絶対パスで指定します。
例.C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
引数の追加
「-ExecutionPolicy Bypass -file "<スケールインスクリプトの絶対パス>"」を指定します。
例.-ExecutionPolicy Bypass -file "C:\Tools\scale_in.ps1"
図8.3 「操作」タブの設定 (Windows Server 2022の画面例)
「条件」タブを設定します。
すべてのチェックボックスのチェックを外します。
図8.4 「条件」タブの設定 (Windows Server 2022の画面例)
「設定」タブを設定します。
「タスクを要求時に実行する」にチェックを入れます。
「スケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する」にチェックを入れます。
「タスクが失敗した場合の再起動の間隔」に「1分間」を指定します。
「再起動試行の最大数」に最大数(999)を指定します。
「タスクを停止するまでの時間」に任意の値を設定します。
「要求時に実行中のタスクが終了しない場合、タスクを強制的に停止する」にチェックを入れます。
図8.5 「設定」タブの設定 (Windows Server 2022の画面例)
cronの設定
以下の手順を実施し、cronの設定を行います。
スケールインスクリプトを実行するための推奨の設定について示します。設定方法の詳細はOSのドキュメントを参照してください。
OSのシステム管理者にユーザーを切り替えます。
$ sudo su -
crontabコマンドの-eオプションを実行します。
# crontab -e
スケールインスクリプトを登録します。
@reboot bash /root/scale_in.sh
スケールインスクリプトの格納先を指定してください。
crontabコマンドの-lオプションを実行し、スケールインスクリプトが登録されていることを確認します。
# crontab -l @reboot bash /root/scale_in.sh
VMの一般化
VMイメージ作成の前に複写元のVMから固有情報(ファイルとデータ)を削除して一般化します。
VMの一般化の詳細は、Azureの公式ドキュメントを参照してください。
VMのイメージ作成
VMのイメージを作成します。
VMのイメージ作成方法の詳細は、Azureの公式ドキュメントを参照してください。
オートスケールの設定とロードバランサーの作成
オートスケールの設定のポイントを以下に示します。手順の詳細は、Azureの公式ドキュメントを参照してください。
Azure Virtual Machine Scale Sets(VMSS)の作成
VMSS作成時のポイントは以下です。
「マイ イメージ」から「オートスケールで使用する仮想サーバー(VM)イメージの作成 (スケールアウト用)」で作成したイメージを指定します。
「初期インスタンス数」に「0」を指定します。
「インスタンスの終了通知を有効にする」にチェックを入れます。
有効化するとVM削除操作で「Terminate」イベントが生成されるようになります。
VM削除操作が開始されるとインスタンスメタデータサービス(IMDS)のScheduled Eventsを介して「Terminate」イベントが通知されます。(「http://169.254.169.254/metadata/scheduledevents?api-version=2021-07-01」との通信で取得されるEventTypeが「Terminate」となります。この通信先はインスタンスメタデータサービス(IMDS)と通信するための仮想パブリックIPアドレスです。)
「終了の遅延(分)」を15分(最大値)に設定します。
その他の設定は用途に応じて選択してください。
カスタムスクリプト拡張機能の追加
「Virtual Machines Scale Sets」から作成済みのVMSSを選択し、「拡張機能とアプリケーション」>「拡張機能」>「追加」からスケールアウトスクリプトを追加します。
カスタムスクリプト拡張機能追加時のポイントは以下です。
スケールアウトスクリプトはAzure Blob Storageから取得します。
「オートスケーリングスクリプトの作成」で作成したスケールアウトスクリプトを「オブジェクトストレージの作成」で作成したAzure Blob Storageのコンテナーに格納してください。
「拡張機能とアプリケーション」画面でAzure Blob Storageに格納したスケールアウトスクリプトを指定します。
「Custom Script Extension」を選択し、「Script file (Required)」にAzure Blob Storageに格納したスケールアウトスクリプトを指定してください。
「Custom Script For Linux」を選択し、「Script file」にAzure Blob Storageに格納したスケールアウトスクリプトを指定してください。さらに、「Command」に「bash <スケールアウトスクリプト(Bash)名>」を指定してください。
ロードバランサーの作成のポイントを以下に示します。作成手順の詳細は、Azureの公式ドキュメントを参照してください。
Azure Application Gatewayの作成
Azure Application Gateway作成時のポイントは以下です。
「バックエンド プール」に以下を指定します。
ターゲットの種類
VMSS
ターゲット
事前に作成したVMSS
Azure Application Gateway作成後に以下を行います。
VMSS内にインスタンスが存在する場合は、「アップグレード」が必要です。存在しない場合は不要です。
「正常性プローブ」を追加します。
VMSS内のインスタンス上で、GlassFish Serverクラスター、Webサーバーが異常(停止)の場合にロードバランサーの振り分け先(リクエストの振り分け先)に追加されないように、WebサーバーやJakarta EEアプリケーションの生存監視をしてください。
Azure Load Balancer
Azure Load Balancer作成時のポイントは以下です。
「バックエンド プール」>「バックエンド プールの追加」の「IP構成」に以下を指定します。
事前に作成したVMSS
「インバウンド規則」>「負荷分散規則」の「負荷分散規則の追加」から「正常性プローブ」を作成します。Webサーバーの生存監視ができるように、Webサーバーのポート番号を指定してください。