本文介绍如何固定ECS应用变更过程中的JDK版本,以保证应用在发生ECS实例扩容时,新扩容的实例和应用中的实例的JDK版本一致。
背景信息
ECS集群默认对导入EDAS的ECS实例自动安装最新版本的OpenJDK。但是当应用发生扩容ECS实例时,新扩容的ECS实例与应用里已存在的ECS实例上的OpenJDK版本不一致,在业务代码运行时引入一些异常问题。
您可以固定ECS应用变更过程中的JDK版本从而避免这些异常问题。您可以在挂载脚本的启动前脚本中设置要执行的代码段,代码段中可以设置指定版本的JDK的下载地址信息,这样就可以实现在ECS应用的变更过程中(应用扩容、重置ECS实例等)都使用固定版本的JDK。
操作步骤
获取指定版本JDK的下载地址信息。
将JDK压缩包的下载地址添加到以下代码片段。
将以下代码段中的JDK_DOWNLOAD_URL变量设置为JDK压缩包的下载地址。
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应用的启动前脚本。
重启应用,查看应用的JDK版本是否与设置的版本一致。
说明应用重启完成后,您也可以登录ECS实例,查看JDK版本是否与设置的版本一致。
更多说明
如果您要使用指定的OpenJDK,则修改添加到启动脚本中的代码段,增加安装fontconfig操作系统类库(yum install -y fontconfig)的内容。
如果ECS集群应用想使用JDK 11或其他Vendor、Version的JDK,也可以使用挂载脚本的方式,将要指定的JDK安装到/opt/edas/jdk/java或者/opt/ali/alijdk目录下,即可达到固定JDK版本的目的。
文档内容是否对您有帮助?