Java 런타임 수명 주기 관리

Java 런타임 수명 주기 관리에는 다음이 포함됩니다.

  • Java 런타임 설치 및 구성
  • Java 런타임 삭제
  • 배치 규칙 집합 관리

Java 런타임 설치 및 구성

JMS를 사용하면 플리트 내에서 선택된 인스턴스 또는 모든 관리 인스턴스에 Oracle JDK를 설치할 수 있습니다. 또한 사후 설치 작업을 사용하여 새 Java 런타임을 추가로 구성할 수 있습니다.

지원되는 각 플랫폼에 대해 파일 시스템에서 선택된 위치로 추출될 일반 아카이브로 Java 런타임을 설치할지 아니면 JMS가 선택된 플랫폼에 대한 공식 Oracle JDK 설치 프로그램을 실행하여 Oracle JDK를 설치할지 선택할 수 있습니다.

OCI 클라우드 콘솔

  1. OCI 콘솔에 관리자로 사인인합니다.
  2. 탐색 메뉴를 열고 관찰 가능성 및 관리를 누른 다음 Java 관리에서 플리트를 누릅니다.
  3. 플리트를 선택합니다.
  4. 작업을 누르고 메뉴에서 Java 런타임 설치를 선택합니다.
  5. 설치할 버전을 선택합니다.
  6. 다음을 누르십시오.
  7. 플랫폼별 JDK 설치 프로그램을 통해 Java를 설치하거나 Java 아카이브를 다운로드하여 지정된 경로로 추출할 수 있는 옵션이 있습니다. 다음을 눌러 계속합니다.
  8. Java Runtime 설치를 누릅니다.

OCI CLI

  1. 다음 명령을 사용하여 설치할 페이로드를 생성합니다.
    oci jms installation-site-summary add --generate-param-json-input installation-sites
  2. 다음과 같이 페이로드 JSON 파일을 편집합니다.
    [
      {
        "artifactContentType": "JDK",
        "managedInstanceId": "$MANAGED_INSTANCE_OCID",
        "releaseVersion": "21"
      }
    ]
  3. 다음 명령을 실행합니다.
    oci jms installation-site-summary add --fleet-id $FLEET_OCID --installation-sites file://installation-sites.json

새 Java Runtime 구성

Java Runtime의 각 설치는 향상된 보안, 네트워크 구성 또는 로깅을 위한 여러 옵션으로 구성할 수 있습니다. 모든 구성 옵션에 대한 자세한 내용은 Java 사후 설치 작업을 참조하십시오. 예를 들어, 사용자 환경에서 Java 런타임의 전역 프록시 구성에 이 기능을 사용할 수 있습니다.

OCI 클라우드 콘솔 또는 OCI CLI에서 작업을 실행할 수 있습니다.

OCI 클라우드 콘솔

  1. OCI 콘솔에 관리자로 사인인합니다.
  2. 탐색 메뉴를 열고 관찰 가능성 및 관리를 누른 다음 Java 관리에서 플리트를 누릅니다.
  3. 플리트를 선택합니다.
  4. 작업을 누르고 메뉴에서 Java 런타임 수명 주기 관리 설정 구성을 선택합니다.
  5. Java 사후 설치 작업 섹션에서 요구 사항을 구성합니다.
  6. 저장을 누릅니다.
  7. 이제 위에서 설명한 Java 런타임 설치 프로세스를 시작할 수 있으며 대화상자의 두번째 단계에서 새로 구성된 사후 설치 작업을 확인할 수 있습니다.

OCI CLI

  1. 다음 명령을 사용하여 플리트에 대한 LCM 구성을 생성합니다.
    oci jms fleet-advanced-feature-configuration update --generate-param-json-input lcm
  2. 다음과 같이 변경된 내용으로 파일을 업데이트합니다.
    {
        "isEnabled": true,
        "postInstallationActions": {
          "proxies": {
            "httpProxyHost": "my-awesome-company-proxy",
            "httpProxyPort": 8080,
            "httpsProxyHost": "my-awesome-company-proxy",
            "httpsProxyPort": 8080,
            "useSystemProxies": false
          }
        }
    }
  3. 플리트 구성을 업로드합니다.
    oci jms fleet-advanced-feature-configuration update --lcm file://lcm-update.json --fleet-id $FLEET_OCID
  4. 다음과 같이 설치 페이로드 파일을 업데이트합니다.
    [
      {
        "artifactContentType": "JDK",
        "managedInstanceId": "$MANAGED_INSTANCE_OCID",
        "releaseVersion": "21"
      }
    ]
  5. 설치 스크립트를 실행합니다.
    oci jms installation-site-summary add \
            --fleet-id "$FLEET_OCID" \
            --installation-sites file://installation-sites.json \
            --post-installation-actions '["SETUP_HTTP_PROXY","SETUP_HTTPS_PROXY"]'

Java 런타임 삭제

JMS는 플리트에 있는 모든 관리 인스턴스의 검색된 Java 런타임 목록을 제공합니다. 플리트 관리자는 선택된 관리 인스턴스 또는 JMS 플리트 내의 모든 관리 인스턴스에서 Oracle Java 런타임을 제거할 수 있는 옵션이 있습니다.

OCI 클라우드 콘솔

  1. OCI 콘솔에 관리자로 사인인합니다.
  2. 탐색 메뉴를 열고 관찰 가능성 및 관리를 누른 다음 Java 관리에서 플리트를 누릅니다.
  3. 플리트를 선택합니다.
  4. Java 런타임 섹션을 누르고 Oracle Java 런타임을 선택합니다.
  5. 삭제를 누릅니다.
  6. 삭제를 다시 눌러 확인합니다.

OCI CLI

  1. 다음 명령을 사용하여 삭제할 페이로드를 생성합니다.
    oci jms installation-site-summary remove --generate-param-json-input installation-sites
  2. 제공된 플리트 및 Java 버전에 대한 설치 키를 가져옵니다.
    oci jms installation-usage summarize --fleet-id $FLEET_OCID --jre-version
          $ORACLE_JDK_VERSION
  3. 설치된 Java 버전으로 제공된 플리트에 대한 관리 인스턴스 OCID 가져오기:
    oci jms managed-instance-usage summarize --fleet-id $FLEET_OCID --jre-version
          $ORACLE_JDK_VERSION

    주:

    추가 매개변수 --os-family를 사용하여 특정 플랫폼에 대해서만 관리 인스턴스를 찾을 수 있습니다.
  4. 설치 키를 관리 인스턴스와 결합하면 설치 키 및 관리 인스턴스는 플랫폼마다 다릅니다. 예를 들면 다음과 같습니다.
    [
      {
        "installationKey": "$JAVA_RUNTIME_INSTALL_KEY_LINUX",
        "managedInstanceId": "$LINUX_MANAGED_INSTANCE_OCID"
      },
      {
        "installationKey": "$JAVA_RUNTIME_INSTALL_KEY_WINDOWS",
        "managedInstanceId": "$WINDOWS_MANAGED_INSTANCE_OCID"
      }
    ]
  5. 설치 키 및 관리 인스턴스 쌍 목록을 완료했으면 installation-sites 구성을 이름이 installation-sites.json인 파일에 저장합니다.
  6. 다음 명령을 실행합니다.
    oci jms installation-site-summary remove --fleet-id $FLEET_OCID --installation-sites
          file://installation-sites.json

배치 규칙 집합 관리

배치 규칙 집합은 안전하고 사용자 정의 가능한 방식으로 Java 애플릿 및 웹 응용 프로그램의 실행을 제어하고 관리하는 데 사용되는 규칙 및 정책 집합입니다.

JMS에서 배치 규칙 집합 jar를 관리하는 작업은 간단합니다. 플리트 관리자는 배치 규칙을 포함하는 서명된 jar를 업로드하여 구성한 다음 JMS는 해당하는 경우 플리트의 모든 관리 인스턴스에 DRS 파일을 분배합니다.

주:

배치 규칙 집합 관리 기능은 Java 8 런타임으로 제한됩니다.

OCI 클라우드 콘솔

  1. OCI 콘솔에 관리자로 사인인합니다.
  2. 탐색 메뉴를 열고 관찰 가능성 및 관리를 누른 다음 Java 관리에서 플리트를 누릅니다.
  3. 플리트를 선택합니다.
  4. 작업을 누르고 Java 런타임 수명 주기 관리 설정 구성을 선택합니다.
  5. 배치 규칙 집합 파일 섹션에서 배포 규칙 집합 jar 파일을 업로드합니다.
  6. 업로드를 누릅니다.

배치 규칙 집합 관리

  1. OCI 콘솔에 관리자로 사인인합니다.
  2. 탐색 메뉴를 열고 관찰 가능성 및 관리를 누른 다음 Java 관리에서 플리트를 누릅니다.
  3. 플리트를 선택합니다.
  4. 작업을 누르고 배치 규칙 집합 관리를 선택합니다.
  5. DRS 배포 또는 제거 패널을 누릅니다.
  6. 제출을 누릅니다.

OCI CLI

  1. 다음 명령을 사용하여 DRS 파일을 업로드합니다.
    oci os object put --namespace $NAMESPACE --bucket-name $BUCKET_NAME --file
          DeploymentRuleSet.jar
  2. JMS로 검증:
    oci jms fleet create-drs-file --namespace $NAMESPACE --bucket-name $BUCKET_NAME
          --drs-file-name DeploymentRuleSet.jar --fleet-id $FLEET_OCID
  3. DRS 파일 배포:
    oci jms fleet enable-drs --fleet-id $FLEET_OCID

DRS 고급 기능 기능은 관리 인스턴스에서 OCI 인벤토리 로그 객체로 DRS 관련 페이로드를 전송하는 것에 따라 달라집니다. 다음은 샘플 DRS 페이로드입니다.

{
  "datetime": 1749559306604,
  "logContent": {
    "id": "117dffe5-defd-4d62-8d4c-b4b3b5ace029",
    "time": "2025-06-10T12:41:46.604Z",
    "oracle": {
      "compartmentid": "ocid1.compartment.oc1..compartment-id",
      "ingestedtime": "2025-06-10T12:41:46.604Z",
      "loggroupid": "ocid1.loggroup.oc1.eu-frankfurt-1.log-group-id",
      "logid": "ocid1.loggroup.oc1.eu-frankfurt-1.log-id",
      "tenantid": "ocid1.tenancy.oc1..tenant-id"
    },
    "source": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
    "specversion": "1.0",
    "subject": "Oracle JMS Plugin",
    "type": "jms.drs.scan.log",
    "data": {
      "data": {
        "checksum": "405ca339f3e394a5cee7f618074f752a7c341bae2d9841155a23858d96d7696a",
        "fleetId": "ocid1.jmsfleet.oc1.eu-frankfurt-1.fleet-id",
        "managedInstanceId": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
        "osArch": "amd64",
        "osName": "Linux",
        "osVersion": "5.15.0-306.177.4.el9uek.x86_64"
      },
      "datacontenttype": "application/json",
      "dataschema": "1.0",
      "id": "117dffe5-defd-4d62-8d4c-b4b3b5ace029",
      "source": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
      "specversion": "1.0",
      "time": "2025-06-10T12:41:46.601Z",
      "type": "jms.drs.scan.log"
    }
  },
  "regionId": "eu-frankfurt-1"
}

특정 http/https 프록시 구성을 사용하여 Oracle JDK 21 설치를 자동화하려고 한다고 가정해 보겠습니다. 다음은 JMS를 사용하여 이러한 자동화를 수행하는 실제 예제입니다.

먼저 간단한 스크립트를 검토하고 구성 변수 섹션에서 필수 매개변수를 정의해 보겠습니다.

#!/usr/bin/env bash
 
# configuration variables
JAVA_VERSION=21
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
PROXY_HOST=my-awesome-company-proxy
PROXY_PORT=8080
 
# check LCM configuration
FLEET_LCM_CONFIGURED=$(oci jms fleet-advanced-feature-configuration get --fleet-id $FLEET_OCID |  jq '.data.lcm."is-enabled"')
 
# enable LCM configuration if needed
if [ "$FLEET_LCM_CONFIGURED" == "false" ]; then
cat > lcm-proxy.json << EOF
{
  "isEnabled": true,
  "postInstallationActions": {
    "proxies": {
      "httpProxyHost": "$PROXY_HOST",
      "httpProxyPort": $PROXY_PORT,
      "httpsProxyHost": "$PROXY_HOST",
      "httpsProxyPort": $PROXY_PORT,
      "useSystemProxies": false
    }
  }
}
EOF
     
    echo Uploading new LCM configuration for fleet $FLEET_OCID
    cat lcm-proxy.json
 
    # upload the LCM configuration to JMS without confirmation
    oci jms fleet-advanced-feature-configuration update --force --lcm file://lcm-proxy.json --fleet-id $FLEET_OCID
 
    rm lcm-proxy.json
fi
 
# JDK installation payload
cat > jdk-install-payload.json << EOF
[
  {
    "artifactContentType": "JDK",
    "releaseVersion": "$JAVA_VERSION",
    "managedInstanceId": "$MANAGED_INSTANCE_OCID",
  }
]
EOF
 
# initiate installation on specified managed instance
WORK_REQUEST_OCID=$(oci jms installation-site-summary add \
        --fleet-id "$FLEET_OCID" \
        --installation-sites file://jdk-install-payload.json \
        --post-installation-actions '["SETUP_HTTP_PROXY","SETUP_HTTPS_PROXY"]' | jq -r '."opc-work-request-id"')
echo Installation work request OCID: $WORK_REQUEST_OCID
rm jdk-install-payload.json
 
# additionally you can add your own logic to check if work request is finished
# sleep 600
# oci jms work-request get --work-request-id "$WORK_REQUEST_OCID" | jq .data.status

다음 단계에서는 위 스크립트를 실행하고 완료될 때까지 기다립니다. 설치 작업 요청이 완료되면 새로 설치된 JDK 21에 대한 프록시 구성이 원하는 구성으로 설정되었는지 확인할 수 있습니다.

oci jms work-request-log-entry list-work-request-logs --work-request-id "$WORK_REQUEST_OCID" | jq -r '.data.items[].message'
{"artifactType":"JDK","code":"COMMAND_COMPLETED_WITHOUT_ERRORS","jrePath":"/usr/lib/jvm/jdk-21-oracle-x64/","jreVersion":"21","managedInstance":"jms-demo","metadata":{"attempt":1,"maximumAttempts":3},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"POST_INSTALL_ACTIONS_SUCCESS","jrePath":"/usr/lib/jvm/jdk-21-oracle-x64/","jreVersion":"21","managedInstance":"jms-demo","metadata":{},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"POST_INSTALL_ACTIONS_EXECUTING","jrePath":"/usr/lib/jvm/jdk-21-oracle-x64/","jreVersion":"21","managedInstance":"jms-demo","metadata":{},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"POST_INSTALL_ACTIONS_PRESENT","jrePath":"/usr/lib/jvm/jdk-21-oracle-x64/","jreVersion":"21","managedInstance":"jms-demo","metadata":{},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"INSTALL_SUCCESS","jrePath":"/usr/lib/jvm/jdk-21-oracle-x64/","jreVersion":"21","managedInstance":"jms-demo","metadata":{},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"COMMAND_RUNNING","jrePath":null,"jreVersion":"21","managedInstance":"jms-demo","metadata":{"attempt":1,"maximumAttempts":3},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
{"artifactType":"JDK","code":"COMMAND_CREATED","jrePath":null,"jreVersion":"21","managedInstance":"jms-demo","metadata":{},"operation":"LCM_OPERATION","osType":"Linux","requestType":"ARTIFACTINSTALL"}
 
# verification on the managed instance:
[root@jms-demo ~]# egrep '^https?\.proxy' /usr/lib/jvm/jdk-21-oracle-x64/conf/net.properties
http.proxyHost=my-awesome-company-proxy
http.proxyPort=8080
https.proxyHost=my-awesome-company-proxy
https.proxyPort=8080