17.4. 컨트롤러 노드 교체

컨트롤러 노드를 교체하려면 교체할 노드의 인덱스를 확인합니다.

  • 노드가 가상 노드인 경우 오류가 발생한 디스크를 포함하는 노드를 확인하고 백업에서 디스크를 복원합니다. 오류가 발생한 서버에서 PXE 부팅에 사용되는 NIC의 MAC 주소가 디스크 교체 후에도 동일하게 유지되는지 확인합니다.
  • 노드가 베어 메탈 노드인 경우 디스크를 교체하고, 오버클라우드 구성을 사용하여 새 디스크를 준비한 후 새 하드웨어에서 노드 인트로스펙션을 수행합니다.
  • 노드가 펜싱 기능이 있는 고가용성 클러스터에 속하는 경우 Galera 노드를 별도로 복구해야 할 수 있습니다. 자세한 내용은 How Galera works and how to rescue Galera clusters in the context of Red Hat OpenStack Platform 문서를 참조하십시오.

overcloud-controller-1 노드를 overcloud-controller-3 노드로 교체하려면 다음 예제 단계를 완료합니다. overcloud-controller-3 노드의 ID는 75b25e9a-948d-424a-9b3b-f0ef70a6eacf입니다.

중요

노드를 기존 베어 메탈 노드로 교체하려면 director가 노드를 자동으로 다시 프로비저닝하지 않도록 발신 노드에서 유지보수 모드를 활성화합니다.

중요

오버클라우드 컨트롤러를 교체하면 노드 간에 swift ring이 달라집니다. 그러면 Object Storage 서비스의 가용성이 줄어들 수 있습니다. 이는 알려진 문제입니다. 이 문제가 발생하면 SSH를 사용하여 기존 컨트롤러 노드에 로그인하고, 업데이트된 ring을 배포한 다음, Object Storage컨테이너를 다시 시작합니다.

(undercloud) [stack@undercloud-0 ~]$ source stackrc
(undercloud) [stack@undercloud-0 ~]$ nova list
...
| 3fab687e-99c2-4e66-805f-3106fb41d868 | controller-1 | ACTIVE | -          | Running     | ctlplane=192.168.24.17 |
| a87276ea-8682-4f27-9426-6b272955b486 | controller-2 | ACTIVE | -          | Running     | ctlplane=192.168.24.38 |
| a000b156-9adc-4d37-8169-c1af7800788b | controller-3 | ACTIVE | -          | Running     | ctlplane=192.168.24.35 |
...

(undercloud) [stack@undercloud-0 ~]$ for ip in 192.168.24.17 192.168.24.38 192.168.24.35; do ssh $ip 'sudo podman restart swift_copy_rings ; sudo podman restart $(sudo podman ps -a --format="{{.Names}}" --filter="name=swift_*")'; done

절차

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. overcloud-controller-1 노드의 인덱스를 확인합니다.

    $ INSTANCE=$(openstack server list --name overcloud-controller-1 -f value -c ID)
  3. 인스턴스와 연결된 베어 메탈 노드를 확인합니다.

    $ NODE=$(openstack baremetal node list -f csv --quote minimal | grep $INSTANCE | cut -f1 -d,)
  4. 노드를 유지보수 모드로 설정합니다.

    $ openstack baremetal node maintenance set $NODE
  5. 컨트롤러 노드가 가상 노드인 경우 컨트롤러 호스트에서 다음 명령을 실행하여 백업에 있는 가상 디스크를 교체합니다.

    $ cp <VIRTUAL_DISK_BACKUP> /var/lib/libvirt/images/<VIRTUAL_DISK>

    <VIRTUAL_DISK_BACKUP>을 오류가 발생한 가상 디스크의 백업 경로로 교체하고, <VIRTUAL_DISK>를 교체할 가상 디스크 이름으로 교체합니다.

    발신 노드 백업이 없는 경우 가상화된 노드를 사용해야 합니다.

    컨트롤러 노드가 베어 메탈 노드인 경우 다음 단계를 완료하여 디스크를 새 베어 메탈 디스크로 교체합니다.

    1. 물리 하드 드라이브 또는 솔리드 스테이트 드라이브를 교체합니다.
    2. 오류가 발생한 노드와 동일한 구성으로 노드를 준비합니다.
  6. 연결되지 않은 노드를 나열하고 새 노드의 ID를 확인합니다.

    $ openstack baremetal node list --unassociated
  7. 새 노드를 control 프로필로 태그합니다.

    (undercloud) $ openstack baremetal node set --property capabilities='profile:control,boot_option:local' 75b25e9a-948d-424a-9b3b-f0ef70a6eacf