다음을 통해 공유


동적 대상 지정을 사용하여 호스트를 선택하는 비정상 상황 실험 만들기

비정상 상황 실험에서 동적 대상 지정을 사용하여 실험을 실행할 대상 세트를 선택할 수 있습니다. 이 문서에서는 가용성 영역에 따라 종료하도록 가상 머신 확장 집합을 동적으로 대상으로 지정하는 방법을 보여 줍니다. 이 실험을 실행하면 중단이 발생하는 경우 다른 지역의 Azure Virtual Machine Scale Sets 인스턴스에 대한 장애 조치(failover)를 테스트하는 데 도움이 될 수 있습니다.

이와 동일한 단계를 사용하여 동적 대상 지정을 지원하는 오류에 대한 실험을 설정하고 실행할 수 있습니다. 현재 가상 머신 확장 집합 종료만 동적 대상 지정을 지원합니다.

필수 구성 요소

‘Azure Cloud Shell 열기’

Azure Cloud Shell은 이 문서의 단계를 실행하는 데 무료로 사용할 수 있는 대화형 셸입니다. 공용 Azure 도구가 사전 설치되어 계정에서 사용하도록 구성되어 있습니다.

Cloud Shell을 열려면 코드 블록의 오른쪽 위 모서리에 있는 사용해 보기를 선택합니다. Bash로 이동하여 별도의 브라우저 탭에서 Cloud Shell을 열 수도 있습니다. 복사를 선택하여 코드 블록을 복사하고 Cloud Shell에 붙여넣은 다음 입력을 선택하여 실행합니다.

이 자습서에서 CLI를 로컬로 설치하여 사용하려면 Azure CLI 버전 2.0.30 이상이 필요합니다. az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

참고 항목

이러한 지침에서는 Cloud Shell의 Bash 터미널을 사용합니다. CLI를 로컬로 실행하거나 PowerShell 터미널에서 실행하는 경우 일부 명령이 설명대로 작동하지 않을 수 있습니다.

Virtual Machine Scale Sets 인스턴스에서 Chaos Studio 사용

Azure Chaos Studio는 리소스가 먼저 Chaos Studio에 추가되지 않는 한 리소스에 대해 오류를 주입할 수 없습니다. Chaos Studio에 리소스를 추가하려면 리소스에 대상 및 기능을 만듭니다.

Virtual Machine Scale Sets에는 하나의 대상 유형(Microsoft-VirtualMachineScaleSet)과 하나의 기능(shutdown)만 있습니다. 다른 리소스에는 최대 두 가지 대상 유형이 있을 수 있습니다. 한 가지 대상 유형은 서비스 직접 오류에 대한 것입니다. 또 다른 대상 유형은 에이전트 기반 오류에 대한 것입니다. 다른 리소스에도 다른 많은 기능이 있을 수 있습니다.

  1. 가상 머신 확장 집합의 대상 리소스를 만듭니다. $RESOURCE_ID를 추가하는 가상 머신 확장 집합의 리소스 ID로 바꿉니다.

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet?api-version=2023-11-01" --body "{\"properties\":{}}"
    
  2. 가상 머신 확장 집합 대상에 대한 기능을 만듭니다. $RESOURCE_ID를 추가하는 리소스의 리소스 ID로 바꿉니다. VirtualMachineScaleSet 대상 및 Shutdown-2.0 기능을 지정합니다.

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet/capabilities/Shutdown-2.0?api-version=2023-11-01" --body "{\"properties\":{}}"
    

이제 가상 머신 확장 집합을 Chaos Studio에 성공적으로 추가했습니다.

실험 만들기

이제 실험을 만들 수 있습니다. 카오스 실험은 대상 리소스에 대해 수행하려는 작업을 정의합니다. 작업은 순차적 단계로 구성되고 실행됩니다. 카오스 실험은 병렬로 실행되는 분기에 대해 수행하려는 작업도 정의합니다.

  1. 다음 Virtual Machine Scale Sets Shutdown 2.0 JSON 샘플부터 실험 JSON을 작성합니다. 실험 만들기 API오류 라이브러리를 사용하여 실행할 실험과 일치하도록 JSON을 수정합니다. 현재 동적 대상 지정은 Virtual Machine Scale Sets Shutdown 2.0 오류에서만 사용할 수 있으며 가용성 영역에서만 필터링할 수 있습니다.

    • filter 요소를 사용하여 대상을 필터링할 Azure 가용성 영역의 목록을 구성합니다. filter를 제공하지 않으면 오류로 인해 가상 머신 확장 집합의 모든 인스턴스가 종료됩니다.
    • 실험은 지정된 영역의 모든 Virtual Machine Scale Sets 인스턴스를 대상으로 합니다.
     {
        "location": "westus2",
        "identity": {
            "type": "SystemAssigned"
        },
        "properties": {
            "selectors": [
                {
                    "type": "List",
                    "id": "Selector1",
                    "targets": [
                        {
                            "id": "/subscriptions/581d4e64-0ad7-495b-bff4-347a5944a2e1/resourceGroups/rg-demo/providers/Microsoft.Compute/virtualMachineScaleSets/vmss-demo/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachineScaleSet",
                            "type": "ChaosTarget"
                        }
                    ],
                    "filter": {
                        "type": "Simple",
                        "parameters": {
                            "zones": [
                                "1"
                            ]
                        }
                    }
                }
            ],
            "steps": [
                {
                    "name": "Step1",
                    "branches": [
                        {
                            "name": "Branch1",
                            "actions": [
                                {
                                    "name": "urn:csci:microsoft:virtualMachineScaleSet:shutdown/2.0",
                                    "type": "continuous",
                                    "selectorId": "Selector1",
                                    "duration": "PT2M",
                                    "parameters": [
                                        {
                                            "key": "abruptShutdown",
                                            "value": "false"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    }
    
  2. Azure CLI를 사용하여 실험을 만듭니다. $SUBSCRIPTION_ID, $RESOURCE_GROUP$EXPERIMENT_NAME을 실험에 맞는 속성으로 바꿉니다. 실험 JSON을 저장하고 업로드했는지 확인합니다. JSON 파일 이름으로 experiment.json을 업데이트합니다.

    az rest --method put --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME?api-version=2023-11-01 --body @experiment.json
    

    각 실험에서 해당 시스템이 할당한 관리 ID를 만듭니다. 다음 단계에 대한 응답에서 이 ID의 보안 주체 ID를 기록해 둡니다.

가상 머신 확장 집합에 실험 권한 부여

카오스 실험을 만들 때 Chaos Studio는 대상 리소스에 대해 오류를 실행하는 시스템이 할당한 관리 ID를 만듭니다. 실험을 성공적으로 실행하려면 이 ID에 대상 리소스에 대한 적절한 권한을 부여해야 합니다.

다음 명령을 사용하여 실험에 리소스에 대한 액세스 권한을 부여합니다. $EXPERIMENT_PRINCIPAL_ID를 이전 단계의 보안 주체 ID로 바꿉니다. $RESOURCE_ID를 대상 리소스의 리소스 ID로 바꿉니다. 역할을 해당 리소스 종류에 적절한 기본 제공 역할로 변경합니다. 실험에서 대상으로 지정된 각 리소스에 대해 이 명령을 실행합니다.

az role assignment create --role "Virtual Machine Contributor" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID

실험 실행

이제 실험을 실행할 준비가 되었습니다. 효과를 확인하려면 포털을 확인하여 가상 머신 확장 집합 대상이 종료되었는지 확인합니다. 종료된 경우 가상 머신 확장 집합에서 실행되는 서비스가 여전히 예상대로 실행되고 있는지 확인합니다.

  1. Azure CLI를 사용하여 실험을 시작합니다. $SUBSCRIPTION_ID, $RESOURCE_GROUP$EXPERIMENT_NAME을 실험에 맞는 속성으로 바꿉니다.

    az rest --method post --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME/start?api-version=2023-11-01
    
  2. 응답에는 실험이 실행될 때 실험 상태를 쿼리하는 데 사용할 수 있는 상태 URL이 포함됩니다.

다음 단계

이제 동적으로 대상이 지정된 가상 머신 확장 집합 종료 실험을 실행했으므로 다음을 수행할 준비가 되었습니다.