すべてのプロダクト
Search
ドキュメントセンター

Enterprise Distributed Application Service:ECS アプリケーションの JDK バージョンの固定

最終更新日:Mar 12, 2026

Enterprise Distributed Application Service (EDAS) アプリケーションがスケールアウトする際、新しく作成された Elastic Compute Service (ECS) インスタンスが既存のインスタンスとは異なる Java 開発キット (JDK) バージョンを取得することがあります。この不一致は、ビジネスコードで実行時エラーを引き起こす原因となります。

これを防ぐには、特定の JDK バージョンを固定する起動前マウントスクリプトを追加します。一度設定すれば、既存のインスタンスも新しくスケールアウトされたインスタンスも、すべて同じ JDK を実行するようになります。

JDK バージョンのずれが発生する理由

EDAS は、クラスターにインポートされた各 ECS インスタンスに最新の OpenJDK をインストールします。時間が経つにつれて、「最新」のバージョンは変化します。数ヶ月前に作成されたインスタンスは古い JDK を実行し続けますが、スケールアウト時に追加されたインスタンスは現在のバージョンを取得します。

起動前マウントスクリプトは、アプリケーションが開始する前に、指定した正確な JDK バージョンをダウンロードしてインストールすることで、この問題を解決します。このスクリプトはインスタンスの起動ごとに実行されるため、すべてのインスタンスが同じバージョンに収束します。

注:特定のバージョン (例:8u202) に固定すると、インスタンスは JDK の自動更新を受け取らなくなります。セキュリティパッチを適用するために、定期的な手動更新を計画してください。

起動前スクリプト

以下のスクリプトは、ターゲットの JDK がすでにインストールされているかどうかを確認します。インストールされていない場合、内部の Object Storage Service (OSS) URL からパッケージをダウンロードし、展開して、ファイル権限を設定します。

JDK_DOWNLOAD_URL="http://doctest.oss-cn-hangzhou-internal.aliyuncs.com/tmp/oracle-jdk-8u202-linux-x64.tar.gz"
JDK_DOWNLOAD_TMP_FILE="/tmp/oracle-jdk-8u202.tar.gz"
JDK_HOME="/opt/edas/jdk"
JAVA_HOME="${JDK_HOME}/java"

if [ ! -f "${JAVA_HOME}/bin/java" ]; then
   rm -rf ${JAVA_HOME} && mkdir -p ${JDK_HOME}
   wget -q --dns-timeout=2 --connect-timeout=3 --read-timeout=30 ${JDK_DOWNLOAD_URL} -O ${JDK_DOWNLOAD_TMP_FILE}
   [ -f "${JDK_DOWNLOAD_TMP_FILE}" ] && tar zxf ${JDK_DOWNLOAD_TMP_FILE} -C ${JDK_HOME} && rm -f ${JDK_DOWNLOAD_TMP_FILE}
   [ -n "$(ls -ld ${JDK_HOME}/jdk* 2>/dev/null)" ] && mv ${JDK_HOME}/jdk* ${JAVA_HOME}
fi

chmod -R 755 ${JAVA_HOME}

JDK_DOWNLOAD_URL の値を、ご利用の JDK パッケージの内部 OSS URL に置き換えてください。以下のセクションでは、URL の準備方法と EDAS コンソールへのスクリプトの追加方法について説明します。

変数説明
JDK_DOWNLOAD_URLJDK パッケージの内部 OSS ダウンロード URL
JDK_DOWNLOAD_TMP_FILEダウンロードしたアーカイブのための一時的なローカルパス
JDK_HOMEJDK インストール先の親ディレクトリ (/opt/edas/jdk)
JAVA_HOMEEDAS が使用する最終的な JDK パス (/opt/edas/jdk/java)

前提条件

開始する前に、以下が揃っていることを確認してください:

  • 特定の JDK バージョンに固定したい EDAS ECS アプリケーション

  • ローカルマシンにダウンロードされた JDK パッケージ (例:oracle-jdk-8u202-linux-x64.tar.gz)

  • ECS インスタンスと同じリージョンにある OSS バケット

ステップ 1:JDK パッケージの OSS へのアップロード

  1. ECS インスタンスと同じリージョンにある OSS バケットに JDK パッケージをアップロードします。詳細については、「オブジェクトのアップロード」をご参照ください。

  2. アップロードしたパッケージのダウンロード URL を取得します。詳細については、「オブジェクトの共有」をご参照ください。

  3. ECS インスタンスが内部ネットワーク経由でパッケージをダウンロードできるように、URL のホスト名に -internal を挿入します。例:

    http://doctest.oss-cn-hangzhou-internal.aliyuncs.com/tmp/oracle-jdk-8u202-linux-x64.tar.gz

    内部エンドポイントを使用すると、パブリック帯域幅の料金を回避でき、より高速です。

ステップ 2:EDAS コンソールへのスクリプトの追加

  1. EDAS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで [アプリケーション] をクリックします。上部のナビゲーションバーで、リージョンを選択します。[アプリケーション] ページの上部で、ECS アプリケーションが属するマイクロサービス名前空間を選択します。

  3. 対象の ECS アプリケーションの名前をクリックします。

  4. [基本情報] タブの [アプリケーション設定] セクションで、[マウントスクリプト] をクリックします。

  5. [マウントスクリプト] ダイアログボックスで、[起動前スクリプト] セクションに移動します:

    • JDK のインストールが失敗した場合にアプリケーションが起動しないように、[失敗を無視] をオフにします。

    • 「起動前スクリプト」セクションのスクリプトを貼り付けます。JDK_DOWNLOAD_URL の値を、ステップ 1 で取得した内部 OSS URL に置き換えます。

  6. [変更] をクリックします。

Configure the pre-launch script

ステップ 3:JDK バージョンの確認

  1. ECS アプリケーションを再起動して、マウントスクリプトを適用します。

  2. アプリケーションの再起動後、EDAS コンソールに表示される JDK バージョンを確認します。

    View the JDK version in the EDAS console

  3. (任意) ECS インスタンスにログインし、java -version を実行して、インストールされたバージョンがターゲットバージョンと一致することを確認します。

OpenJDK および代替 JDK ベンダー

  • fontconfig を使用する OpenJDK:特定のバージョンの OpenJDK を使用する場合、JDK のインストールコマンドの前に、起動前スクリプトに yum install -y fontconfig を追加します。fontconfig ライブラリは、特定の Java アプリケーションでのフォントレンダリングに必要です。

  • JDK 11 または他のベンダー:JDK 11 または他のベンダーの JDK ディストリビューションを使用するには、マウントスクリプトを構成して、JDK を /opt/edas/jdk/java または /opt/ali/alijdk のいずれかにインストールします。