17.7. 컨트롤러 노드 교체 트리거

기존 컨트롤러 노드를 삭제하고 새 컨트롤러 노드로 교체하려면 다음 단계를 완료합니다.

절차

  1. 삭제하려는 컨트롤러 노드의 UUID를 확인하고 < NODEID> 변수에 저장합니다. <node_name> 을 삭제하려는 노드 이름으로 교체해야 합니다.

    (undercloud)[stack@director ~]$ NODEID=$(openstack server list -f value -c ID --name <node_name>)
  2. Heat 리소스 ID를 식별하려면 다음 명령을 입력합니다.

    (undercloud)[stack@director ~]$ openstack stack resource show overcloud ControllerServers -f json -c attributes | jq --arg NODEID "$NODEID" -c '.attributes.value | keys[] as $k | if .[$k] == $NODEID then "Node index \($k) for \(.[$k])" else empty end'
  3. 환경 파일 ~/templates/remove-controller.yaml을 생성하고 삭제하려는 컨트롤러 노드의 노드 인덱스를 포함합니다.

    parameters:
      ControllerRemovalPolicies:
        [{'resource_list': ['<node_index>']}]
  4. 오버클라우드 배포 명령을 입력하고 remove-controller.yaml 환경 파일 및 해당 환경과 관련된 기타 환경 파일을 포함합니다.

    (undercloud) $ openstack overcloud deploy --templates \
        -e /home/stack/templates/remove-controller.yaml \
        [OTHER OPTIONS]
    참고
    • 배포 명령의 이 인스턴스에만 -e ~/templates/remove-controller.yaml을 포함합니다. 이후의 배포 작업에서는 이 환경 파일을 삭제합니다.
    • 부트스트랩 컨트롤러 노드를 교체하고 노드 이름을 유지하려면 ~/templates/bootstrap-controller.yaml을 포함합니다. 자세한 내용은 부트스트랩 컨트롤러 노드 교체를 참조하십시오.
  5. director에서 기존 노드를 삭제하고, 새 노드를 생성한 후 오버클라우드 스택을 업데이트합니다. 다음 명령을 사용하여 오버클라우드 스택의 상태를 확인할 수 있습니다.

    (undercloud)$ openstack stack list --nested
  6. 배포 명령이 완료되면 기존 노드가 새 노드로 교체되었는지 확인합니다.

    (undercloud) $ openstack server list -c Name -c Networks
    +------------------------+-----------------------+
    | Name                   | Networks              |
    +------------------------+-----------------------+
    | overcloud-compute-0    | ctlplane=192.168.0.44 |
    | overcloud-controller-0 | ctlplane=192.168.0.47 |
    | overcloud-controller-2 | ctlplane=192.168.0.46 |
    | overcloud-controller-3 | ctlplane=192.168.0.48 |
    +------------------------+-----------------------+

    이제 새 노드에서 컨트롤 플레인 서비스를 실행합니다.