Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

12.3. 컴퓨팅 노드 제거 또는 교체

경우에 따라 오버클라우드에서 컴퓨팅 노드를 삭제해야 합니다. 예를 들면 문제가 있는 컴퓨팅 노드를 교체해야 할 수 있습니다. 컴퓨팅 노드를 삭제하면 확장 작업 중에 인덱스가 재사용되지 않도록 노드의 인덱스가 기본적으로 거부 목록에 추가됩니다.

오버클라우드 배포에서 노드를 삭제한 후 삭제된 컴퓨팅 노드를 교체할 수 있습니다.

사전 요구 사항

  • 제거하려는 노드에서 Compute 서비스가 비활성화되어 노드가 새 인스턴스가 예약되지 않습니다. Compute 서비스가 비활성화되었는지 확인하려면 다음 명령을 사용하십시오.

    (overcloud)$ openstack compute service list

    Compute 서비스를 비활성화하지 않으면 비활성화합니다.

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

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

  • 컴퓨팅 노드의 워크로드가 다른 컴퓨팅 노드로 마이그레이션되었습니다. 자세한 내용은 Migrating virtual machine instances between Compute nodes를 참조하십시오.
  • Instance HA가 활성화된 경우 다음 옵션 중 하나를 선택합니다.

    • 컴퓨팅 노드에 액세스할 수 있으면 root 사용자로 컴퓨팅 노드에 로그인하고 shutdown -h now 명령을 사용하여 완전히 종료합니다.
    • 컴퓨팅 노드에 액세스할 수 없는 경우 컨트롤러 노드에 root 사용자로 로그인하여 컴퓨팅 노드의 STONITH 장치를 비활성화한 다음 베어 메탈 노드를 종료합니다.

      [root@controller-0 ~]# pcs stonith disable <stonith_resource_name>
      [stack@undercloud ~]$ source stackrc
      [stack@undercloud ~]$ openstack baremetal node power off <UUID>

절차

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

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

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

    (undercloud)$ openstack server list
  4. 선택 사항: --update-plan-only 옵션과 함께 overcloud deploy 명령을 실행하여 템플릿에서 최신 구성으로 플랜을 업데이트합니다. 이렇게 하면 컴퓨팅 노드를 삭제하기 전에 오버클라우드 구성이 최신 상태로 유지됩니다.

    $ 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 |...]
    참고

    오버클라우드 노드 거부 목록을 업데이트한 경우 이 단계가 필요합니다. 오버클라우드 노드를 거부 목록에 추가하는 방법에 대한 자세한 내용은 노드 블랙리스트 지정을 참조하십시오.

  5. 스택에서 컴퓨팅 노드를 삭제합니다.

    $ openstack overcloud node delete --stack <overcloud> \
     <node_1> ... [node_n]
    • <overcloud>를 오버클라우드 스택의 이름 또는 UUID로 바꿉니다.
    • & lt;node_1 >을 바꾸고 선택적으로 [node_n] 까지 모든 노드를 삭제하려는 컴퓨팅 노드의 Compute 서비스 호스트 이름 또는 UUID로 바꿉니다. UUID와 호스트 이름을 혼합하여 사용하지 마십시오. UUID만 사용하거나 호스트 이름만 사용하십시오.

      참고

      노드의 전원이 이미 꺼진 경우 이 명령은 WARNING 메시지를 반환합니다.

      Ansible failed, check log at /var/lib/mistral/overcloud/ansible.log
      WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.

      이 메시지는 무시해도 됩니다.

  6. 컴퓨팅 노드가 삭제될 때까지 기다립니다.
  7. 노드 삭제가 완료되면 오버클라우드 스택의 상태를 확인합니다.

    (undercloud)$ openstack stack list

    표 12.2. 결과

    상태설명

    UPDATE_COMPLETE

    삭제 작업이 성공적으로 완료되었습니다.

    UPDATE_FAILED

    삭제 작업이 실패했습니다.

    삭제에 실패한 일반적인 이유는 삭제 작업을 삭제하려는 노드의 IPMI 인터페이스에 연결할 수 없기 때문입니다.

    삭제 작업이 실패하면 컴퓨팅 노드를 수동으로 삭제해야 합니다. 자세한 내용은 컴퓨팅 노드 수동 제거를 참조하십시오.

  8. 인스턴스 HA가 활성화된 경우 다음 작업을 수행합니다.

    1. 노드의 Pacemaker 리소스를 정리합니다.

      $ sudo pcs resource delete <scaled_down_node>
      $ sudo cibadmin -o nodes --delete --xml-text '<node id="<scaled_down_node>"/>'
      $ sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<scaled_down_node>"/>'
      $ sudo cibadmin -o status --delete --xml-text '<node_state id="<scaled_down_node>"/>'
      $ sudo cibadmin -o status --delete-all --xml-text '<node id="<scaled_down_node>"/>' --force
    2. 노드의 STONITH 장치를 삭제합니다.

      $ sudo pcs stonith delete <device-name>
  9. 오버클라우드에서 삭제된 Compute 노드를 교체하지 않는 경우 노드 수가 포함된 환경 파일의 ComputeCount 매개변수를 줄입니다. 일반적으로 이 파일의 이름은 node-info.yaml로 지정됩니다. 예를 들어 한 노드를 삭제한 경우 노드 수를 4개의 노드에서 3개의 노드로 줄입니다.

    parameter_defaults:
      ...
      ComputeCount: 3

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

    오버클라우드 배포에서 삭제된 컴퓨팅 노드를 교체하는 경우 삭제된 컴퓨팅 노드 배치를 참조하십시오.

12.3.1. 컴퓨팅 노드 수동 제거

연결할 수 없는 노드로 인해 openstack overcloud node delete 명령이 실패한 경우 오버클라우드에서 컴퓨팅 노드 제거를 수동으로 완료해야 합니다.

사전 요구 사항

절차

  1. 오버클라우드 스택의 UUID를 확인합니다.

    (undercloud)$ openstack stack list
  2. 수동으로 삭제하려는 노드의 UUID를 확인합니다.

    (undercloud)$ openstack baremetal node list
  3. 삭제할 노드를 유지보수 모드로 이동합니다.

    (undercloud)$ openstack baremetal node maintenance set <node_uuid>
  4. Compute 서비스가 베어 메탈 서비스와 상태를 동기화할 때까지 기다립니다. 이 작업은 최대 4분이 걸릴 수 있습니다.
  5. source 명령으로 오버클라우드 설정을 로드합니다.

    (undercloud)$ source ~/overcloudrc
  6. 삭제한 노드의 네트워크 에이전트를 삭제합니다.

    (overcloud)$ for AGENT in $(openstack network agent list --host <scaled_down_node> -c ID -f value) ; do openstack network agent delete $AGENT ; done

    <scaled_down_node>를 제거할 노드 이름으로 바꿉니다.

  7. 노드에서 새 인스턴스가 예약되지 않도록 오버클라우드의 삭제된 노드에서 Compute 서비스가 비활성화되었는지 확인합니다.

    (overcloud)$ openstack compute service list

    Compute 서비스를 비활성화하지 않으면 비활성화합니다.

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

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

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

    (overcloud)$ source ~/stackrc
  9. 스택에서 컴퓨팅 노드를 삭제합니다.

    (undercloud)$ openstack overcloud node delete --stack <overcloud> <node>
    • <overcloud>를 오버클라우드 스택의 이름 또는 UUID로 바꿉니다.
    • & lt;node >를 삭제하려는 컴퓨팅 노드의 Compute 서비스 호스트 이름 또는 UUID로 바꿉니다.

      참고

      노드의 전원이 이미 꺼진 경우 이 명령은 WARNING 메시지를 반환합니다.

      Ansible failed, check log at /var/lib/mistral/overcloud/ansible.log
      WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.

      이 메시지는 무시해도 됩니다.

  10. 오버클라우드 노드가 삭제될 때까지 기다립니다.
  11. 노드 삭제가 완료되면 오버클라우드 스택의 상태를 확인합니다.

    (undercloud)$ openstack stack list

    표 12.3. 결과

    상태설명

    UPDATE_COMPLETE

    삭제 작업이 성공적으로 완료되었습니다.

    UPDATE_FAILED

    삭제 작업이 실패했습니다.

    유지보수 모드에서 오버클라우드 노드가 삭제되지 않으면 하드웨어에 문제가 있을 수 있습니다.

  12. 인스턴스 HA가 활성화된 경우 다음 작업을 수행합니다.

    1. 노드의 Pacemaker 리소스를 정리합니다.

      $ sudo pcs resource delete <scaled_down_node>
      $ sudo cibadmin -o nodes --delete --xml-text '<node id="<scaled_down_node>"/>'
      $ sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<scaled_down_node>"/>'
      $ sudo cibadmin -o status --delete --xml-text '<node_state id="<scaled_down_node>"/>'
      $ sudo cibadmin -o status --delete-all --xml-text '<node id="<scaled_down_node>"/>' --force
    2. 노드의 STONITH 장치를 삭제합니다.

      $ sudo pcs stonith delete <device-name>
  13. 오버클라우드에서 삭제된 Compute 노드를 교체하지 않는 경우 노드 수가 포함된 환경 파일의 ComputeCount 매개변수를 줄입니다. 일반적으로 이 파일의 이름은 node-info.yaml로 지정됩니다. 예를 들어 한 노드를 삭제한 경우 노드 수를 4개의 노드에서 3개의 노드로 줄입니다.

    parameter_defaults:
      ...
      ComputeCount: 3
      ...

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

    오버클라우드 배포에서 삭제된 컴퓨팅 노드를 교체하는 경우 삭제된 컴퓨팅 노드 배치를 참조하십시오.

12.3.2. 삭제된 Compute 노드 교체

오버클라우드 배포에서 삭제된 컴퓨팅 노드를 교체하려면 새 컴퓨팅 노드를 등록 및 검사하거나 삭제된 컴퓨팅 노드를 다시 추가할 수 있습니다. 또한 노드를 프로비저닝하도록 오버클라우드를 설정해야 합니다.

절차

  1. 선택 사항: 삭제된 컴퓨팅 노드의 인덱스를 재사용하려면 컴퓨팅 노드가 제거될 때 거부 목록을 대체하도록 역할의 removalPoliciesMode 및 removalPolicies 매개변수를 구성합니다.

    parameter_defaults:
      <RoleName>RemovalPoliciesMode: update
      <RoleName>RemovalPolicies: [{'resource_list': []}]
  2. 삭제된 컴퓨팅 노드를 교체합니다.

    • 새 컴퓨팅 노드를 추가하려면 새 노드를 등록, 검사, 태그를 지정하여 프로비저닝을 준비합니다. 자세한 내용은 기본 오버클라우드 설정을 참조하십시오.
    • 수동으로 제거한 컴퓨팅 노드를 다시 추가하려면 유지보수 모드에서 노드를 삭제합니다.

      (undercloud)$ openstack baremetal node maintenance unset <node_uuid>
  3. 기존 오버클라우드를 배포하는 데 사용한 openstack overcloud deploy 명령을 재실행합니다.
  4. 배포 프로세스가 완료될 때까지 기다립니다.
  5. director가 새 컴퓨팅 노드를 성공적으로 등록했는지 확인합니다.

    (undercloud)$ openstack baremetal node list
  6. 역할 업데이트를 위해 Removed PoliciesMode 를 설정하기 위해 1단계를 수행한 경우, 컴퓨팅 노드가 제거될 때 현재 거부 목록에 해당 역할에 대한 Removed PoliciesMode 를 재설정하고, 를 추가하여 Compute 노드 인덱스를 현재 거부 목록에 추가해야 합니다.

    parameter_defaults:
      <RoleName>RemovalPoliciesMode: append
  7. 기존 오버클라우드를 배포하는 데 사용한 openstack overcloud deploy 명령을 재실행합니다.