Red Hat Training

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

15.7. 오버클라우드 생성 후 문제 해결

오버클라우드 생성 후 나중에 특정 오버클라우드 작업을 수행할 수 있습니다. 예를 들어 사용 가능한 노드를 확장하거나 문제가 있는 노드를 교체할 수 있습니다. 이러한 작업을 수행할 때 특정 문제가 발생할 수 있습니다. 이 섹션에서는 생성 후 작업 실패 문제를 진단하고 해결하는 몇 가지 조언을 제공합니다.

15.7.1. 오버클라우드 스택 수정

director를 통해 오버클라우드 스택을 수정할 때 문제가 발생할 수 있습니다. 스택 수정의 예는 다음과 같습니다.

  • 노드 확장
  • 노드 제거
  • 노드 교체

스택 수정은 요청된 노드 수의 가용성 확인, 추가 노드 프로비저닝 또는 기존 노드 제거 후 Puppet 구성을 적용한다는 점에서 스택 생성 프로세스와 유사합니다. 다음은 오버클라우드 스택을 수정할 때 따라야 하는 몇 가지 지침입니다.

초기 단계로 15.4.4절. “배포 후 구성” 의 조언을 따르십시오. 이러한 단계를 수행하면 오버클라우드 heat 스택 업데이트 관련 문제를 진단할 수 있습니다. 특히 다음 명령을 사용하여 문제가 있는 리소스를 식별합니다.

openstack stack list --show-nested
모든 스택을 나열합니다. --show-nested 는 모든 하위 스택과 해당 상위 스택을 표시합니다. 이 명령은 스택이 실패한 지점을 식별하는 데 도움이 됩니다.
OpenStack stack resource list overcloud
오버클라우드 스택의 모든 리소스와 해당 현재 상태를 나열합니다. 이를 통해 스택에서 오류가 발생하는 리소스를 식별하는 데 도움이 됩니다. heat 템플릿 컬렉션 및 Puppet 모듈의 각 매개변수 및 구성에 대한 이 리소스를 추적할 수 있습니다.
OpenStack 스택 이벤트 목록 오버클라우드
오버클라우드 스택과 관련된 모든 이벤트를 시간순으로 나열합니다. 여기에는 스택의 모든 리소스의 시작, 완료 및 실패가 포함됩니다. 이는 리소스 오류 지점을 식별하는 데 도움이 됩니다.

다음 몇 섹션에서는 특정 노드 유형에 대한 문제 진단 방법을 제공합니다.

15.7.2. Controller 서비스 오류

오버클라우드 컨트롤러 노드에는 대부분의 Red Hat OpenStack Platform 서비스가 포함되어 있습니다. 마찬가지로 고가용성 클러스터에서 여러 Controller 노드를 사용할 수 있습니다. 노드의 특정 서비스에 문제가 발생하면 고가용성 클러스터에서 특정 수준의 페일오버를 제공합니다. 그러나 오버클라우드가 전체 용량으로 작동하도록 결함이 있는 서비스를 진단해야 합니다.

컨트롤러 노드는 Pacemaker를 사용하여 고가용성 클러스터에서 리소스 및 서비스를 관리합니다. Pacemaker 구성 시스템(pcs) 명령은 Pacemaker 클러스터를 관리하는 툴입니다. 클러스터의 컨트롤러 노드에서 이 명령을 실행하여 구성 및 모니터링 기능을 수행합니다. 다음은 고가용성 클러스터에서 오버클라우드 서비스 문제를 해결하는 데 도움이 되는 몇 가지 명령입니다.

pcs status
활성화된 리소스, 실패한 리소스 및 온라인 노드를 포함하여 전체 클러스터에 대한 상태 개요를 제공합니다.
pcs resource show
리소스 목록 및 해당 노드를 표시합니다.
pcs resource disable [resource]
특정 리소스를 중지합니다.
pcs resource enable [resource]
특정 리소스를 시작합니다.
pcs cluster standby [node]
노드를 대기 모드로 전환합니다. 노드를 클러스터에서 더 이상 사용할 수 없습니다. 클러스터에 영향을 주지 않고 특정 노드에서 유지보수를 수행하는 데 유용합니다.
pcs cluster unstandby [node]
대기 모드에서 노드를 제거합니다. 이 노드는 클러스터에서 다시 사용할 수 있게 됩니다.

이러한 Pacemaker 명령을 사용하여 문제가 있는 구성 요소 및/또는 노드를 식별합니다. 구성 요소를 식별한 후 /var/log/ 에서 해당 구성 요소 로그 파일을 봅니다.

15.7.3. 컨테이너화된 서비스 오류

오버클라우드 배포 중 또는 이후에 컨테이너화된 서비스가 실패하면 다음 권장 사항을 사용하여 실패의 근본 원인을 확인합니다.

참고

이러한 명령을 실행하기 전에 오버클라우드 노드에 로그인하고 언더클라우드에서 이러한 명령을 실행하지 않았는지 확인합니다.

컨테이너 로그 확인

각 컨테이너는 메인 프로세스의 표준 출력을 유지합니다. 이 출력은 컨테이너 실행 중에 실제로 수행되는 작업을 결정하는 데 도움이 되는 로그 역할을 합니다. 예를 들어 keystone 컨테이너의 로그를 보려면 다음 명령을 사용합니다.

$ sudo docker logs keystone

대부분의 경우 이 로그는 컨테이너 오류의 원인을 제공합니다.

컨테이너 검사

컨테이너 정보를 확인해야 하는 경우가 있습니다. 예를 들어 다음 명령을 사용하여 keystone 컨테이너 데이터를 확인합니다.

$ sudo docker inspect keystone

이는 낮은 수준의 구성 데이터를 포함하는 JSON 오브젝트를 제공합니다. 출력을 jq 명령으로 전달하여 특정 데이터를 구문 분석할 수 있습니다. 예를 들어 keystone 컨테이너에 대한 컨테이너 마운트를 보려면 다음 명령을 실행합니다.

$ sudo docker inspect keystone | jq .[0].Mounts

또한 --format 옵션을 사용하여 단일 행에 대한 데이터를 구문 분석할 수 있으며 이는 컨테이너 데이터 세트에 대해 명령을 실행할 때 유용합니다. 예를 들어 keystone 컨테이너 실행에 사용된 옵션을 재생성하려면 --format 옵션과 함께 다음 inspect 명령을 사용합니다.

$ sudo docker inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}{{if .Mode}}:{{.Mode}}{{end}}{{end}} -ti {{.Config.Image}}' keystone
참고

--format 옵션은 쿼리를 생성할 때 Go 구문을 사용합니다.

이러한 옵션을 docker run 명령과 함께 사용하여 문제 해결을 위해 컨테이너를 다시 생성합니다.

$ OPTIONS=$( sudo docker inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}{{if .Mode}}:{{.Mode}}{{end}}{{end}} -ti {{.Config.Image}}' keystone )
$ sudo docker run --rm $OPTIONS /bin/bash

컨테이너에서 명령 실행

특정 Bash 명령을 통해 컨테이너 내부 정보를 가져와야 하는 경우가 있습니다. 이 경우 docker 명령을 사용하여 실행 중인 컨테이너 내에서 명령을 실행합니다. 예를 들어 keystone 컨테이너에서 명령을 실행하는 방법은 다음과 같습니다.

$ sudo docker exec -ti keystone <COMMAND>
참고

-ti 옵션은 대화식 가상 터미널(pseudoterminal)에서 명령을 실행합니다.

<COMMAND> 를 원하는 명령으로 바꿉니다. 예를 들어 각 컨테이너에는 서비스 연결을 확인하기 위한 상태 점검 스크립트가 있습니다. 다음 명령을 사용하여 keystone에 대해 상태 점검 스크립트를 실행할 수 있습니다.

$ sudo docker exec -ti keystone /openstack/healthcheck

컨테이너의 쉘에 액세스하려면 /bin/bash 를 명령으로 사용하여 docker exec 를 실행합니다.

$ sudo docker exec -ti keystone /bin/bash

컨테이너 내보내기

컨테이너가 실패하면 파일의 전체 콘텐츠를 확인해야 합니다. 이 경우 컨테이너의 전체 파일 시스템을 tar 아카이브로 내보낼 수 있습니다. 예를 들어 keystone 컨테이너 파일 시스템을 내보내려면 다음 명령을 실행합니다.

$ sudo docker export keystone -o keystone.tar

이 명령은 keystone.tar 아카이브를 생성하여 추출 및 확인할 수 있습니다.

15.7.4. Compute 서비스 오류

컴퓨팅 노드는 Compute 서비스를 사용하여 하이퍼바이저 기반 작업을 수행합니다. 따라서 컴퓨팅 노드에 대한 주요 진단은 이 서비스와 관련이 있습니다. 예를 들면 다음과 같습니다.

  • 컨테이너 상태를 표시합니다.

    $ sudo docker ps -f name=nova_compute
  • 컴퓨팅 노드의 주요 로그 파일은 /var/log/containers/nova/nova-compute.log입니다. 컴퓨팅 노드 통신에 문제가 발생하면 일반적으로 이 로그 파일을 사용하여 진단을 시작하는 것이 좋습니다.
  • 컴퓨팅 노드에서 유지보수를 수행할 때 기존 인스턴스를 호스트에서 운영 가능한 컴퓨팅 노드로 마이그레이션한 다음 해당 노드를 비활성화합니다. 자세한 내용은 Migrating virtual machine instances between Compute nodes를 참조하십시오.

15.7.5. Ceph Storage 서비스 오류

Red Hat Ceph Storage 클러스터에 발생하는 문제는 Red Hat Ceph Storage Configuration Guide"Logging Configuration Reference" 를 참조하십시오. 이 섹션에서는 모든 Ceph 스토리지 서비스에 대한 진단 로그 정보를 제공합니다.