

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 클러스터 배포 문제 해결
<a name="troubleshooting-v3-cluster-deployment"></a>

클러스터 생성에 실패하고 스택 생성을 롤백하는 경우 로그 파일을 살펴보고 문제를 진단할 수 있습니다. 실패 메시지는 다음 출력과 같을 수 있습니다.

```
$ pcluster create-cluster --cluster-name mycluster --region eu-west-1 \
 --cluster-configuration cluster-config.yaml
{
  "cluster": {
    "clusterName": "mycluster",
    "cloudformationStackStatus": "CREATE_IN_PROGRESS",
    "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f01-11ec-a3b9-024fcc6f3387",
    "region": "eu-west-1",
    "version": "3.15.0",
    "clusterStatus": "CREATE_IN_PROGRESS"
  }
}

$ pcluster describe-cluster --cluster-name mycluster --region eu-west-1
{
  "creationTime": "2021-09-06T11:03:47.696Z",
  ...
  "cloudFormationStackStatus": "ROLLBACK_IN_PROGRESS",
  "clusterName": "mycluster",
  "computeFleetStatus": "UNKNOWN",
  "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f01-11ec-a3b9-024fcc6f3387",
  "lastUpdatedTime": "2021-09-06T11:03:47.696Z",
  "region": "eu-west-1",
  "clusterStatus": "CREATE_FAILED"
}
```

**Topics**
+ [에서 CloudFormation 이벤트 보기 `CREATE_FAILED`](#troubleshooting-v3-cluster-deployment-events)
+ [CLI를 사용하여 로그 스트림을 볼 수 있습니다.](#troubleshooting-v3-cluster-deployment-cli-logstreams)
+ [`rollback-on-failure`을 사용하여 실패한 클러스터를 다시 생성합니다.](#troubleshooting-v3-cluster-deployment-cli-fail-rollback)

## 에서 CloudFormation 이벤트 보기 `CREATE_FAILED`
<a name="troubleshooting-v3-cluster-deployment-events"></a>

콘솔 또는 AWS ParallelCluster CLI를 사용하여 `CREATE_FAILED` 오류에 대한 CloudFormation 이벤트를 보고 근본 원인을 찾을 수 있습니다.

**Topics**
+ [CloudFormation 콘솔에서 이벤트 보기](#troubleshooting-v3-cluster-deployment-cloudformation)
+ [CLI를 사용하여 `CREATE_FAILED`의 CloudFormation 이벤트를 보고 필터링할 수 있습니다.](#troubleshooting-v3-cluster-deployment-cli-events)

### CloudFormation 콘솔에서 이벤트 보기
<a name="troubleshooting-v3-cluster-deployment-cloudformation"></a>

CloudFormation 콘솔을 사용하여 `"CREATE_FAILED"` 상태를 일으킨 원인에 대한 자세한 내용을 확인할 수 있습니다.

**콘솔에서 CloudFormation 오류 메시지를 확인합니다.**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 이동합니다.

1. 이름이 *cluster\$1name*인 스택을 선택합니다.

1. **이벤트** 탭을 선택합니다.

1. **논리적 ID**별로 리소스 이벤트 목록을 스크롤하여 생성에 실패한 리소스의 **상태**를 확인합니다. 하위 작업을 만들지 못한 경우 역방향으로 진행하여 실패한 리소스 이벤트를 찾아보세요.

1. 예를 들어, 다음 상태 메시지가 표시되면 현재 vCPU 한도를 초과하지 않는 인스턴스 유형을 사용하거나 vCPU 용량을 더 요청해야 합니다.

   ```
   2022-02-04 16:09:44 UTC-0800	HeadNode	CREATE_FAILED	You have requested more vCPU capacity than your current vCPU limit of 0 allows 
        for the instance bucket that the specified instance type belongs to. Please visit http://aws.amazon.com/contact-us/ec2-request to request an adjustment to this limit. 
        (Service: AmazonEC2; Status Code: 400; Error Code: VcpuLimitExceeded; Request ID: a9876543-b321-c765-d432-dcba98766789; Proxy: null).
   ```

### CLI를 사용하여 `CREATE_FAILED`의 CloudFormation 이벤트를 보고 필터링할 수 있습니다.
<a name="troubleshooting-v3-cluster-deployment-cli-events"></a>

클러스터 생성 문제를 진단하려면 `CREATE_FAILED` 상태를 필터링하여 [`pcluster get-cluster-stack-events`](pcluster.get-cluster-stack-events-v3.md) 명령을 사용할 수 있습니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 출력 필터링](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-filter.html)을 참조하세요.

```
$ pcluster get-cluster-stack-events --cluster-name mycluster --region eu-west-1 \
    --query 'events[?resourceStatus==`CREATE_FAILED`]'
  [
    {
      "eventId": "3ccdedd0-0f03-11ec-8c06-02c352fe2ef9",
      "physicalResourceId": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f02-11ec-a3b9-024fcc6f3387",
      "resourceStatus": "CREATE_FAILED",
      "resourceStatusReason": "The following resource(s) failed to create: [HeadNode]. ",
      "stackId": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f02-11ec-a3b9-024fcc6f3387",
      "stackName": "mycluster",
      "logicalResourceId": "mycluster",
      "resourceType": "AWS::CloudFormation::Stack",
      "timestamp": "2021-09-06T11:11:51.780Z"
    },
    {
      "eventId": "HeadNode-CREATE_FAILED-2021-09-06T11:11:50.127Z",
      "physicalResourceId": "i-04e91cc1f4ea796fe",
      "resourceStatus": "CREATE_FAILED",
      "resourceStatusReason": "Received FAILURE signal with UniqueId i-04e91cc1f4ea796fe",
      "resourceProperties": "{\"LaunchTemplate\":{\"Version\":\"1\",\"LaunchTemplateId\":\"lt-057d2b1e687f05a62\"}}",
      "stackId": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f02-11ec-a3b9-024fcc6f3387",
      "stackName": "mycluster",
      "logicalResourceId": "HeadNode",
      "resourceType": "AWS::EC2::Instance",
      "timestamp": "2021-09-06T11:11:50.127Z"
    }
  ]
```

이전 예제에서는 헤드 노드 설정에 장애가 발생했습니다.

## CLI를 사용하여 로그 스트림을 볼 수 있습니다.
<a name="troubleshooting-v3-cluster-deployment-cli-logstreams"></a>

이러한 문제를 디버깅하려면 [`pcluster list-cluster-log-streams`](pcluster.list-cluster-log-streams-v3.md)으로 `node-type`를 필터링한 다음 로그 스트림 콘텐츠를 분석하여 헤드 노드에서 이용 가능한 로그 스트림을 나열하는 방법이 있습니다.

```
$ pcluster list-cluster-log-streams --cluster-name mycluster --region eu-west-1 \
--filters 'Name=node-type,Values=HeadNode'
{
  "logStreams": [
    {
      "logStreamArn": "arn:aws:logs:eu-west-1:xxx:log-group:/aws/parallelcluster/mycluster-202109061103:log-stream:ip-10-0-0-13.i-04e91cc1f4ea796fe.cfn-init",
      "logStreamName": "ip-10-0-0-13.i-04e91cc1f4ea796fe.cfn-init",
      ...
    },
    {
      "logStreamArn": "arn:aws:logs:eu-west-1:xxx:log-group:/aws/parallelcluster/mycluster-202109061103:log-stream:ip-10-0-0-13.i-04e91cc1f4ea796fe.chef-client",
      "logStreamName": "ip-10-0-0-13.i-04e91cc1f4ea796fe.chef-client",
      ...
    },
    {
      "logStreamArn": "arn:aws:logs:eu-west-1:xxx:log-group:/aws/parallelcluster/mycluster-202109061103:log-stream:ip-10-0-0-13.i-04e91cc1f4ea796fe.cloud-init",
      "logStreamName": "ip-10-0-0-13.i-04e91cc1f4ea796fe.cloud-init",
      ...
    },
    ...
  ]
}
```

초기화 오류를 찾는 데 사용할 수 있는 두 가지 기본 로그 스트림은 다음과 같습니다.
+  `cfn-init`은 `cfn-init` 스크립트의 로그입니다. 먼저 이 로그 스트림을 확인합니다. 이 로그에서 `Command chef failed` 오류를 확인할 수 있을 것입니다. 오류 메시지와 관련된 자세한 내용은 이 라인 바로 앞에 있는 라인을 참조하세요. 자세한 내용은 [cfn-init](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html)을 참조하세요.
+  `cloud-init`은 [cloud-init](https://cloudinit.readthedocs.io/)에 대한 로그입니다. `cfn-init`에 아무것도 표시되지 않으면 다음으로 이 로그를 확인해 보세요.

[`pcluster get-cluster-log-events`](pcluster.get-cluster-log-events-v3.md)을 사용하여 로그 스트림의 콘텐츠를 검색할 수 있습니다(검색되는 이벤트 수를 제한하는 `--limit 5` 옵션 참고).

```
$ pcluster get-cluster-log-events --cluster-name mycluster \
  --region eu-west-1 --log-stream-name ip-10-0-0-13.i-04e91cc1f4ea796fe.cfn-init \
  --limit 5
{
  "nextToken": "f/36370880979637159565202782352491087067973952362220945409/s",
  "prevToken": "b/36370880752972385367337528725601470541902663176996585497/s",
  "events": [
    {
      "message": "2021-09-06 11:11:39,049 [ERROR] Unhandled exception during build: Command runpostinstall failed",
      "timestamp": "2021-09-06T11:11:39.049Z"
    },
    {
      "message": "Traceback (most recent call last):\n  File \"/opt/aws/bin/cfn-init\", line 176, in <module>\n    worklog.build(metadata, configSets)\n  File \"/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py\", line 135, in build\n    Contractor(metadata).build(configSets, self)\n  File \"/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py\", line 561, in build\n    self.run_config(config, worklog)\n  File \"/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py\", line 573, in run_config\n    CloudFormationCarpenter(config, self._auth_config).build(worklog)\n  File \"/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py\", line 273, in build\n    self._config.commands)\n  File \"/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py\", line 127, in apply\n    raise ToolError(u\"Command %s failed\" % name)",
      "timestamp": "2021-09-06T11:11:39.049Z"
    },
    {
      "message": "cfnbootstrap.construction_errors.ToolError: Command runpostinstall failed",
      "timestamp": "2021-09-06T11:11:39.049Z"
    },
    {
      "message": "2021-09-06 11:11:49,212 [DEBUG] CloudFormation client initialized with endpoint https://cloudformation.eu-west-1.amazonaws.com",
      "timestamp": "2021-09-06T11:11:49.212Z"
    },
    {
      "message": "2021-09-06 11:11:49,213 [DEBUG] Signaling resource HeadNode in stack mycluster with unique ID i-04e91cc1f4ea796fe and status FAILURE",
      "timestamp": "2021-09-06T11:11:49.213Z"
    }
  ]
}
```

이전 예제에서 실패는 `runpostinstall` 실패로 인해 발생했으므로 이 오류는 [`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions)의 `OnNodeConfigured` 구성 파라미터에 사용된 사용자 지정 부트스트랩 스크립트의 내용과 엄격하게 관련되어 있습니다.

## `rollback-on-failure`을 사용하여 실패한 클러스터를 다시 생성합니다.
<a name="troubleshooting-v3-cluster-deployment-cli-fail-rollback"></a>

AWS ParallelCluster 는 로그 그룹에 클러스터 CloudWatch 로그 스트림을 생성합니다. CloudWatch 콘솔 사용자 지정 대시보드**** 또는 로그 그룹****에서 이러한 로그를 볼 수 있습니다. 자세한 내용은 [Amazon CloudWatch Logs와 통합](cloudwatch-logs-v3.md) 및 [Amazon CloudWatch 대시보드](cloudwatch-dashboard-v3.md) 항목을 참조하세요. 사용 가능한 로그 스트림이 없는 경우 [`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions) 사용자 지정 부트스트랩 스크립트 또는 AMI 관련 문제로 인해 오류가 발생할 수 있습니다. 이 경우 생성 문제를 진단하려면 `false`로 설정된 `--rollback-on-failure` 파라미터를 포함하여 [`pcluster create-cluster`](pcluster.create-cluster-v3.md)를 사용하여 클러스터를 다시 생성하세요. 그 후 다음과 같이 SSH를 사용하여 클러스터를 확인합니다.

```
$ pcluster create-cluster --cluster-name mycluster --region eu-west-1 \
   --cluster-configuration cluster-config.yaml --rollback-on-failure false
 {
   "cluster": {
     "clusterName": "mycluster",
     "cloudformationStackStatus": "CREATE_IN_PROGRESS",
     "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f01-11ec-a3b9-024fcc6f3387",
     "region": "eu-west-1",
     "version": "3.15.0",
     "clusterStatus": "CREATE_IN_PROGRESS"
   }
 } 
 $ pcluster ssh --cluster-name mycluster
```

헤드 노드에 로그인한 후에는 오류를 찾는 데 사용할 수 있는 세 개의 기본 로그 파일을 찾을 수 있습니다.
+  `/var/log/cfn-init.log`은 `cfn-init` 스크립트의 로그입니다. 먼저 이 로그를 확인하세요. 이 로그에서 `Command chef failed` 같은 오류가 표시될 수 있습니다. 오류 메시지와 관련된 자세한 내용은 이 라인 바로 앞에 있는 라인을 참조하세요. 자세한 내용은 [cfn-init](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html)을 참조하세요.
+  `/var/log/cloud-init.log`은 [cloud-init](https://cloudinit.readthedocs.io/)에 대한 로그입니다. `cfn-init.log`에 아무것도 표시되지 않으면 다음으로 이 로그를 확인해 보세요.
+  `/var/log/cloud-init-output.log`은 [cloud-init](https://cloudinit.readthedocs.io/)이 실행한 명령의 출력입니다. 여기에는 `cfn-init`의 출력이 포함됩니다. 대부분의 경우 이러한 유형의 문제를 해결하기 위해 이 로그를 볼 필요가 없습니다.