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

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

절차

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

    $ NODEID=$(openstack server list -f value -c ID --name NODE_NAME)
  2. Heat 리소스 ID를 식별하려면 다음 명령을 입력합니다.

    $ 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 \
        -e /home/stack/templates/node-info.yaml \
        [OTHER OPTIONS]
    참고

    배포 명령의 이 인스턴스에만 -e ~/templates/remove-controller.yaml을 포함합니다. 이후의 배포 작업에서는 이 환경 파일을 삭제합니다.

  5. director에서 기존 노드를 삭제하고, 새 노드를 생성한 후 오버클라우드 스택을 업데이트합니다. 다음 명령을 사용하여 오버클라우드 스택의 상태를 확인할 수 있습니다.

    (undercloud) $ openstack stack list --nested
  6. 배포 명령이 완료되면 director에 기존 노드가 새 노드로 교체되었다고 표시됩니다.

    (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 |
    +------------------------+-----------------------+

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