このトピックでは、ECS アプリケーションの変更プロセス中に Java Development Kit (JDK) バージョンを修正する方法について説明します。この方法では、スケールアウト中にアプリケーション用に作成された新しい Elastic Compute Service (ECS) インスタンスは、アプリケーションの既存の ECS インスタンスと同じ JDK バージョンを使用します。
背景情報
デフォルトでは、EDAS の ECS クラスタにインポートされた ECS インスタンスには、OpenJDK の最新バージョンがインストールされています。ただし、アプリケーションの既存の ECS インスタンスでは、OpenJDK の最新バージョンが使用されていない場合があります。その結果、スケールアウト中にアプリケーション用に作成された新しい ECS インスタンスは、アプリケーションの既存の ECS インスタンスとは異なる JDK バージョンを使用する可能性があります。これにより、ビジネスコードの実行中に例外が発生します。
このような例外を防ぐために、ECS アプリケーションの変更中に JDK バージョンを修正できます。マウントスクリプトの起動前スクリプトに実行するコードスニペットを追加できます。コードスニペットでは、指定したバージョンの JDK のダウンロード URL を指定できます。この方法では、スケールアウトや再起動などのアプリケーションの変更中に、アプリケーションの ECS インスタンスの JDK バージョンは変更されません。
手順
指定したバージョンの JDK のダウンロード URL を取得します。
oracle-jdk-8u202-linux-x64.tar.gz などの指定したバージョンの JDK パッケージをオンプレミスのコンピュータにダウンロードします。
JDK パッケージを、ECS アプリケーションの ECS インスタンスと同じリージョンにある Object Storage Service (OSS) バケットにアップロードします。詳細については、オブジェクトのアップロード をご参照ください。
JDK パッケージのダウンロード URL を取得し、ダウンロード URL に -internal を追加します。ダウンロード URL の取得方法の詳細については、オブジェクトの共有 をご参照ください。
たとえば、oracle-jdk-8u202-linux-x64.tar.gz のダウンロード URL は http://doctest.oss-cn-hangzhou-internal.aliyuncs.com/tmp/oracle-jdk-8u202-linux-x64.tar.gz です。
JDK パッケージのダウンロード URL をコードスニペットに追加します。
次のコードスニペットの JDK_DOWNLOAD_URL 変数を JDK パッケージのダウンロード 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}上記のコードスニペットを ECS アプリケーションの起動前スクリプトに追加します。
EDAS コンソール にログインします。
左側のナビゲーションペインで、[アプリケーション] をクリックします。トップナビゲーションバーで、アプリケーションが存在するリージョンを選択します。[アプリケーション] ページの上部で、ECS アプリケーションが存在する マイクロサービス名前空間 を選択します。次に、ECS アプリケーションを見つけて、ECS アプリケーションの名前をクリックします。
アプリケーション設定[基本情報] タブの マウント スクリプト セクションで、 をクリックします。
[マウントスクリプト] ダイアログボックスの起動前スクリプトセクションで、[失敗を無視] をオフにし、手順 2 で準備したコードスニペットを追加して、[変更] をクリックします。

ECS アプリケーションを再起動します。ECS アプリケーションの JDK バージョンが指定したものと同じであることを確認します。
説明ECS アプリケーションの再起動後、アプリケーションの ECS インスタンスにログインして、JDK バージョンが指定したものと同じであることを確認することもできます。
追加情報
指定したバージョンの OpenJDK を使用する場合は、fontconfig ライブラリをインストールするためのコマンド yum install -y fontconfig を起動前スクリプトのコードスニペットに追加します。
ECS アプリケーションで JDK 11 または別のベンダーの指定したバージョンの JDK を使用する必要がある場合は、マウントスクリプトを構成して、指定したバージョンの JDK を /opt/edas/jdk/java ディレクトリまたは /opt/ali/alijdk ディレクトリにインストールすることもできます。これは、JDK バージョンを修正する別の方法です。