16.3. 컴퓨팅 노드 삭제

오버클라우드에서 컴퓨팅 노드를 삭제해야 하는 경우가 있을 수 있습니다. 예를 들면 문제가 있는 컴퓨팅 노드를 교체해야 할 수 있습니다.

중요

오버클라우드에서 컴퓨팅 노드를 삭제하기 전에 그 노드에서 다른 컴퓨팅 노드로 워크로드를 마이그레이션합니다. 자세한 내용은 Migrating virtual machine instances between Compute nodes를 참조하십시오.

사전 요구 사항

  • Placement 서비스 패키지 python3-osc-placement가 언더클라우드에 설치되어 있어야 합니다.

절차

  1. source 명령으로 오버클라우드 설정을 로드합니다.

    $ source ~/overcloudrc
  2. 노드에서 새 인스턴스가 예약되지 않도록 오버클라우드에서 발신 노드의 Compute 서비스를 비활성화합니다.

    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service set <hostname> nova-compute --disable
    작은 정보

    --disable-reason 옵션을 사용하여 서비스가 비활성화되는 이유에 대한 간단한 설명을 추가합니다. 이 작업은 나중에 Compute 서비스를 재배포하려는 경우에 유용합니다.

  3. source 명령으로 언더클라우드 설정을 로드합니다.

    (overcloud) $ source ~/stackrc
  4. 오버클라우드 스택의 UUID를 확인합니다.

    (undercloud) $ openstack stack list
  5. 삭제하려는 노드의 UUID 또는 호스트 이름을 확인합니다.

    (undercloud) $ openstack server list
  6. 배포와 관련된 모든 환경 파일을 포함하여 --update-plan-only 옵션을 사용하여 오버클라우드를 재배포합니다.

    $ openstack overcloud deploy --update-plan-only \
      --templates  \
      -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
      -e /home/stack/templates/network-environment.yaml \
      -e /home/stack/templates/storage-environment.yaml \
      -e /home/stack/templates/rhel-registration/environment-rhel-registration.yaml \
      [-e |...]
  7. 스택에서 노드를 삭제합니다.

    $ openstack overcloud node delete --stack [STACK_UUID] --templates -e [ENVIRONMENT_FILE] [NODE1_UUID] [NODE2_UUID] [NODE3_UUID]

    [node]를 노드의 UUID 또는 호스트 이름으로 변경합니다.

    중요

    UUID와 호스트 이름을 혼합하여 사용하지 마십시오. UUID만 사용하거나 호스트 이름만 사용하십시오.

  8. openstack overcloud node delete 명령 실행이 완전히 종료되었는지 확인합니다.

    (undercloud) $ openstack stack list

    삭제 작업이 완료되면 overcloud 스택의 상태가 UPDATE_COMPLETE로 표시됩니다.

    중요

    동일한 호스트 이름을 사용하여 Compute 서비스를 재배포하려는 경우 재배포된 노드에 기존 서비스 레코드를 사용해야 합니다. 이 경우에는 다음 절차의 나머지 단계를 생략하고 동일한 호스트 이름을 사용하여 Compute 서비스 재배포에 설명된 지침을 따르십시오.

  9. 노드의 Compute 서비스를 삭제합니다.

    (undercloud) $ source ~/overcloudrc
    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service delete <service-id>
  10. 노드의 Open vSwitch 에이전트를 삭제합니다.

    (overcloud) $ openstack network agent list
    (overcloud) $ openstack network agent delete <openvswitch-agent-id>
  11. 배치 서비스에서 리소스 공급자로 삭제된 Compute 서비스를 제거합니다.

    (overcloud) $ openstack resource provider list
    (overcloud) $ openstack resource provider delete <uuid>
  12. 노드 개수를 포함하는 환경 파일에서 ComputeCount 매개변수를 줄입니다. 일반적으로 이 파일의 이름은 node-info.yaml로 지정됩니다. 예를 들어 2개의 노드를 삭제한 경우 5개의 노드에서 3개의 노드 수를 줄입니다.

    parameter_defaults:
      ...
      ComputeCount: 3
      ...

    노드 개수를 줄이면 openstack overcloud deploy를 실행할 때 director에서 새 노드를 프로비저닝하지 않습니다.

오버클라우드에서 노드를 삭제하고 다른 용도로 노드를 다시 프로비저닝할 수 있습니다.

동일한 호스트 이름을 사용하여 Compute 서비스 재배포

비활성화된 Compute 서비스를 재배포하려면 동일한 호스트 이름을 가진 컴퓨팅 노드를 재배포한 후 Compute 서비스를 다시 활성화합니다.

절차

  1. 배치 서비스에서 리소스 공급자로 삭제된 Compute 서비스를 제거합니다.

    (undercloud) $ source ~/overcloudrc
    (overcloud) $ openstack resource provider list
    (overcloud) $ openstack resource provider delete <uuid>
  2. Compute 서비스의 상태를 확인합니다.

    (overcloud) $ openstack compute service list --long
    ...
    | ID | Binary       | Host                  | Zone  | Status   | State | Updated At                 | Disabled Reason      |
    | 80 | nova-compute | compute-1.localdomain | nova  | disabled | up    | 2018-07-13T14:35:04.000000 | gets re-provisioned |
    ...
  3. 재배포된 컴퓨팅 노드의 서비스 상태가 up으로 변경되면 서비스를 다시 활성화합니다.

    (overcloud) $ openstack compute service set compute-1.localdomain nova-compute --enable