인스턴스 생성 및 관리

Red Hat OpenStack Platform 16.2

CLI를 사용하여 인스턴스 생성 및 관리

OpenStack Documentation Team

초록

이 가이드에서는 인스턴스 생성 및 관리를 위한 절차를 제공합니다.

머리말

참고

인스턴스를 생성하는 동안에는 RBAC(역할 기반 액세스 제어)-공유 보안 그룹을 인스턴스에 직접 적용할 수 없습니다. RBAC-shared 보안 그룹을 인스턴스에 적용하려면 먼저 포트를 생성하고, 공유 보안 그룹을 해당 포트에 적용한 다음 해당 포트를 인스턴스에 할당해야 합니다. 포트에 보안 그룹 추가를 참조하십시오.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Red Hat 문서에 관한 피드백 제공

문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 이를 개선하는지 알려주십시오.

DDF(직접 문서 피드백) 기능 사용

특정 문장, 단락 또는 코드 블록에 대한 직접 주석은 피드백 추가 DDF 기능을 사용하십시오.

  1. 다중 페이지 HTML 형식으로 설명서를 봅니다.
  2. 문서 오른쪽 상단에 Feedback (피드백) 버튼이 표시되는지 확인합니다.
  3. 주석 처리하려는 텍스트 부분을 강조 표시합니다.
  4. 피드백 추가를 클릭합니다.
  5. 주석을 사용하여 Add Feedback (피드백 추가) 필드를 작성합니다.
  6. 선택 사항: 설명서 팀이 문제에 대한 자세한 내용을 문의할 수 있도록 이메일 주소를 추가하십시오.
  7. Submit(제출)을 클릭합니다.

1장. 인스턴스 정보

인스턴스는 클라우드의 물리 컴퓨팅 노드에서 실행되는 개별 가상 시스템입니다. 인스턴스를 시작하려면 플레이버와 이미지 또는 부팅 가능한 볼륨이 필요합니다. 이미지를 사용하여 인스턴스를 시작하면 제공된 이미지는 부팅 가능한 운영 체제가 설치된 가상 디스크를 포함하는 기본 이미지가 됩니다. 각 인스턴스에는 루트 디스크가 필요하며, 인스턴스 디스크라고 합니다. 계산 서비스(nova)는 인스턴스에 대해 지정한 플레이버의 사양과 일치하도록 인스턴스 디스크의 크기를 조정합니다.

이미지는 Image 서비스(glance)에서 관리합니다. 이미지 서비스 이미지 저장소에는 사전 정의된 여러 이미지가 포함되어 있습니다. 계산 노드는 인스턴스에 사용할 수 있는 vCPU, 메모리 및 로컬 디스크 리소스를 제공합니다. 블록 스토리지 서비스(cinder)는 사전 정의된 볼륨을 제공합니다. 인스턴스 디스크 데이터는 인스턴스를 삭제할 때 삭제되거나 블록 스토리지 서비스에서 제공하는 영구 볼륨에 삭제되는 임시 스토리지에 저장됩니다.

계산 서비스는 필요에 따라 인스턴스를 제공하는 중앙 구성 요소입니다. 계산 서비스는 인스턴스를 생성, 예약 및 관리하고 인증을 위한 ID 서비스, 인스턴스를 시작하는 데 사용되는 이미지의 이미지 서비스 및 사용자와 관리 인터페이스의 대시보드 서비스(horizon)와 상호 작용합니다. 클라우드 사용자는 인스턴스를 만들고 관리할 때 계산 서비스와 상호 작용합니다. OpenStack CLI 또는 대시보드를 사용하여 인스턴스를 생성하고 관리할 수 있습니다.

2장. 인스턴스 부팅 소스

인스턴스의 부팅 소스는 이미지 또는 부팅 가능한 볼륨일 수 있습니다. 이미지에서 부팅한 인스턴스의 인스턴스 디스크는 계산 서비스에서 제어하고 인스턴스가 삭제될 때 삭제됩니다. 볼륨에서 부팅하는 인스턴스의 인스턴스 디스크는 블록 스토리지 서비스에 의해 제어되며 원격으로 저장됩니다.

이미지에는 부팅 가능한 운영 체제가 포함됩니다. Image 서비스(glance)는 이미지 스토리지 및 관리를 제어합니다. 동일한 기본 이미지에서 원하는 수의 인스턴스를 시작할 수 있습니다. 각 인스턴스는 기본 이미지의 복사본에서 실행됩니다. 인스턴스에 대한 변경 사항은 기본 이미지에 영향을 주지 않습니다.

부팅 가능한 볼륨은 부팅 가능한 운영 체제가 포함된 이미지에서 생성된 블록 스토리지 볼륨입니다. 인스턴스는 부팅 가능한 볼륨을 사용하여 인스턴스가 삭제될 때 인스턴스 데이터를 유지할 수 있습니다. 인스턴스를 시작할 때 기존 영구 루트 볼륨을 사용할 수 있습니다. 인스턴스가 삭제될 때 인스턴스 데이터를 저장할 수 있도록 이미지에서 인스턴스를 시작할 때 영구 스토리지를 생성할 수도 있습니다. 새 영구 스토리지 볼륨은 볼륨 스냅샷에서 인스턴스를 생성할 때 자동으로 생성됩니다.

다음 다이어그램에서는 인스턴스를 시작할 때 생성할 수 있는 인스턴스 디스크 및 스토리지를 보여줍니다. 생성된 실제 인스턴스 디스크와 스토리지는 사용되는 부팅 소스 및 플레이버에 따라 다릅니다.

Instance storage overview

3장. 인스턴스 스토리지 유형

인스턴스에 사용할 수 있는 가상 스토리지는 인스턴스를 시작하는 데 사용되는 플레이버에서 정의합니다. 다음 가상 스토리지 리소스를 인스턴스와 연결할 수 있습니다.

  • 인스턴스 디스크
  • 임시 스토리지
  • 스왑 스토리지
  • 영구 블록 스토리지 볼륨
  • 설정 드라이브

3.1. 인스턴스 디스크

인스턴스 데이터를 저장하기 위해 생성된 인스턴스 디스크는 인스턴스를 생성하는 데 사용하는 부팅 소스에 따라 다릅니다. 이미지에서 부팅한 인스턴스의 인스턴스 디스크는 계산 서비스에서 제어하고 인스턴스가 삭제될 때 삭제됩니다. 볼륨에서 부팅하는 인스턴스의 인스턴스 디스크는 블록 스토리지 서비스에서 제공하는 영구 볼륨입니다.

3.2. 인스턴스 임시 스토리지

임시 디스크를 구성하는 플레이버를 선택하여 인스턴스에 임시 디스크가 생성되도록 지정할 수 있습니다. 이 임시 스토리지는 인스턴스에 사용할 수 있는 빈 추가 디스크입니다. 이 스토리지 값은 인스턴스 플레이버에서 정의합니다. 기본값은 0이므로 보조 임시 스토리지가 생성되지 않습니다.

임시 디스크는 플러그형 하드 드라이브 또는 workstation 드라이브와 같은 방식으로 나타납니다. lsblk 명령을 사용하여 확인할 수 있는 블록 장치로 사용할 수 있습니다. 마운트하고 사용할 수 있지만 일반적으로 블록 장치를 사용합니다. 연결된 인스턴스 이외의 해당 디스크를 보존하거나 참조할 수 없습니다.

참고

임시 스토리지 데이터는 인스턴스 스냅샷에 포함되지 않으며 보류된 인스턴스에서 사용할 수 없는 다음 보류되지 않습니다.

3.3. 인스턴스 스왑 스토리지

스왑 디스크를 구성하는 플레이버를 선택하여 인스턴스에 대해 스왑 디스크를 만들도록 지정할 수 있습니다. 이 스왑 스토리지는 인스턴스에서 실행 중인 운영 체제의 스왑 공간으로 사용할 수 있는 추가 디스크입니다.

3.4. 인스턴스 블록 스토리지

블록 스토리지 볼륨은 실행 중인 인스턴스의 상태와 관계없이 인스턴스에 사용할 수 있는 영구 스토리지입니다. 여러 블록 장치를 인스턴스에 연결할 수 있습니다. 이 중 하나는 부팅 가능한 볼륨일 수 있습니다.

참고

인스턴스 디스크 데이터에 블록 스토리지 볼륨을 사용하면 새 볼륨이 생성되도록 요청하는 새 이미지로 인스턴스를 다시 빌드하는 경우에도 블록 스토리지 볼륨이 인스턴스를 다시 빌드할 수 있습니다.

3.5. 설정 드라이브

부팅 시 구성 드라이브를 인스턴스에 연결할 수 있습니다. 구성 드라이브는 인스턴스에 읽기 전용 드라이브로 표시됩니다. 인스턴스에서 이 드라이브를 마운트하고 해당 드라이브에서 파일을 읽을 수 있습니다. 구성 드라이브를 cloud-init 정보의 소스로 사용할 수 있습니다. 구성 드라이브는 서버 부트스트랩을 위해 cloud-init 와 결합하고 대규모 파일을 인스턴스에 전달하려는 경우 유용합니다. 예를 들어 구성 드라이브를 자동으로 마운트하고 초기 인스턴스 부팅 중에 설정 스크립트를 실행하도록 cloud-init 를 구성할 수 있습니다. 구성 드라이브는 config-2 의 볼륨 레이블을 사용하여 생성되며 부팅 시 인스턴스에 연결됩니다. 구성 드라이브에 전달된 추가 파일의 내용은 구성 드라이브의 openstack/{version}/ 디렉터리에 있는 user_data 파일에 추가됩니다. cloud-init 는 이 파일에서 사용자 데이터를 검색합니다.

4장. 인스턴스의 플레이버

인스턴스 플레이버는 인스턴스의 가상 하드웨어 프로필을 지정하는 리소스 템플릿입니다. 인스턴스를 시작할 때 플레이버를 선택하여 인스턴스에 할당할 가상 리소스를 지정합니다. 플레이버는 보조 임시 스토리지 및 스왑 디스크를 포함하여 가상 CPU 수, RAM 크기, 루트 디스크 크기 및 가상 스토리지 크기를 정의하여 로 인스턴스를 만듭니다. 클라우드 내의 프로젝트에 대해 정의된 사용 가능한 플레이버 집합에서 플레이버를 선택합니다.

5장. 인스턴스 생성

인스턴스를 만들려면 먼저 플레이버, 부팅 소스, 네트워크, 키 쌍 및 보안 그룹과 같은 기타 RHOSP(Red Hat OpenStack Platform) 구성 요소를 사용할 수 있어야 합니다. 이러한 구성 요소는 인스턴스 생성에 사용되며 기본적으로 사용할 수 없습니다.

인스턴스를 생성할 때 인스턴스에 필요한 부팅 가능한 운영 체제, 인스턴스에 필요한 하드웨어 프로필이 있는 플레이버, 인스턴스를 연결할 네트워크, 필요한 추가 스토리지(예: 데이터 볼륨 및 임시 스토리지)가 있는 부팅 소스를 선택합니다.

참고

인스턴스를 생성할 때 계산(nova) 서비스는 인스턴스를 제공하는 이름을 사용하여 메타데이터 서비스 및 구성 드라이브에서 인스턴스에 유효한 호스트 이름을 생성합니다. Compute 서비스는 인스턴스 이름의 공백('' 및 밑줄(_))을 대시(-)로 교체하여 유효한 DNS 레이블을 생성합니다. 인스턴스 이름이 마침표 뒤에 하나 이상의 숫자로 끝나는 경우 Compute 서비스는 마침표(.)를 대시(-)로 교체합니다.

5.1. 사전 요구 사항

5.2. 이미지에서 인스턴스 생성

이미지를 부팅 소스로 사용하여 인스턴스를 생성할 수 있습니다.

절차

  1. 인스턴스에 필요한 하드웨어 프로필이 있는 플레이버의 이름 또는 ID를 검색합니다.

    $ openstack flavor list
    참고

    이미지가 성공적으로 부팅될 수 있는 충분한 크기의 플레이버를 선택합니다. 그렇지 않으면 인스턴스가 시작되지 않습니다.

  2. 인스턴스에 필요한 소프트웨어 프로필이 있는 이미지의 이름 또는 ID를 검색합니다.

    $ openstack image list

    필요한 이미지를 사용할 수 없는 경우 새 이미지를 다운로드하거나 생성할 수 있습니다. 클라우드 이미지를 생성하거나 다운로드하는 방법에 대한 자세한 내용은 이미지 서비스를 참조하십시오.

    참고

    인스턴스에 26개 이상의 볼륨을 연결해야 하는 경우 인스턴스를 생성하는 데 사용하는 이미지에 다음 속성이 있어야 합니다.

    • hw_scsi_model=virtio-scsi
    • hw_disk_bus=scsi
  3. 인스턴스를 연결할 네트워크의 이름 또는 ID를 검색합니다.

    $ openstack network list
  4. 인스턴스를 생성합니다.

    $ openstack server create --flavor <flavor> \
      --image <image> --network <network> \
      --wait myInstanceFromImage
    • <flavor> 를 1단계에서 검색한 플레이버의 이름 또는 ID로 바꿉니다.
    • <image> 를 2단계에서 검색한 이미지의 이름 또는 ID로 바꿉니다.
    • <network> 를 3단계에서 검색한 네트워크의 이름 또는 ID로 바꿉니다. 필요에 따라 --network 옵션을 두 번 이상 사용하여 여러 네트워크에 인스턴스를 연결할 수 있습니다.

5.3. 부팅 가능한 볼륨에서 인스턴스 생성

부팅 가능한 볼륨을 부팅 소스로 사용하여 인스턴스를 생성할 수 있습니다. 실패 시 인스턴스 데이터의 가용성을 개선해야 할 때 볼륨에서 인스턴스를 부팅합니다.

참고

인스턴스 디스크 데이터에 블록 스토리지 볼륨을 사용하면 새 볼륨이 생성되도록 요청하는 새 이미지로 인스턴스를 다시 빌드하는 경우에도 블록 스토리지 볼륨이 인스턴스를 다시 빌드할 수 있습니다.

절차

  1. 인스턴스에 필요한 소프트웨어 프로필이 있는 이미지의 이름 또는 ID를 검색합니다.

    $ openstack image list

    필요한 이미지를 사용할 수 없는 경우 새 이미지를 다운로드하거나 생성할 수 있습니다. 클라우드 이미지를 생성하거나 다운로드하는 방법에 대한 자세한 내용은 이미지 서비스를 참조하십시오.

    참고

    인스턴스에 26개 이상의 볼륨을 연결해야 하는 경우 인스턴스를 생성하는 데 사용하는 이미지에 다음 속성이 있어야 합니다.

    • hw_scsi_model=virtio-scsi
    • hw_disk_bus=scsi
  2. 이미지에서 부팅 가능한 볼륨을 생성합니다.

    $ openstack volume create --image <image> \
    --size <size_gb> --bootable myBootableVolume
    • <image> 를 1단계에서 검색된 볼륨에 작성할 이미지의 이름 또는 ID로 바꿉니다.
    • <size_gb> 를 볼륨 크기(GB)로 바꿉니다.
  3. 인스턴스에 필요한 하드웨어 프로필이 있는 플레이버의 이름 또는 ID를 검색합니다.

    $ openstack flavor list
  4. 인스턴스를 연결할 네트워크의 이름 또는 ID를 검색합니다.

    $ openstack network list
  5. 부팅 가능한 볼륨으로 인스턴스를 생성합니다.

    $ openstack server create --flavor <flavor> \
     --volume myBootableVolume --network <network> \
     --wait myInstanceFromVolume
    • <flavor> 를 3단계에서 검색한 플레이버의 이름 또는 ID로 바꿉니다.
    • <network> 를 4단계에서 검색한 네트워크의 이름 또는 ID로 바꿉니다. 필요에 따라 --network 옵션을 두 번 이상 사용하여 여러 네트워크에 인스턴스를 연결할 수 있습니다.

5.4. SR-IOV 네트워크 인터페이스를 사용하여 인스턴스 생성

SR-IOV(단일 루트 I/O 가상화) 네트워크 인터페이스를 사용하여 인스턴스를 생성하려면 필요한 SR-IOV 포트를 생성해야 합니다.

절차

  1. 인스턴스에 필요한 하드웨어 프로필이 있는 플레이버의 이름 또는 ID를 검색합니다.

    $ openstack flavor list
    참고

    이미지가 성공적으로 부팅될 수 있는 충분한 크기의 플레이버를 선택합니다. 그렇지 않으면 인스턴스가 시작되지 않습니다.

    작은 정보

    필요한 정책이 있는 플레이버를 선택하여 PCI 패스스루 장치 및 SR-IOV 인터페이스에 적용되는 NUMA 선호도 정책을 지정할 수 있습니다. 사용 가능한 정책에 대한 자세한 내용은 Flavor 메타데이터Instance PCI NUMA 선호도 정책을 참조하십시오. NUMA 선호도 정책을 사용하여 플레이버를 선택하는 경우 사용하는 이미지에 동일한 NUMA 선호도 정책 또는 NUMA 선호도 정책이 있어야 합니다.

  2. 인스턴스에 필요한 소프트웨어 프로필이 있는 이미지의 이름 또는 ID를 검색합니다.

    $ openstack image list

    필요한 이미지를 사용할 수 없는 경우 새 이미지를 다운로드하거나 생성할 수 있습니다. 클라우드 이미지를 생성하거나 다운로드하는 방법에 대한 자세한 내용은 이미지 서비스를 참조하십시오.

    작은 정보

    필요한 정책이 있는 이미지를 선택하여 PCI 패스스루 장치 및 SR-IOV 인터페이스에 적용되는 NUMA 선호도 정책을 지정할 수 있습니다. 사용 가능한 정책에 대한 자세한 내용은 Flavor 메타데이터Instance PCI NUMA 선호도 정책을 참조하십시오. NUMA 선호도 정책을 사용하여 이미지를 선택하는 경우 사용하는 플레이버에는 동일한 NUMA 선호도 정책 또는 NUMA 선호도 정책이 없습니다.

  3. 인스턴스를 연결할 네트워크의 이름 또는 ID를 검색합니다.

    $ openstack network list
  4. SR-IOV 인터페이스에 필요한 포트 유형을 생성합니다.

    $ openstack port create --network <network> \
     --vnic-type <vnic_type> mySriovPort
    • <network> 를 3단계에서 검색한 네트워크의 이름 또는 ID로 바꿉니다.
    • <vnic_type> 을 다음 값 중 하나로 바꿉니다.

      • 직접: 직접 모드 SR-IOV VF(가상 기능) 포트를 만듭니다.
      • direct-physical: 직접 모드 SR-IOV 물리적 기능(PF) 포트를 생성합니다.
      • macvtap: MacVTap을 사용하여 virtio 인터페이스를 인스턴스에 노출하는 간접 모드 SR-IOV VF 포트를 생성합니다.
  5. 인스턴스를 생성합니다.

    $ openstack server create --flavor <flavor> \
      --image <image> --port <port> \
      --wait mySriovInstance
    • <flavor> 를 1단계에서 검색한 플레이버의 이름 또는 ID로 바꿉니다.
    • <image> 를 2단계에서 검색한 이미지의 이름 또는 ID로 바꿉니다.
    • <port> 를 4단계에서 생성한 포트의 이름 또는 ID로 바꿉니다.

5.5. 추가 리소스

6장. 보장된 최소 대역폭 QoS로 인스턴스 생성

QoS(Quality of Service) 정책을 사용하여 최소 대역폭을 요청하는 인스턴스를 생성할 수 있습니다.

최소 대역폭 규칙이 보장된 QoS 정책은 특정 물리적 네트워크의 포트에 할당됩니다. 구성된 포트를 사용하는 인스턴스를 생성하면 Compute 스케줄링 서비스에서 이 요청을 충족하는 인스턴스의 호스트를 선택합니다. 계산 스케줄링 서비스는 인스턴스를 배포할 호스트를 선택하기 전에 각 실제 인터페이스에서 다른 인스턴스에서 예약한 대역폭의 양을 확인합니다.

제한 사항/제한

  • 새 인스턴스를 생성할 때만 보장된 최소 대역폭 QoS 정책을 할당할 수 있습니다. 계산 서비스는 생성 또는 이동 작업 중에 인스턴스의 리소스 사용량만 업데이트하므로, 최소 대역폭 QoS 정책을 이미 실행 중인 인스턴스에 할당할 수 없습니다. 즉, 인스턴스에 사용할 수 있는 최소 대역폭은 보장되지 않습니다.
  • 보장된 최소 대역폭 QoS 정책과 같이 리소스 요청이 있는 포트를 사용하는 인스턴스를 실시간 마이그레이션하거나 보류 해제 또는 비웁니다. 다음 명령을 실행하여 포트에 리소스 요청이 있는지 확인합니다.

    $ openstack port show <port_name/port_id>

사전 요구 사항

  • 최소 대역폭 규칙이 있는 QoS 정책을 사용할 수 있습니다. 자세한 내용은 네트워킹 가이드 의 QoS(Quality of Service) 정책 구성을 참조하십시오.

절차

  1. 사용 가능한 QoS 정책을 나열합니다.

    (overcloud)$ openstack network qos policy list
    ----------------------------------------------------------------+
    | ID                                   | Name    | Shared | Default | Project                          |
    ----------------------------------------------------------------+
    | 6d771447-3cf4-4ef1-b613-945e990fa59f | policy2 | True   | False   | ba4de51bf7694228a350dd22b7a3dc24 |
    | 78a24462-e3c1-4e66-a042-71131a7daed5 | policy1 | True   | False   | ba4de51bf7694228a350dd22b7a3dc24 |
    | b80acc64-4fc2-41f2-a346-520d7cfe0e2b | policy0 | True   | False   | ba4de51bf7694228a350dd22b7a3dc24 |
    ----------------------------------------------------------------+
  2. 사용 가능한 각 정책의 규칙을 확인하여 필요한 최소 대역폭이 있는지 확인합니다.

    (overcloud)$ openstack network qos policy show policy0
    ----------------------------------------------------------------------------------------------------+
    | Field       | Value                                                                                 |
    ----------------------------------------------------------------------------------------------------+
    | description |                                                                                                                                                                                                                                                                                                                                                                     |
    | id          | b80acc64-4fc2-41f2-a346-520d7cfe0e2b                                                                                                                                                                                                                                                                                                                                |
    | is_default  | False                                                                                                                                                                                                                                                                                                                                                               |
    | location    | cloud=', project.domain_id=, project.domain_name='Default, project.id=ba4de51bf7694228a350dd22b7a3dc24, project.name=admin, region_name=regionOne, zone=                                                                                                                                                                                                    |
    | name        | policy0                                                                                                                                                                                                                                                                                                                                                             |
    | project_id  | ba4de51bf7694228a350dd22b7a3dc24                                                                                                                                                                                                                                                                                                                                    |
    | rules       | [{min_kbps: 100000, direction: egress, id: d46218fe-9218-4e96-952b-9f45a5cb3b3c, qos_policy_id: b80acc64-4fc2-41f2-a346-520d7cfe0e2b, type: minimum_bandwidth}, {min_kbps: 100000, direction: ingress, id: 1202c4e3-a03a-464c-80d5-0bf90bb74c9d, qos_policy_id: b80acc64-4fc2-41f2-a346-520d7cfe0e2b, type: minimum_bandwidth}] |
    | shared      | True                                                                                                                                                                                                                                                                                                                                                                |
    | tags        | []                                                                                                                                                                                                                                                                                                                                                                  |
    ----------------------------------------------------------------------------------------------------+
  3. 적절한 정책에서 포트를 생성합니다.

    (overcloud)$ openstack port create port-normal-qos --network net0 --qos-policy policy0
  4. 사용할 NIC 포트를 지정하여 인스턴스를 생성합니다.

    $ openstack server create --flavor cirros256 --image cirros-0.3.5-x86_64-disk --nic port-id=port-normal-qos --wait qos_instance

    출력의 "ACTIVE" 상태는 요청된 최소 대역폭을 제공할 수 있는 호스트에서 인스턴스를 성공적으로 생성했음을 나타냅니다.

6.1. 인스턴스에서 보장된 최소 대역폭 QoS 제거

인스턴스에서 최소 대역폭 QoS 정책 제한을 해제하려면 인터페이스를 분리할 수 있습니다.

절차

  • 인터페이스를 분리하려면 다음 명령을 입력합니다.

    $ openstack server remove port <vm_name|vm_id> <port_name|port_id>

7장. 인스턴스 업데이트

영구 볼륨 스토리지, 네트워크 인터페이스 또는 공용 IP 주소와 같은 실행 중인 인스턴스에서 추가 리소스를 추가하고 제거할 수 있습니다. 인스턴스 메타데이터 및 인스턴스가 속하는 보안 그룹을 업데이트할 수도 있습니다.

7.1. 인스턴스에 네트워크 연결

실행 중인 인스턴스에 네트워크를 연결할 수 있습니다. 네트워크를 인스턴스에 연결하면 계산 서비스에서 인스턴스의 네트워크에 포트를 만듭니다. 기본 보안 그룹을 사용하고 네트워크에 서브넷이 하나만 있는 경우 네트워크를 사용하여 인스턴스에 네트워크 인터페이스를 연결합니다.

절차

  1. 사용 가능한 네트워크를 식별하고 인스턴스에 연결할 네트워크의 이름 또는 ID를 기록해 둡니다.

    (overcloud)$ openstack network list

    필요한 네트워크를 사용할 수 없는 경우 새 네트워크를 생성합니다.

    (overcloud)$ openstack network create <network>
  2. 인스턴스에 네트워크를 연결합니다.

    $ openstack server add network <instance> <network>
    • <instance> 를 네트워크를 연결할 인스턴스의 이름 또는 ID로 바꿉니다.
    • <network> 를 인스턴스에 연결할 네트워크의 이름 또는 ID로 바꿉니다.

추가 리소스

7.2. 인스턴스에서 네트워크 분리

인스턴스에서 네트워크를 분리할 수 있습니다.

참고

네트워크를 분리하면 모든 네트워크 포트가 분리됩니다. 인스턴스에 네트워크에 포트가 여러 개 있고 해당 포트 중 하나만 분리하려면 인스턴스 프로세스에서 포트 분리를 수행하여 포트를 분리합니다.

절차

  1. 인스턴스에 연결된 네트워크를 식별합니다.

    (overcloud)$ openstack server show <instance>
  2. 인스턴스에서 네트워크를 분리합니다.

    $ openstack server remove network <instance> <network>
    • <instance> 를 네트워크를 제거할 인스턴스의 이름 또는 ID로 바꿉니다.
    • <network> 를 인스턴스에서 제거하려는 네트워크의 이름 또는 ID로 바꿉니다.

7.3. 인스턴스에 포트 연결

포트를 사용하여 네트워크 인터페이스를 실행 중인 인스턴스에 연결할 수 있습니다. 한 번에 하나의 인스턴스에만 포트를 연결할 수 있습니다. 사용자 지정 보안 그룹을 사용하거나 네트워크에 서브넷이 여러 개인 경우 포트를 사용하여 인스턴스에 네트워크 인터페이스를 연결합니다.

작은 정보

네트워크를 사용하여 네트워크 인터페이스를 연결하면 포트가 자동으로 생성됩니다. 자세한 내용은 인스턴스에 네트워크 연결을 참조하십시오.

참고

SR-IOV vNIC를 사용하여 포트를 인스턴스에 연결하거나 최소 대역폭 QoS 정책이 보장된 포트를 연결할 수 없습니다.

절차

  1. 사용 가능한 포트를 식별하고 인스턴스에 연결할 포트의 이름 또는 ID를 기록해 둡니다.

    (overcloud)$ openstack port list

    필요한 포트를 사용할 수 없는 경우 새 포트를 생성합니다.

    (overcloud)$ openstack port create --network <network> <port>
    • <network> 를 포트를 생성할 네트워크의 이름 또는 ID로 바꿉니다.
    • <port> 를 인스턴스에 연결할 포트의 이름 또는 ID로 바꿉니다.
  2. 인스턴스에 포트를 연결합니다.

    $ openstack server add port <instance> <port>
    • <instance> 를 포트를 연결할 인스턴스의 이름 또는 ID로 바꿉니다.
    • <port> 를 인스턴스에 연결할 포트의 이름 또는 ID로 바꿉니다.

추가 리소스

7.4. 인스턴스에서 포트 분리

인스턴스에서 포트를 분리할 수 있습니다.

절차

  1. 인스턴스에 연결된 포트를 확인합니다.

    (overcloud)$ openstack server show <instance>
  2. 인스턴스에서 포트를 분리합니다.

    $ openstack server remove port <instance> <port>
    • <instance> 를 포트 제거하려는 인스턴스의 이름 또는 ID로 바꿉니다.
    • <port> 를 인스턴스에서 제거하려는 포트의 이름 또는 ID로 바꿉니다.

7.5. 인스턴스에 볼륨 연결

영구 스토리지의 인스턴스에 볼륨을 연결할 수 있습니다. 볼륨이 다중 연결 볼륨으로 구성되지 않은 한 한 번에 하나의 인스턴스에만 볼륨을 연결할 수 있습니다. 다중 연결 가능 볼륨 생성에 대한 자세한 내용은 Attach a volume to multiple instances 에서 참조하십시오.

사전 요구 사항

  • 다중 연결 볼륨을 연결하려면 환경 변수 OS_COMPUTE_API_VERSION 이 2.60 이상으로 설정됩니다.
  • 인스턴스에 26개 이상의 볼륨을 연결하려면 인스턴스를 만드는 데 사용한 이미지에 다음 속성이 있어야 합니다.

    • hw_scsi_model=virtio-scsi
    • hw_disk_bus=scsi

절차

  1. 사용 가능한 볼륨을 식별하고 인스턴스에 연결할 볼륨의 이름 또는 ID를 기록해 둡니다.

    (overcloud)$ openstack volume list
  2. 볼륨을 인스턴스에 연결합니다.

    $ openstack server add volume <instance> <volume>
    • <instance> 를 볼륨을 연결할 인스턴스의 이름 또는 ID로 바꿉니다.
    • <volume> 을 인스턴스에 연결할 볼륨의 이름 또는 ID로 바꿉니다.

      참고

      명령에서 다음 오류를 반환하는 경우 인스턴스에 연결하도록 선택한 볼륨이 다중 연결이므로 Compute API 버전 2.60 이상을 사용해야 합니다.

      Multiattach volumes are only supported starting with compute API version 2.60. (HTTP 400) (Request-ID: req-3a969c31-e360-4c79-a403-75cc6053c9e5)

      인스턴스에 볼륨을 추가할 때 환경 변수 OS_COMPUTE_API_VERSION=2.72 를 설정하거나 --os-compute-api-version 인수를 포함할 수 있습니다.

      $ openstack --os-compute-api-version 2.72 server add volume <instance> <volume>
    작은 정보

    상태가 SHELVED 또는 SHELVE D_OFFLOADED 인 인스턴스에 볼륨을 추가하려면 --os-compute-api-version 2.20 이상을 지정합니다.

  3. 볼륨이 인스턴스 또는 인스턴스에 연결되었는지 확인합니다.

    $ openstack volume show <volume>

    & lt;volume& gt;을 표시할 볼륨의 이름 또는 ID로 바꿉니다.

    출력 예:

    +-----------------------------------------------------+----------------------+---------+-----+-----------------------------------------------------------------------------------------------+
    | ID                                                             | Name                | Status | Size| Attached to
    +-----------------------------------------------------+---------------------+---------+------+---------------------------------------------------------------------------------------------+
    | f3fb92f6-c77b-429f-871d-65b1e3afa750 | volMultiattach | in-use |   50 | Attached to instance1 on /dev/vdb Attached to instance2 on /dev/vdb  |
    +-----------------------------------------------------+----------------------+---------+-----+-----------------------------------------------------------------------------------------------+

7.6. 인스턴스에 연결된 볼륨 보기

특정 인스턴스에 연결된 볼륨을 볼 수 있습니다.

사전 요구 사항

  • python-openstackclient 5.5.0 을 사용하고 있습니다.

절차

  • 인스턴스에 연결된 볼륨을 나열합니다.

    $ openstack server volume list <instance>
    +---------------------+----------+---------------------+-----------------------+
    | ID                  | Device   | Server ID           | Volume ID             |
    +---------------------+----------+---------------------+-----------------------+
    | 1f9dcb02-9a20-4a4b- | /dev/vda | ab96b635-1e63-4487- | 1f9dcb02-9a20-4a4b-9f |
    | 9f25-c7846a1ce9e8   |          | a85c-854197cd537b   | 25-c7846a1ce9e8       |
    +---------------------+----------+---------------------+-----------------------+

7.7. 인스턴스에서 볼륨 분리

인스턴스에서 볼륨을 분리할 수 있습니다.

참고

네트워크를 분리하면 모든 네트워크 포트가 분리됩니다. 인스턴스에 네트워크에 포트가 여러 개 있고 해당 포트 중 하나만 분리하려면 인스턴스 프로세스에서 포트 분리를 수행하여 포트를 분리합니다.

절차

  1. 인스턴스에 연결된 볼륨을 확인합니다.

    (overcloud)$ openstack server show <instance>
  2. 인스턴스에서 볼륨을 분리합니다.

    $ openstack server remove volume <instance> <volume>
    • <instance> 를 볼륨 제거하려는 인스턴스의 이름 또는 ID로 바꿉니다.
    • <volume> 을 인스턴스에서 제거하려는 볼륨의 이름 또는 ID로 바꿉니다.

      참고

      상태가 SHELVED 또는 SHELVE D_OFFLOADED 인 인스턴스에서 볼륨을 제거하려면 --os-compute-api-version 2.20 이상을 지정합니다.

8장. 인스턴스에 대한 공용 액세스 제공

새 인스턴스는 인스턴스가 할당된 네트워크에서 고정 IP 주소가 있는 포트를 자동으로 받습니다. 이 IP 주소는 개인용이며 인스턴스가 삭제될 때까지 영구적으로 인스턴스와 연결됩니다. 고정 IP 주소는 인스턴스 간 통신에 사용됩니다.

공용 인스턴스를 공용 IP 주소가 인스턴스에 직접 할당되는 공유 외부 네트워크에 직접 연결할 수 있습니다. 이 기능은 사설 클라우드에서 작업하는 경우 유용합니다.

외부 프로바이더 네트워크에 대한 라우팅된 연결이 있는 프로젝트 네트워크를 통해 인스턴스에 대한 공용 액세스를 제공할 수도 있습니다. 퍼블릭 클라우드에서 작업하는 경우 또는 공용 IP 주소가 제한된 경우 이 방법이 선호됩니다. 프로젝트 네트워크를 통해 공용 액세스를 제공하려면 게이트웨이가 외부 네트워크로 설정된 라우터에 프로젝트 네트워크를 연결해야 합니다. 외부 트래픽이 인스턴스에 연결하려면 클라우드 사용자가 유동 IP 주소를 인스턴스와 연결해야 합니다.

공유 외부 네트워크 또는 라우팅 공급자 네트워크에 연결되어 있는지 여부에 관계없이 인스턴스에 대한 액세스를 제공하려면 SSH, ICMP 또는 HTTP와 같은 필수 프로토콜에 대한 보안 그룹 규칙을 구성해야 합니다. 또한 인스턴스에 원격으로 액세스할 수 있도록 생성 중에 키 쌍을 인스턴스에 전달해야 합니다.

8.1. 사전 요구 사항

  • 외부 네트워크에는 유동 IP 주소를 제공하는 서브넷이 있어야 합니다.
  • 프로젝트 네트워크는 게이트웨이로 구성된 외부 네트워크가 있는 라우터에 연결되어 있어야 합니다.

8.2. 보안 그룹 및 키 쌍을 사용하여 인스턴스 액세스 보안

보안 그룹은 인스턴스를 ping할 수 있도록 하기 위해 ICMP와 같은 인스턴스에 대한 네트워크 및 프로토콜 액세스를 제어하는 IP 필터 규칙 집합이며, 인스턴스에 연결할 수 있도록 SSH를 제공합니다. 보안 그룹 규칙은 프로젝트 내의 모든 인스턴스에 적용됩니다.

모든 프로젝트에는 default라는 기본 보안 그룹이 있으며, 이 그룹은 인스턴스의 보안 그룹을 지정하지 않을 때 사용됩니다. 기본적으로 보안 그룹은 나가는 모든 트래픽을 허용하고 동일한 보안 그룹에서 인스턴스가 아닌 다른 소스에서 들어오는 모든 트래픽을 거부합니다. default 보안 그룹에 규칙을 추가하거나 프로젝트에 대한 새 보안 그룹을 만들 수 있습니다. 인스턴스를 생성하는 동안 하나 이상의 보안 그룹을 인스턴스에 적용할 수 있습니다. 실행 중인 인스턴스에 보안 그룹을 적용하려면 보안 그룹을 인스턴스에 연결된 포트에 적용합니다.

참고

인스턴스를 생성하는 동안에는 RBAC(역할 기반 액세스 제어)-공유 보안 그룹을 인스턴스에 직접 적용할 수 없습니다. RBAC-shared 보안 그룹을 인스턴스에 적용하려면 먼저 포트를 생성하고, 공유 보안 그룹을 해당 포트에 적용한 다음 해당 포트를 인스턴스에 할당해야 합니다. 포트에 보안 그룹 추가를 참조하십시오.

키 쌍은 인스턴스에 대한 원격 액세스를 활성화하기 위해 시작될 때 인스턴스에 삽입되는 SSH 또는 x509 자격 증명입니다. RHOSP에서 새 키 쌍을 만들거나 기존 키 쌍을 가져올 수 있습니다. 각 사용자에게는 하나 이상의 키 쌍이 있어야 합니다. 키 쌍은 여러 인스턴스에 사용할 수 있습니다.

참고

각 키 쌍은 프로젝트 대신 키 쌍을 생성하거나 가져온 개별 사용자에게 속하므로 프로젝트의 사용자 간에 키 쌍을 공유할 수 없습니다.

8.2.1. 보안 그룹 생성

새 보안 그룹을 만들어 프로젝트 내 인스턴스 및 포트에 적용할 수 있습니다.

절차

  1. 선택 사항: 필요한 보안 그룹이 아직 없는지 확인하려면 사용 가능한 보안 그룹 및 해당 규칙을 검토합니다.

    $ openstack security group list
    $ openstack security group rule list <sec_group>
    • <sec_group> 을 사용 가능한 보안 그룹 목록에서 검색한 보안 그룹의 이름 또는 ID로 바꿉니다.
  2. 보안 그룹을 만듭니다.

    $ openstack security group create mySecGroup
  3. 보안 그룹에 규칙을 추가합니다.

    $ openstack security group rule create --protocol <protocol> \
    [--dst-port <port-range>] \
    [--remote-ip <ip-address> | --remote-group <group>] \
    [--ingress | --egress] mySecGroup
    • <protocol> 을 인스턴스와 통신할 수 있는 프로토콜의 이름으로 바꿉니다.
    • 선택 사항: <port-range> 를 프로토콜에 대해 열 대상 포트 또는 포트 범위로 바꿉니다. IP 프로토콜 TCP, UDP 및 SCTP에 필요합니다. 지정된 프로토콜의 모든 포트를 허용하려면 -1 로 설정합니다.
    • 선택 사항: remote -ip를 사용하여 원격 IP 주소 블록을 지정하거나 --remote- group 을 사용하여 지정된 IP 주소에서만 액세스를 허용하여 규칙이 원격 그룹의 멤버인 인터페이스의 패킷에만 적용되도록 지정할 수 있습니다. --remote-ip 를 사용하는 경우 <ip-address> 를 원격 IP 주소 블록으로 바꿉니다. CIDR 표기법을 사용할 수 있습니다. --remote-group 을 사용하는 경우 <group> 을 기존 보안 그룹의 이름 또는 ID로 바꿉니다. 옵션을 지정하지 않으면 원격 IP 액세스 범위 기본값(IPv4 기본값)으로 모든 주소에 액세스할 수 있습니다. 0.0.0.0/0; IPv6 default: ::/0).
    • 프로토콜 규칙이 적용되는 네트워크 트래픽 방향(수신) 또는발신(Egress)에 지정합니다. 지정하지 않으면 기본값은 ingress 입니다.
  4. 인스턴스에 액세스할 수 있도록 허용하려는 모든 프로토콜에 대해 규칙을 생성할 때까지 3단계를 반복합니다. 다음 예제에서는 보안 그룹 mySecGroup 의 인스턴스에 대한 SSH 연결을 허용하는 규칙을 생성합니다.

    $ openstack security group rule create --protocol tcp \
     --dst-port 22 mySecGroup

8.2.2. 보안 그룹 규칙 업데이트

액세스할 수 있는 모든 보안 그룹의 규칙을 업데이트할 수 있습니다.

절차

  1. 규칙을 업데이트하려는 보안 그룹의 이름 또는 ID를 검색합니다.

    $ openstack security group list
  2. 보안 그룹에 적용해야 하는 규칙을 결정합니다.
  3. 보안 그룹에 규칙을 추가합니다.

    $ openstack security group rule create --protocol <protocol> \
    [--dst-port <port-range>] \
    [--remote-ip <ip-address> | --remote-group <group>] \
    [--ingress | --egress] <group_name>
    • <protocol> 을 인스턴스와 통신할 수 있는 프로토콜의 이름으로 바꿉니다.
    • 선택 사항: <port-range> 를 프로토콜에 대해 열 대상 포트 또는 포트 범위로 바꿉니다. IP 프로토콜 TCP, UDP 및 SCTP에 필요합니다. 지정된 프로토콜의 모든 포트를 허용하려면 -1 로 설정합니다.
    • 선택 사항: remote -ip를 사용하여 원격 IP 주소 블록을 지정하거나 --remote- group 을 사용하여 지정된 IP 주소에서만 액세스를 허용하여 규칙이 원격 그룹의 멤버인 인터페이스의 패킷에만 적용되도록 지정할 수 있습니다. --remote-ip 를 사용하는 경우 <ip-address> 를 원격 IP 주소 블록으로 바꿉니다. CIDR 표기법을 사용할 수 있습니다. --remote-group 을 사용하는 경우 <group> 을 기존 보안 그룹의 이름 또는 ID로 바꿉니다. 옵션을 지정하지 않으면 원격 IP 액세스 범위 기본값(IPv4 기본값)으로 모든 주소에 액세스할 수 있습니다. 0.0.0.0/0; IPv6 default: ::/0).
    • 프로토콜 규칙이 적용되는 네트워크 트래픽 방향(수신) 또는발신(Egress)에 지정합니다. 지정하지 않으면 기본값은 ingress 입니다.
    • <group_name> 을 규칙을 적용하려는 보안 그룹의 이름 또는 ID로 바꿉니다.
  4. 인스턴스에 액세스할 수 있도록 허용하려는 모든 프로토콜에 대해 규칙을 생성할 때까지 3단계를 반복합니다. 다음 예제에서는 보안 그룹 mySecGroup 의 인스턴스에 대한 SSH 연결을 허용하는 규칙을 생성합니다.

    $ openstack security group rule create --protocol tcp \
     --dst-port 22 mySecGroup

8.2.3. 보안 그룹 규칙 삭제

보안 그룹에서 규칙을 삭제할 수 있습니다.

절차

  1. 규칙이 적용되는 보안 그룹을 식별합니다.

    $ openstack security group list
  2. 보안 그룹과 연결된 규칙의 ID를 검색합니다.

    $ openstack security group show <sec-group>
  3. 규칙 또는 규칙을 삭제합니다.

    $ openstack security group rule delete <rule> [<rule> ...]

    <rule> 을 삭제할 규칙의 ID로 바꿉니다. 삭제할 규칙의 ID 목록을 공백으로 구분하여 지정하여 한 번에 둘 이상의 규칙을 삭제할 수 있습니다.

8.2.4. 포트에 보안 그룹 추가

기본 보안 그룹은 대체 보안 그룹을 지정하지 않는 인스턴스에 적용됩니다. 실행 중인 인스턴스의 포트에 대체 보안 그룹을 적용할 수 있습니다.

절차

  1. 보안 그룹을 적용하려는 인스턴스에서 포트를 확인합니다.

    $ openstack port list --server myInstancewithSSH
  2. 보안 그룹을 포트에 적용합니다.

    $ openstack port set --security-group <sec_group> <port>

    <sec_group> 을 실행 중인 인스턴스의 포트에 적용할 보안 그룹의 이름 또는 ID로 바꿉니다. 필요에 따라 --security-group 옵션을 두 번 이상 사용하여 여러 보안 그룹을 적용할 수 있습니다.

8.2.5. 포트에서 보안 그룹 제거

포트에서 보안 그룹을 제거하려면 먼저 모든 보안 그룹을 제거한 다음 포트에 할당하려는 보안 그룹을 다시 추가합니다.

절차

  1. 포트와 연결된 모든 보안 그룹을 나열하고 포트와 연결된 상태로 유지하려는 보안 그룹의 ID를 기록합니다.

    $ openstack port show <port>
  2. 포트와 연결된 모든 보안 그룹을 제거합니다.

    $ openstack port set --no-security-group <port>
  3. 보안 그룹을 포트에 다시 적용합니다.

    $ openstack port set --security-group <sec_group> <port>

    <sec_group> 을 실행 중인 인스턴스의 포트에 다시 적용하려는 보안 그룹의 ID로 바꿉니다. 필요에 따라 --security-group 옵션을 두 번 이상 사용하여 여러 보안 그룹을 적용할 수 있습니다.

8.2.6. 보안 그룹 삭제

포트와 연결되어 있지 않은 보안 그룹을 삭제할 수 있습니다.

절차

  1. 삭제할 보안 그룹의 이름 또는 ID를 검색합니다.

    $ openstack security group list
  2. 사용 가능한 포트 목록을 검색합니다.

    $ openstack port list
  3. 각 포트에서 연결된 보안 그룹을 확인합니다.

    $ openstack port show <port-uuid> -c security_group_ids

    삭제하려는 보안 그룹이 포트 중 하나와 연결되어 있는 경우 먼저 포트에서 보안 그룹을 제거해야 합니다. 자세한 내용은 포트에서 보안 그룹 제거를 참조하십시오.

  4. 보안 그룹을 삭제합니다.

    $ openstack security group delete <group> [<group> ...]

    <group> 을 삭제하려는 그룹의 ID로 바꿉니다. 삭제할 그룹의 ID 목록을 공백으로 구분하여 지정하여 한 번에 둘 이상의 그룹을 삭제할 수 있습니다.

8.2.7. 새 SSH 키 쌍 생성

프로젝트 내에서 사용할 새 SSH 키 쌍을 만들 수 있습니다.

참고

x509 인증서를 사용하여 Windows 인스턴스에 대한 키 쌍을 만듭니다.

절차

  1. 키 쌍을 생성하고 로컬 .ssh 디렉터리에 개인 키를 저장합니다.

    $ openstack keypair create <keypair> > ~/.ssh/<keypair>.pem

    <keypair> 를 새 키 쌍의 이름으로 바꿉니다.

  2. 개인 키를 보호합니다.

    $ chmod 600 ~/.ssh/<keypair>.pem

8.2.8. 기존 SSH 키 쌍 가져오기

새 키 쌍을 생성할 때 공개 키 파일을 제공하여 RHOSP(Red Hat OpenStack Platform) 외부에서 생성한 프로젝트로 SSH 키를 가져올 수 있습니다.

절차

  1. 기존 키 파일에서 키 쌍을 생성하고 local .ssh 디렉터리에 개인 키를 저장합니다.

    • 기존 공개 키 파일에서 키 쌍을 가져오려면 다음 명령을 입력합니다.

      $ openstack keypair create --public-key ~/.ssh/<public_key>.pub \
       <keypair> > ~/.ssh/<keypair>.pem
      • <public_key> 를 키 쌍을 생성하는 데 사용할 공개 키 파일의 이름으로 바꿉니다.
      • <keypair> 를 새 키 쌍의 이름으로 바꿉니다.
    • 기존 개인 키 파일에서 키 쌍을 가져오려면 다음 명령을 입력합니다.

      $ openstack keypair create --private-key ~/.ssh/<private_key> \
       <keypair> > ~/.ssh/<keypair>.pem
      • <private_key> 를 키 쌍을 생성하는 데 사용할 공개 키 파일의 이름으로 바꿉니다.
      • <keypair> 를 새 키 쌍의 이름으로 바꿉니다.
  2. 개인 키를 보호합니다.

    $ chmod 600 ~/.ssh/<keypair>.pem

8.2.9. 추가 리소스

8.3. 인스턴스에 유동 IP 주소 할당

공용 유동 IP 주소를 인스턴스에 할당하여 인터넷을 포함하여 클라우드 외부 네트워크와 통신할 수 있습니다. 클라우드 관리자는 외부 네트워크에 사용 가능한 유동 IP 주소 풀을 구성합니다. 이 풀의 유동 IP 주소를 프로젝트에 할당한 다음 유동 IP 주소를 인스턴스와 연결할 수 있습니다.

프로젝트에는 프로젝트의 인스턴스에서 사용할 수 있는 유동 IP 주소 할당량이 제한되어 있습니다(기본적으로 50개). 따라서 더 이상 필요하지 않은 경우 재사용을 위한 IP 주소를 릴리스합니다.

사전 요구 사항

  • 인스턴스는 외부 네트워크에 있거나 게이트웨이로 구성된 외부 네트워크가 있는 라우터에 연결된 프로젝트 네트워크에 있어야 합니다.
  • 인스턴스에서 연결할 외부 네트워크에는 유동 IP 주소를 제공할 서브넷이 있어야 합니다.

절차

  1. 현재 프로젝트에 할당된 유동 IP 주소를 확인합니다.

    $ openstack floating ip list

    사용할 수 있는 유동 IP 주소가 없는 경우 외부 네트워크 할당 풀에서 현재 프로젝트에 유동 IP 주소를 할당합니다.

    $ openstack floating ip create <provider-network>

    <provider-network> 를 외부 액세스를 제공하는 데 사용할 외부 네트워크의 이름 또는 ID로 바꿉니다.

    작은 정보

    기본적으로 유동 IP 주소는 외부 네트워크 풀에서 임의로 할당됩니다. 클라우드 관리자는 --floating-ip-address 옵션을 사용하여 외부 네트워크에서 특정 유동 IP 주소를 할당할 수 있습니다.

  2. 인스턴스에 유동 IP 주소를 할당합니다.

    $ openstack server add floating ip [--fixed-ip-address <ip_address>] \
     <instance> <floating_ip>
    • <instance> 를 공용 액세스 권한을 제공할 인스턴스의 이름 또는 ID로 바꿉니다.
    • <floating_ip> 를 인스턴스에 할당할 유동 IP 주소로 바꿉니다.
    • 선택 사항: <ip_address> 를 유동 IP를 연결할 인터페이스의 IP 주소로 바꿉니다. 기본적으로 유동 IP 주소를 첫 번째 포트에 연결합니다.
  3. 유동 IP 주소가 인스턴스에 할당되었는지 확인합니다.

    $ openstack server show <instance>

추가 리소스

8.4. 인스턴스에서 유동 IP 주소 연결 끊기

인스턴스에 더 이상 공용 액세스가 필요하지 않은 경우 인스턴스에서 연결을 끊고 할당 풀로 돌아갑니다.

절차

  1. 인스턴스에서 유동 IP 주소의 연결을 끊습니다.

    $ openstack server remove floating ip <instance> <ip_address>
    • <instance> 를 에서 공용 액세스를 제거할 인스턴스의 이름 또는 ID로 바꿉니다.
    • <floating_ip> 를 인스턴스에 할당된 유동 IP 주소로 바꿉니다.
  2. 유동 IP 주소를 할당 풀로 다시 릴리스합니다.

    $ openstack floating ip delete <ip_address>
  3. 유동 IP 주소가 삭제되고 더 이상 할당에 사용할 수 없는지 확인합니다.

    $ openstack floating ip list

8.5. SSH 액세스를 사용하여 인스턴스 생성

인스턴스를 만들 때 키 쌍을 지정하여 인스턴스에 대한 SSH 액세스를 제공할 수 있습니다. 키 쌍은 시작될 때 인스턴스에 삽입되는 SSH 또는 x509 자격 증명입니다. 각 프로젝트에는 하나 이상의 키 쌍이 있어야 합니다. 키 쌍은 프로젝트가 아닌 개별 사용자에 속합니다.

참고

인스턴스를 만든 후에는 키 쌍을 인스턴스와 연결할 수 없습니다.

인스턴스를 생성하는 동안 인스턴스에 직접 보안 그룹을 적용하거나 실행 중인 인스턴스의 포트에 적용할 수 있습니다.

참고

인스턴스를 생성하는 동안에는 RBAC(역할 기반 액세스 제어)-공유 보안 그룹을 인스턴스에 직접 적용할 수 없습니다. RBAC-shared 보안 그룹을 인스턴스에 적용하려면 먼저 포트를 생성하고, 공유 보안 그룹을 해당 포트에 적용한 다음 해당 포트를 인스턴스에 할당해야 합니다. 포트에 보안 그룹 추가를 참조하십시오.

사전 요구 사항

  • 를 사용하여 인스턴스에 대한 SSH 연결을 수행할 수 있는 키 쌍을 사용할 수 있습니다. 자세한 내용은 새 SSH 키 쌍 생성 을 참조하십시오.
  • 인스턴스를 만들려는 네트워크는 외부 네트워크 또는 게이트웨이로 구성된 외부 네트워크가 있는 라우터에 연결된 프로젝트 네트워크여야 합니다. 자세한 내용은 네트워킹 가이드라우터 추가를 참조하십시오.
  • 인스턴스에서 연결하는 외부 네트워크에는 유동 IP 주소를 제공하는 서브넷이 있어야 합니다.
  • 보안 그룹은 인스턴스에 대한 SSH 액세스를 허용합니다. 자세한 내용은 보안 그룹 및 키 쌍을 사용하여 인스턴스 액세스 보안을 참조하십시오.
  • 인스턴스에 기반하는 이미지에는 SSH 공개 키를 인스턴스에 삽입할 cloud-init 패키지가 포함되어 있습니다.
  • 유동 IP 주소를 인스턴스에 할당할 수 있습니다. 자세한 내용은 인스턴스에 유동 IP 주소 할당을 참조하십시오.

절차

  1. 인스턴스에 필요한 하드웨어 프로필이 있는 플레이버의 이름 또는 ID를 검색합니다.

    $ openstack flavor list
    참고

    이미지가 성공적으로 부팅될 수 있는 충분한 크기의 플레이버를 선택합니다. 그렇지 않으면 인스턴스가 시작되지 않습니다.

  2. 인스턴스에 필요한 소프트웨어 프로필이 있는 이미지의 이름 또는 ID를 검색합니다.

    $ openstack image list

    필요한 이미지를 사용할 수 없는 경우 새 이미지를 다운로드하거나 생성할 수 있습니다. 클라우드 이미지 생성 또는 다운로드에 대한 자세한 내용은 이미지 서비스를 참조하십시오.

  3. 인스턴스를 연결할 네트워크의 이름 또는 ID를 검색합니다.

    $ openstack network list
  4. 원격으로 인스턴스에 액세스하는 데 사용할 키 쌍의 이름을 검색합니다.

    $ openstack keypair list
  5. SSH 액세스를 사용하여 인스턴스를 생성합니다.

    $ openstack server create --flavor <flavor> \
      --image <image> --network <network> \
      [--security-group <secgroup>] \
      --key-name <keypair> --wait myInstancewithSSH
    • <flavor> 를 1단계에서 검색한 플레이버의 이름 또는 ID로 바꿉니다.
    • <image> 를 2단계에서 검색한 이미지의 이름 또는 ID로 바꿉니다.
    • <network> 를 3단계에서 검색한 네트워크의 이름 또는 ID로 바꿉니다. 필요에 따라 --network 옵션을 두 번 이상 사용하여 여러 네트워크에 인스턴스를 연결할 수 있습니다.
    • 선택 사항: 기본 보안 그룹은 대체 보안 그룹을 지정하지 않는 인스턴스에 적용됩니다. 인스턴스를 생성하는 동안 또는 실행 중인 인스턴스의 포트에 대체 보안 그룹을 직접 적용할 수 있습니다. 인스턴스를 생성할 때 --security-group 옵션을 사용하여 alternative 보안 그룹을 지정합니다. 실행 중인 인스턴스의 포트에 보안 그룹을 추가하는 방법에 대한 자세한 내용은 포트에 보안 그룹 추가를 참조하십시오.
    • <keypair> 를 4단계에서 검색한 키 쌍의 이름 또는 ID로 바꿉니다.
  6. 인스턴스에 유동 IP 주소를 할당합니다.

    $ openstack server add floating ip myInstancewithSSH <floating_ip>

    <floating_ip> 를 인스턴스에 할당할 유동 IP 주소로 바꿉니다.

  7. SSH를 사용하여 자동으로 생성된 cloud-user 계정을 사용하여 인스턴스에 로그인할 수 있는지 확인합니다.

    $ ssh -i ~/.ssh/<keypair>.pem cloud-user@<floatingIP>
    [cloud-user@demo-server1 ~]$

8.6. 추가 리소스

9장. 인스턴스에 연결

인스턴스 보안 그룹 규칙에 프로토콜이 허용된 경우 SSH 또는 WinRM과 같은 원격 쉘을 사용하여 클라우드 외부의 위치에서 인스턴스에 액세스할 수 있습니다. 또한 네트워크 연결이 실패하더라도 디버그할 수 있도록 인스턴스 콘솔에 직접 연결할 수도 있습니다.

참고

키 쌍을 인스턴스에 제공하지 않았거나 인스턴스에 보안 그룹을 할당하지 않은 경우 VNC를 사용하여 클라우드 내부에서만 인스턴스에 액세스할 수 있습니다. 인스턴스를 ping할 수 없습니다.

9.1. 인스턴스 콘솔에 액세스

브라우저에서 VNC 콘솔 URL을 입력하여 인스턴스의 VNC 콘솔에 직접 연결할 수 있습니다.

절차

  1. 인스턴스의 VNC 콘솔 URL을 표시하려면 다음 명령을 입력합니다.

    $ openstack console url show <vm_name>
    +-------+------------------------------------------------------+
    | Field | Value					     	        |
    +-------+------------------------------------------------------+
    | type  | novnc					               |
    | url	| http://172.25.250.50:6080/vnc_auto.html?token=       |
    |	| 962dfd71-f047-43d3-89a5-13cb88261eb9         	  |
    +-------+-------------------------------------------------------+
  2. VNC 콘솔에 직접 연결하려면 브라우저에 표시된 URL을 입력합니다.

9.2. 인스턴스에 로그인

공용 인스턴스에 원격으로 로그인할 수 있습니다.

사전 요구 사항

  • 인스턴스의 키 쌍 인증서가 있습니다. 키 쌍이 생성되면 인증서가 다운로드됩니다. 키 쌍을 직접 생성하지 않은 경우 관리자에게 문의하십시오.
  • 인스턴스는 공용 인스턴스로 구성됩니다. 공용 인스턴스의 요구 사항에 대한 자세한 내용은 인스턴스에 대한 공용 액세스 제공을 참조하십시오.
  • 클라우드 사용자 계정이 있어야 합니다.

절차

  1. 로그인하려는 인스턴스의 유동 IP 주소를 검색합니다.

    $ openstack server show <instance>

    <instance> 를 연결하려는 인스턴스의 이름 또는 ID로 바꿉니다.

  2. 자동으로 생성된 cloud-user 계정을 사용하여 인스턴스에 로그인합니다.

    $ ssh -i ~/.ssh/<keypair>.pem cloud-user@<floatingIP>
    [cloud-user@demo-server1 ~]$
    • <keypair> 를 키 쌍 이름으로 바꿉니다.
    • <floating_ip> 를 인스턴스의 유동 IP 주소로 바꿉니다.

      작은 정보

      다음 명령을 사용하여 유동 IP 주소 없이 인스턴스에 로그인할 수 있습니다.

      $ openstack server ssh --login cloud-user \
       --identity ~/.ssh/<keypair>.pem --private <instance>
      • <keypair> 를 키 쌍 이름으로 바꿉니다.
      • <instance> 를 연결하려는 인스턴스의 이름 또는 ID로 바꿉니다.

10장. 인스턴스 관리

인스턴스 크기 조정 또는 인스턴스 보류와 같은 관리 작업을 수행할 수 있습니다. 전체 관리 작업 목록은 인스턴스 관리 작업을 참조하십시오.

10.1. 인스턴스 크기 조정

인스턴스의 메모리 또는 CPU 수를 늘리거나 줄여야 하는 경우 인스턴스의 크기를 조정할 수 있습니다. 인스턴스의 크기를 조정하려면 필요한 용량이 있는 인스턴스의 새 플레이버를 선택합니다. 인스턴스 다시 빌드의 크기 조정 및 인스턴스를 다시 시작합니다.

절차

  1. 크기 조정하려는 인스턴스의 이름 또는 ID를 검색합니다.

    $ openstack server list
  2. 인스턴스의 크기를 조정하는 데 사용할 플레이버의 이름 또는 ID를 검색합니다.

    $ openstack flavor list
  3. 인스턴스 크기를 조정합니다.

    $ openstack server resize --flavor <flavor> \
      --wait <instance>
    • <flavor> 를 2단계에서 검색한 플레이버의 이름 또는 ID로 바꿉니다.
    • <instance> 를 크기 조정 중인 인스턴스의 이름 또는 ID로 바꿉니다.
    참고

    크기 조정에는 시간이 걸릴 수 있습니다. 인스턴스의 운영 체제는 인스턴스의 전원을 끄고 인스턴스의 크기를 조정하기 전에 제어된 종료를 수행합니다. 이 시간 동안 인스턴스 상태는 RESIZE 입니다.

    $ openstack server list
    +----------------------+----------------+--------+----------------------------+
    | ID                   | Name           | Status | Networks                                |
    +----------------------+----------------+--------+----------------------------+
    | 67bc9a9a-5928-47c... | myCirrosServer | RESIZE | admin_internal_net=192.168.111.139    |
    +----------------------+----------------+--------+----------------------------+
  4. 크기 조정이 완료되면 인스턴스 상태가 VERIFY_RESIZE 로 변경됩니다. 이제 크기 조정을 확인하거나 되돌립니다.

    • 크기 조정을 확인하려면 다음 명령을 입력합니다.

      $ openstack server resize confirm <instance>
    • 크기 조정을 되돌리려면 다음 명령을 입력합니다.

      $ openstack server resize revert <instance>

      인스턴스가 원래 플레이버로 되돌리고 상태가 ACTIVE 로 변경됩니다.

참고

구성된 기간 내에 확인 또는 되돌리지 않는 경우 인스턴스 크기 조정을 자동으로 확인하도록 클라우드를 구성할 수 있습니다.

10.2. 인스턴스 스냅샷 생성

스냅샷은 인스턴스의 실행 중인 디스크 상태를 캡처하는 이미지입니다. 인스턴스의 스냅샷을 작성하여 템플릿으로 사용할 수 있는 이미지를 만들어 새 인스턴스를 만들 수 있습니다. 스냅샷을 사용하면 다른 인스턴스에서 새 인스턴스를 생성하고 인스턴스의 상태를 복원할 수 있습니다. 스냅샷을 기반으로 하는 인스턴스를 삭제하는 경우 스냅샷 이미지를 사용하여 스냅샷과 동일한 상태에 대한 새 인스턴스를 만들 수 있습니다.

절차

  1. 스냅샷을 만들 인스턴스의 이름 또는 ID를 검색합니다.

    $ openstack server list
  2. 스냅샷을 생성합니다.

    $ openstack server image create --name <image_name> <instance>
    • <image_name> 을 새 스냅샷 이미지의 이름으로 바꿉니다.
    • <instance> 를 스냅샷을 만들 인스턴스의 이름 또는 ID로 바꿉니다.
  3. 선택 사항: 인스턴스 스냅샷을 템플릿으로 사용하여 새 인스턴스를 생성할 때 디스크 상태가 일관되게 유지되도록 QEMU 게스트 에이전트를 활성화하고 스냅숏 이미지에 다음 메타데이터를 추가하여 스냅샷 처리 중에 파일 시스템이 정지되도록 지정합니다.

    $ openstack image set --property hw_qemu_guest_agent=yes \
     --property os_require_quiesce=yes <image_name>

    QEMU 게스트 에이전트는 관리 애플리케이션에서 인스턴스 OS 수준 명령을 실행하는 데 도움이 되는 백그라운드 프로세스입니다. 이 에이전트를 활성화하면 PCI 슬롯을 사용하는 인스턴스에 다른 장치가 추가되고 인스턴스에 할당할 수 있는 다른 장치 수가 제한됩니다. 또한 Windows 인스턴스에서 알 수 없는 하드웨어 장치에 대한 경고 메시지를 표시합니다.

10.3. 인스턴스 복구

시스템 오류 또는 액세스 오류와 같은 긴급 상황에서 인스턴스를 복구 모드로 설정할 수 있습니다. 그러면 인스턴스가 종료되고 새 인스턴스 디스크로 재부팅되며 재부팅된 인스턴스에서 볼륨으로 원본 인스턴스 디스크 및 구성 드라이브를 마운트합니다. 재부팅된 인스턴스에 연결하여 원래 인스턴스 디스크를 보고 시스템을 복구하고 데이터를 복구할 수 있습니다.

참고

볼륨에서 부팅된 인스턴스를 복구할 수 없습니다.

절차

  1. 인스턴스 복구를 수행합니다.

    $ openstack server rescue [--image <image>] <instance>
    • 선택 사항: 기본적으로 인스턴스는 클라우드 관리자가 제공한 복구 이미지 또는 원래 인스턴스 이미지의 새 사본에서 부팅됩니다. --image 옵션을 사용하여 복구 모드에서 인스턴스를 재부팅할 때 사용할 대체 이미지를 지정합니다.
    • <instance> 를 복구하려는 인스턴스의 이름 또는 ID로 바꿉니다.
  2. rescued 인스턴스에 연결하여 문제를 해결합니다.
  3. 일반 부팅 디스크에서 인스턴스를 다시 시작합니다.

    $ openstack server unrescue <instance>

10.4. 인스턴스 보류

보류는 사용하지 않지만 삭제하지 않으려는 인스턴스가 있는 경우 유용합니다. 인스턴스를 보류하면 인스턴스 데이터와 리소스 할당을 유지하지만 인스턴스 메모리를 지웁니다. 클라우드 구성에 따라 보류된 인스턴스는 SHELVED_OFFLOADED 상태로 즉시 또는 시간 지연 후에 이동합니다. SHELVED_OFFLOADED 가 발생하면 인스턴스 데이터 및 리소스 할당이 삭제됩니다.

인스턴스를 보류하면 계산 서비스에서 인스턴스 상태를 캡처하는 스냅샷 이미지를 생성하고 <instance>-shelved 형식으로 이미지에 이름을 할당합니다. 이 스냅샷 이미지는 인스턴스를 보류 해제하거나 삭제할 때 삭제됩니다.

보류된 인스턴스가 더 이상 필요하지 않은 경우 삭제할 수 있습니다. 한 번에 두 개 이상의 인스턴스를 보류할 수 있습니다.

절차

  1. 보류하려는 인스턴스 또는 인스턴스의 이름 또는 ID를 검색합니다.

    $ openstack server list
  2. 인스턴스 또는 인스턴스를 보류합니다.

    $ openstack server shelve <instance> [<instance> ...]

    <instance> 를 보류하려는 인스턴스의 이름 또는 ID로 바꿉니다. 필요에 따라 보류할 두 개 이상의 인스턴스를 지정할 수 있습니다.

  3. 인스턴스가 보류되었는지 확인합니다.

    $ openstack server list

    보류된 인스턴스의 상태는 SHELVED_OFFLOADED 입니다.

10.5. 인스턴스 관리 작업

인스턴스를 생성한 후 다음 관리 작업을 수행할 수 있습니다.

표 10.1. 관리 운영

작업설명명령

인스턴스 중지

인스턴스를 중지합니다.

OpenStack 서버 중지

인스턴스 시작

중지된 인스턴스를 시작합니다.

OpenStack 서버 시작

실행 중인 인스턴스 일시 중지

실행 중인 인스턴스를 즉시 일시 중지합니다. 인스턴스의 상태는 메모리(RAM)에 저장됩니다. 일시 중지된 인스턴스는 정상적인 상태로 계속 실행됩니다. 일시 중지 작업을 확인하라는 메시지가 표시되지 않습니다.

OpenStack 서버 일시 중지

일시 중지된 인스턴스 실행 재개

일시 중지된 인스턴스를 즉시 다시 시작합니다. 재개 작업을 확인하라는 메시지가 표시되지 않습니다.

OpenStack 서버 일시 중지 해제

실행 중인 인스턴스 일시 중단

실행 중인 인스턴스를 즉시 일시 중단합니다. 인스턴스 상태는 인스턴스 디스크에 저장됩니다. 일시 중단 작업을 확인하라는 메시지가 표시되지 않습니다.

OpenStack 서버 일시 중지

일시 중단된 인스턴스 실행 재개

일시 중단된 인스턴스를 즉시 다시 시작합니다. 인스턴스 상태는 인스턴스 디스크에 저장됩니다. 재개 작업을 확인하라는 메시지가 표시되지 않습니다.

OpenStack 서버 재개

인스턴스 삭제

인스턴스를 영구적으로 삭제합니다. 삭제 작업을 확인하라는 메시지가 표시되지 않습니다. 삭제된 인스턴스는 클라우드가 소프트 삭제를 활성화하도록 구성되지 않은 경우 복구할 수 없습니다.

참고

인스턴스를 삭제해도 연결된 볼륨은 삭제되지 않습니다. 연결된 볼륨을 별도로 삭제해야 합니다. 자세한 내용은 스토리지 가이드 의 블록 스토리지 서비스 볼륨 삭제를 참조하십시오.

OpenStack server delete

인스턴스 메타데이터 편집

인스턴스 메타데이터를 사용하여 인스턴스의 속성을 지정할 수 있습니다. 자세한 내용은 사용자 지정 인스턴스 생성을 참조하십시오.

openstack server set --property <key=value> [--property <key=value>] <instance>

보안 그룹 추가

지정된 보안 그룹을 인스턴스에 추가합니다.

OpenStack 서버 추가 보안 그룹

보안 그룹 제거

인스턴스에서 지정된 보안 그룹을 제거합니다.

OpenStack에서 보안 그룹 제거

인스턴스 복구

시스템 오류 또는 액세스 오류와 같은 긴급 상황에서 인스턴스를 복구 모드로 설정할 수 있습니다. 그러면 인스턴스를 종료하고 루트 디스크를 임시 서버에 마운트합니다. 임시 서버에 연결하여 시스템을 복구하고 데이터를 복구할 수 있습니다.

실행 중인 인스턴스를 복구 모드로 재부팅할 수도 있습니다. 예를 들어 인스턴스 파일 시스템이 손상되면 이 작업이 필요할 수 있습니다.

참고

볼륨에서 부팅된 인스턴스를 복구할 수 없습니다.

OpenStack 서버 복구

복구된 인스턴스 복원

복구된 인스턴스를 재부팅합니다.

OpenStack 서버 복구되지 않음

인스턴스 로그 보기

인스턴스 콘솔 로그의 최신 섹션을 확인합니다.

OpenStack 콘솔 로그 표시

인스턴스 보류

인스턴스를 보류하면 인스턴스 데이터와 리소스 할당을 유지하지만 인스턴스 메모리를 지웁니다. 클라우드 구성에 따라 보류된 인스턴스는 SHELVED_OFFLOADED 상태로 즉시 또는 시간 지연 후에 이동합니다. 인스턴스가 SHELVED_OFFLOADED 상태에 있으면 인스턴스 데이터 및 리소스 할당이 삭제됩니다. 인스턴스 상태는 인스턴스 디스크에 저장됩니다. 인스턴스가 볼륨에서 부팅된 경우 SHELVED_OFFLOADED 로 즉시 이동합니다. shelve 작업을 확인하라는 메시지가 표시되지 않습니다.

OpenStack 서버 보류

인스턴스 보류 해제

보류된 인스턴스의 디스크 이미지를 사용하여 인스턴스를 복원합니다.

OpenStack 서버 보류 해제

인스턴스 잠금

관리자가 아닌 사용자가 인스턴스에서 작업을 실행하지 못하도록 인스턴스를 잠급니다.

OpenStack 서버 잠금

OpenStack 서버 잠금 해제

인스턴스 재부팅 소프트

인스턴스를 정상적으로 중지하고 다시 시작합니다. 소프트 재부팅은 인스턴스를 재시작하기 전에 모든 프로세스를 정상적으로 종료하려고 합니다. 기본적으로 인스턴스를 재부팅하면 소프트 재부팅입니다.

OpenStack server reboot --soft <server>

인스턴스 재부팅

인스턴스를 중지하고 다시 시작합니다. 하드 재부팅은 인스턴스의 전원을 종료한 다음 다시 켭니다.

OpenStack server reboot --hard <server>

인스턴스 다시 빌드

새 이미지 및 디스크 파티션 옵션을 사용하여 인스턴스를 다시 빌드합니다. 여기에는 인스턴스 종료, 재이미지 및 재부팅이 포함됩니다. 인스턴스를 종료하고 처음부터 다시 시작하는 대신 운영 체제 문제가 발생하는 경우 이 옵션을 사용합니다.

OpenStack 서버 다시 빌드

11장. 사용자 지정 인스턴스 생성

클라우드 사용자는 인스턴스가 부팅 시 실행되는 쉘 스크립트와 같이 인스턴스를 시작할 때 사용할 추가 데이터를 지정할 수 있습니다. 클라우드 사용자는 다음 방법을 사용하여 인스턴스에 데이터를 전달할 수 있습니다.

사용자 데이터
를 사용하여 실행할 cloud-init 에 대한 인스턴스 시작 명령에 지침을 포함합니다.
인스턴스 메타데이터
인스턴스를 만들거나 업데이트할 때 지정할 수 있는 키-값 쌍 목록입니다.

구성 드라이브 또는 메타데이터 서비스를 사용하여 인스턴스에 전달된 추가 데이터에 액세스할 수 있습니다.

설정 드라이브
부팅 시 구성 드라이브를 인스턴스에 연결할 수 있습니다. 구성 드라이브는 인스턴스에 읽기 전용 드라이브로 표시됩니다. 인스턴스에서 이 드라이브를 마운트하고 해당 드라이브에서 파일을 읽을 수 있습니다. 구성 드라이브를 cloud-init 정보의 소스로 사용할 수 있습니다. 구성 드라이브는 서버 부트스트랩을 위해 cloud-init 와 결합하고 대규모 파일을 인스턴스에 전달하려는 경우 유용합니다. 예를 들어 구성 드라이브를 자동으로 마운트하고 초기 인스턴스 부팅 중에 설정 스크립트를 실행하도록 cloud-init 를 구성할 수 있습니다. 구성 드라이브는 config-2 의 볼륨 레이블을 사용하여 생성되며 부팅 시 인스턴스에 연결됩니다. 구성 드라이브에 전달된 추가 파일의 내용은 구성 드라이브의 openstack/{version}/ 디렉터리에 있는 user_data 파일에 추가됩니다. cloud-init 는 이 파일에서 사용자 데이터를 검색합니다.
메타데이터 서비스
인스턴스와 관련된 데이터를 검색하기 위해 REST API를 제공합니다. 인스턴스는 169.254.169.254 또는 fe80::a9fe:a9fe에서 이 서비스에 액세스합니다.

cloud-init 는 구성 드라이브와 메타데이터 서비스를 둘 다 사용하여 인스턴스를 사용자 지정하는 데 추가 데이터를 사용할 수 있습니다. cloud-init 패키지는 여러 데이터 입력 형식을 지원합니다. 쉘 스크립트 및 cloud-config 형식은 가장 일반적인 입력 형식입니다.

  • 쉘 스크립트: 데이터 선언은 #! 또는 Content-Type: text/x-shellscript 로 시작됩니다. 쉘 스크립트는 부팅 프로세스 마지막에 호출됩니다.
  • cloud-config 형식: 데이터 선언은 #cloud-config 또는 Content-Type: text/cloud-config 로 시작됩니다.cloud-config 파일은 cloud-init 에서 구문 분석하고 실행할 수 있는 유효한 YAML이어야 합니다.
참고

cloud-init 는 인스턴스에 전달되는 데이터에 대해 최대 사용자 데이터 크기가 16384바이트입니다. 크기 제한을 변경할 수 없으므로 크기 제한을 초과해야 하는 경우 gzip 압축을 사용합니다.

벤더별 데이터

RHOSP 관리자는 데이터를 생성할 때 인스턴스에 데이터를 전달할 수도 있습니다. 이 데이터는 클라우드 사용자(예: Active Directory에 인스턴스를 등록하는 암호화 토큰)로 표시되지 않을 수 있습니다.

RHOSP 관리자는 vendordata 기능을 사용하여 데이터를 인스턴스에 전달합니다. Vendordata 구성은 읽기 전용이며 다음 파일 중 하나에 있습니다.

  • /openstack/{version}/vendor_data.json
  • /openstack/{version}/vendor_data2.json

메타데이터 서비스 또는 인스턴스의 구성 드라이브에서 이러한 파일을 볼 수 있습니다. 메타데이터 서비스를 사용하여 파일에 액세스하려면 http://169.254.169.254/openstack/{version}/vendor_data.json 또는 http://169.254.169.254/openstack/{version}/vendor_data2.json 에 GET 요청을 만드십시오.

11.1. 사용자 데이터를 사용하여 인스턴스 사용자 정의

사용자 데이터를 사용하여 인스턴스 시작 명령에 명령을 포함할 수 있습니다. cloud-init 는 이러한 명령을 실행하여 부팅 프로세스의 마지막 단계로 인스턴스를 사용자 지정합니다.

절차

  1. cloud-init 에 대한 지침으로 파일을 만듭니다. 예를 들어 인스턴스에서 웹 서버를 설치하고 활성화하는 bash 스크립트를 생성합니다.

    $ vim /home/scripts/install_httpd
    #!/bin/bash
    
    yum -y install httpd python-psycopg2
    systemctl enable httpd --now
  2. bash 스크립트를 전달하려면 user-data 옵션으로 인스턴스를 시작합니다.

    $ openstack server create \
    --image rhel8 \
    --flavor default \
    --nic net-id=web-server-network \
    --security-group default \
    --key-name web-server-keypair \
    --user-data /home/scripts/install_httpd \
    --wait web-server-instance
  3. 인스턴스 상태가 활성이면 유동 IP 주소를 연결합니다.

    $ openstack floating ip create web-server-network
    $ openstack server add floating ip web-server-instance 172.25.250.123
  4. SSH를 사용하여 인스턴스에 로그인합니다.

    $ ssh -i ~/.ssh/web-server-keypair cloud-user@172.25.250.123
  5. 사용자 지정이 성공적으로 수행되었는지 확인합니다. 예를 들어 웹 서버가 설치되고 활성화되어 있는지 확인하려면 다음 명령을 입력합니다.

    $ curl http://localhost | grep Test
    <title>Test Page for the Apache HTTP Server on Red Hat Enterprise Linux</title>
    <h1>Red Hat Enterprise Linux <strong>Test Page</strong></h1>
  6. cloud-init가 실행되었는지 여부와 같은 관련 메시지의 /var/log/cloud -init.log 파일을 검토합니다.

    $ sudo less /var/log/cloud-init.log
    ...output omitted...
    ...util.py[DEBUG]: Cloud-init v. 0.7.9 finished at Sat, 23 Jun 2018 02:26:02 +0000. Datasource DataSourceOpenStack [net,ver=2].  Up 21.25 seconds

11.2. 메타데이터를 사용하여 인스턴스 사용자 정의

인스턴스 메타데이터를 사용하여 instance launch 명령에서 인스턴스 속성을 지정할 수 있습니다.

절차

  1. property <key=value> 옵션을 사용하여 인스턴스를 시작합니다. 예를 들어 인스턴스를 웹 서버로 표시하려면 다음 속성을 설정합니다.

    $ openstack server create \
    --image rhel8 \
    --flavor default \
    --property role=webservers \
    --wait web-server-instance
  2. 선택 사항: 인스턴스에 추가 속성을 생성한 후 추가합니다. 예를 들면 다음과 같습니다.

    $ openstack server set \
    --property region=emea \
    --wait web-server-instance

11.3. 구성 드라이브를 사용하여 인스턴스 사용자 정의

인스턴스 부팅 프로세스 중에 연결된 인스턴스에 대한 구성 드라이브를 생성할 수 있습니다. 구성 드라이브가 인스턴스에서 사용할 수 있도록 하는 구성 드라이브에 콘텐츠를 전달할 수 있습니다.

절차

  1. 구성 드라이브를 활성화하고 구성 드라이브에서 사용할 수 있는 콘텐츠가 포함된 파일을 지정합니다. 예를 들어 다음 명령은 config-drive-instance 라는 새 인스턴스를 생성하고 my-user-data.txt 파일의 내용을 포함하는 구성 드라이브를 연결합니다.

    (overcloud)$ openstack server create --flavor m1.tiny \
      --config-drive true \
      --user-data ./my-user-data.txt \
      --image cirros config-drive-instance

    이 명령은 부팅 시 인스턴스에 연결된 config-2 볼륨 레이블을 사용하여 config 드라이브를 생성하고, my-user-data.txt 의 내용을 구성 드라이브의 openstack/{version}/ 디렉터리에 있는 user_data 파일에 추가합니다.

  2. 인스턴스에 로그인합니다.
  3. 구성 드라이브를 마운트합니다.

    • 인스턴스 OS에서 udev 를 사용하는 경우 :

      # mkdir -p /mnt/config
      # mount /dev/disk/by-label/config-2 /mnt/config
    • 인스턴스 OS가 udev 를 사용하지 않는 경우 먼저 구성 드라이브에 해당하는 블록 장치를 식별해야 합니다.

      # blkid -t LABEL="config-2" -odevice
      /dev/vdb
      # mkdir -p /mnt/config
      # mount /dev/vdb /mnt/config

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.