다음을 통해 공유


sfctl chaos

비정상 상황 테스트 서비스를 시작하고, 중지하고 보고합니다.

하위 그룹

하위 그룹 설명
schedule chaos schedule을 가져오고 설정합니다.

명령

명령 설명
events 연속 토큰 또는 시간 범위에 따라 Chaos 이벤트의 다음 세그먼트를 가져옵니다.
get Chaos의 상태를 가져옵니다.
start 클러스터에서 Chaos를 시작합니다.
stop 클러스터에서 실행되는 경우 Chaos를 중지하고 비정상 상황 일정을 중지된 상태로 전환합니다.

sfctl chaos 이벤트

연속 토큰 또는 시간 범위에 따라 Chaos 이벤트의 다음 세그먼트를 가져옵니다.

Chaos 이벤트의 다음 세그먼트를 가져오려면 ContinuationToken을 지정할 수 있습니다. Chaos 이벤트의 새 세그먼트를 시작하려면 StartTimeUtc 및 EndTimeUtc를 통해 시간 범위를 지정할 수 있습니다. ContinuationToken과 동일한 호출의 시간 범위를 둘 다 지정할 수 없습니다. 비정상 상황 이벤트가 100개를 초과하는 경우 비정상 상황 이벤트는 세그먼트에 100개 이하의 비정상 상황 이벤트를 포함하고 연속 토큰을 사용하여 이 API를 호출하는 다음 세그먼트를 가져오는 여러 세그먼트로 반환됩니다.

인수

Argument 설명
--continuation-token 연속 토큰 매개 변수는 다음 결과 집합을 얻는 데 사용됩니다. 빈 값이 아닌 연속 토큰은 시스템의 결과가 단일 응답에 맞지 않는 경우 API의 응답에 포함됩니다. 이 값이 다음 API 호출에 전달되면 API는 다음 결과 집합을 반환합니다. 결과가 더 이상 없으면 연속 토큰에 값이 포함되지 않습니다. 이 매개 변수의 값은 URL 인코딩이 되지 말아야 합니다.
--end-time-utc Chaos 보고서가 생성될 시간 범위의 종료 시간을 나타내는 Windows 파일 시간입니다. 자세한 내용은 DateTime.ToFileTimeUtc 메서드를 참조하세요.
--max-results 페이징된 쿼리의 일부로 반환될 결과의 최대 수입니다. 이 매개 변수는 반환된 결과 수의 상한을 정의합니다. 반환된 결과는 구성에 정의된 최대 메시지 크기 제한에 따라 메시지에 맞지 않는 경우 지정된 최대 결과보다 작을 수 있습니다. 이 매개 변수가 0이거나 지정되지 않은 경우 페이징된 쿼리에는 반환 메시지에 맞는 가능한 한 많은 결과가 포함됩니다.
--start-time-utc 비정상 상황 보고서를 생성할 시간 범위의 시작 시간을 나타내는 Windows 파일 시간입니다. 자세한 내용은 DateTime.ToFileTimeUtc 메서드를 참조하세요.
--timeout -t 작업을 수행하기 위한 서버 제한 시간(초)입니다. 이 시간 제한은 클라이언트가 요청된 작업이 완료되기를 기다리는 기간을 지정합니다. 이 매개 변수의 기본값은 60초입니다. 기본값: 60.

전역 인수

인수 설명
--debug 로깅의 자세한 정도를 늘려 모든 디버그 로그를 표시합니다.
--help -h 이 도움말 메시지를 표시하고 종료합니다.
--output -o 출력 형식입니다. 허용되는 값: json, jsonc, table, tsv 기본값: json
--쿼리 JMESPath 쿼리 문자열입니다. 자세한 내용과 예제는 http://jmespath.org/를 참조하세요.
--verbose 로깅의 자세한 정도를 늘립니다. 전체 디버그 로그를 표시하려면 --debug를 사용합니다.

sfctl chaos get

Chaos의 상태를 가져옵니다.

Chaos가 실행 중인지 여부, Chaos를 실행하는 데 사용되는 Chaos 매개 변수 및 비정상 상황 일정의 상태를 나타내는 Chaos의 상태를 가져옵니다.

인수

Argument 설명
--timeout -t 작업을 수행하기 위한 서버 제한 시간(초)입니다. 이 시간 제한은 클라이언트가 요청된 작업이 완료되기를 기다리는 기간을 지정합니다. 이 매개 변수의 기본값은 60초입니다. 기본값: 60.

전역 인수

인수 설명
--debug 로깅의 자세한 정도를 늘려 모든 디버그 로그를 표시합니다.
--help -h 이 도움말 메시지를 표시하고 종료합니다.
--output -o 출력 형식입니다. 허용되는 값: json, jsonc, table, tsv 기본값: json
--쿼리 JMESPath 쿼리 문자열입니다. 자세한 내용과 예제는 http://jmespath.org/를 참조하세요.
--verbose 로깅의 자세한 정도를 늘립니다. 전체 디버그 로그를 표시하려면 --debug를 사용합니다.

sfctl chaos start

클러스터에서 Chaos를 시작합니다.

Chaos가 아직 클러스터에 실행되고 있지 않다면 Chaos 매개 변수에 전달된 값으로 Chaos를 시작합니다. 이 호출을 수행할 때 Chaos가 이미 실행 중이면 오류 코드 FABRIC_E_CHAOS_ALREADY_RUNNING 함께 호출이 실패합니다. 자세한 내용은 Service Fabric 클러스터에서 제어된 Chaos 유도 문서를 참조하세요 .

인수

Argument 설명
--app-type-health-policy-map 특정 애플리케이션 유형에 대한 최대 백분율 비정상 애플리케이션이 있는 사전(키/값) 항목의 JSON 인코딩 배열입니다. 각 사전 항목은 애플리케이션 유형 이름의 키와 지정된 애플리케이션 유형의 애플리케이션을 평가하는 데 사용되는 MaxPercentUnhealthyApplications 백분율을 나타내는 값의 정수로 지정합니다.

특정 애플리케이션 유형에 대한 최대 백분율 비정상 애플리케이션이 있는 맵을 정의합니다. 클러스터 상태를 평가하는 동안 애플리케이션 유형 상태 정책 맵을 사용하여 개별 애플리케이션 유형을 설명할 수 있습니다. 맵에 포함된 애플리케이션 유형은 클러스터 상태 정책에 정의된 전역 MaxPercentUnhealthyApplications가 아니라 맵에 지정된 백분율에 대해 평가됩니다. 맵에서 지정된 애플리케이션 유형의 애플리케이션은 애플리케이션의 전역 풀에 대해 계산되지 않습니다. 예를 들어 형식의 일부 애플리케이션이 중요한 경우 클러스터 관리자는 해당 애플리케이션 유형에 대한 맵에 항목을 추가하고 0%의 값을 할당할 수 있습니다(오류를 용납하지 않음). 다른 모든 애플리케이션은 MaxPercentUnhealthyApplications를 20%로 설정하여 수천 개의 애플리케이션 인스턴스에서 일부 오류를 허용할 수 있습니다. 애플리케이션 유형 상태 정책 맵은 클러스터 매니페스트가 HealthManager/EnableApplicationTypeHealthEvaluation에 대한 구성 항목을 사용하여 애플리케이션 유형 상태 평가를 사용하도록 설정하는 경우에만 사용됩니다.

JSON으로 인코딩된 문자열 예제: [{"key": "fabric:/Voting", "value": "0"}]
--chaos-target-filter 두 개의 문자열 형식 키가 있는 JSON 인코딩된 사전입니다. 두 키는 NodeTypeInclusionList 및 ApplicationInclusionList입니다. 이 두 키의 값은 문자열 목록입니다. chaos_target_filter 대상 비정상 상황 오류에 대한 모든 필터를 정의합니다(예: 특정 노드 형식만 오류 발생 또는 특정 애플리케이션만 오류 발생).

chaos_target_filter 사용되지 않으면 모든 클러스터 엔터티에 오류가 발생합니다. chaos_target_filter 사용하는 경우 Chaos는 chaos_target_filter 사양을 충족하는 엔터티에만 오류가 발생합니다. NodeTypeInclusionList 및 ApplicationInclusionList는 합집합 의미 체계만 허용합니다. NodeTypeInclusionList 및 ApplicationInclusionList의 교집합을 지정할 수 없습니다. 예를 들어 "해당 노드 형식에 있는 경우에만 이 애플리케이션에 장애가 발생"을 지정할 수 없습니다. NodeTypeInclusionList 또는 ApplicationInclusionList에 엔터티가 포함되어 있는 경우, ChaosTargetFilter를 사용하여 해당 엔터티를 제외할 수 없습니다. applicationX가 ApplicationInclusionList에 표시되지 않더라도 일부 비정상 상황 반복에서 applicationX가 NodeTypeInclusionList에 포함된 nodeTypeY 노드에 있을 수 있으므로 오류가 있는 것으로 지정될 수 있습니다. NodeTypeInclusionList와 ApplicationInclusionList가 모두 비어 있으면 ArgumentException이 throw됩니다. 이러한 노드 유형의 노드에 대해 모든 유형의 오류(노드 다시 시작, 코드 패키지 다시 시작, 복제본 제거, 복제본 다시 시작, 주 복제본 이동 및 보조 이동)가 사용하도록 설정됩니다. NodeTypeInclusionList에 노드 형식(예: NodeTypeX)이 표시되지 않으면 NodeTypeX 노드에 노드 수준 오류(예: NodeRestart)가 사용되지 않지만 ApplicationInclusionList의 애플리케이션이 NodeTypeX 노드에 상주하는 경우 NodeTypeX에 대해 코드 패키지 및 복제본 오류를 계속 사용하도록 설정할 수 있습니다. 최대 100개의 노드 유형 이름을 이 목록에 포함할 수 있으며, 이 수를 늘리려면 MaxNumberOfNodeTypesInChaosEntityFilter 구성에 대해 구성 업그레이드가 필요합니다. 이러한 애플리케이션의 서비스에 속하는 모든 복제본은 Chaos에 의한 복제본 오류(복제본 다시 시작, 복제본 제거, 주 복제본 이동 및 보조 복제본 이동)에 적용할 수 있습니다. 비정상 상황은 코드 패키지가 이러한 애플리케이션의 복제본만 호스트하는 경우에만 코드 패키지를 다시 시작할 수 있습니다. 애플리케이션이 이 목록에 나타나지 않을 경우, 애플리케이션이 NodeTypeInclusionList에 포함된 노드 유형의 노드에 배치되면 일부 Chaos 반복에서 여전히 오류가 있는 것으로 지정될 수 있습니다. 그러나 applicationX가 배치 제약 조건을 통해 nodeTypeY에 연결되며 applicationX가 ApplicationInclusionList에 없고, nodeTypeY가 NodeTypeInclusionList에 없으면 applicationX는 절대 오류가 있는 것으로 지정되지 않습니다. 이 목록에는 최대 1,000개의 애플리케이션 이름을 포함할 수 있으며, 이 수를 늘리려면 MaxNumberOfApplicationsInChaosEntityFilter 구성에 대한 구성 업그레이드가 필요합니다.
--context (문자열, 문자열) 형식 키-값 쌍의 JSON 인코딩된 맵입니다. 비정상 상황 실행에 대한 정보를 기록하기 위해 맵이 사용될 수 있습니다. 이러한 쌍은 100개 이하로만 존재할 수 있으며 각 문자열(키 또는 값)은 4095자 이하로만 설정할 수 있습니다. 비정상 상황 실행 시작 기능이 특정 실행에 대한 컨텍스트를 선택적으로 저장할 수 있게 이러한 맵을 설정합니다.
--disable-move-replica-faults 기본 이동 및 이동 보조 오류를 사용하지 않도록 설정합니다.
--max-cluster-stabilization 모든 클러스터 엔터티가 안정적이고 정상 상태가 될 때까지 대기하는 최대 시간입니다. 기본값: 60.

Chaos는 반복에서 실행되고 각 반복이 시작될 때 클러스터 엔터티의 상태를 확인합니다. MaxClusterStabilizationTimeoutInSeconds 내에서 클러스터 엔터티가 안정적이고 정상이 아닌 경우 유효성 검사 중에 비정상 상황으로 유효성 검사 실패 이벤트가 생성됩니다.
--max-concurrent-faults 반복당 발생하는 최대 동시 오류 수입니다. 비정상 상황 반복에서 실행되고 두 번의 연속 반복이 유효성 검사 단계로 구분됩니다. 동시성이 높을수록 오류를 더 적극적으로 주입하여 더 복잡한 일련의 상태가 버그를 발견하도록 유도합니다. 2 또는 3 값으로 시작하고 이동하는 동안 주의하는 것이 좋습니다. 기본값: 1.
--max-percent-unhealthy-apps Chaos가 실행하는 동안 클러스터 상태를 평가할 때, 오류를 보고하기 전에 허용되는 비정상 애플리케이션의 최대 백분율입니다.

오류를 보고하기 전에 허용되는 비정상 애플리케이션의 최대 백분율입니다. 예를 들어 애플리케이션의 10%가 비정상이 되도록 하려면 이 값은 10입니다. 백분율은 클러스터가 오류로 간주되기 전에 비정상일 수 있는 애플리케이션의 최대 허용 비율을 나타냅니다. 백분율이 존중되지만 하나 이상의 비정상 애플리케이션이 있는 경우 상태는 경고로 평가됩니다. 이는 ApplicationTypeHealthPolicyMap에 포함된 애플리케이션 유형의 애플리케이션을 제외하고 클러스터의 총 애플리케이션 인스턴스 수에 대한 비정상 애플리케이션 수를 나누어 계산합니다. 계산은 적은 수의 애플리케이션에서 하나의 오류를 허용하도록 반올림됩니다. 기본 백분율은 0입니다.
--max-percent-unhealthy-nodes Chaos가 실행하는 동안 클러스터 상태를 평가할 때, 오류를 보고하기 전에 허용되는 비정상 노드의 최대 백분율입니다.

오류를 보고하기 전에 허용되는 비정상 노드의 최대 백분율입니다. 예를 들어 노드의 10%가 비정상이 되도록 하려면 이 값은 10이 됩니다. 백분율은 클러스터가 오류로 간주되기 전에 비정상일 수 있는 노드의 최대 허용 비율을 나타냅니다. 백분율이 존중되지만 하나 이상의 비정상 노드가 있는 경우 상태는 경고로 평가됩니다. 이 백분율은 클러스터에 있는 노드 총 수를 비정상 노드 수로 나눠 계산합니다. 계산값은 적은 수의 노드에서 오류 하나를 허용할 수 있도록 반올림됩니다. 기본 백분율은 0입니다. 큰 클러스터에서 일부 노드는 항상 복구를 위해 중단되거나 중단되므로 이 백분율은 이를 허용하도록 구성해야 합니다.
--time-to-run 자동으로 중지되기 전에 Chaos가 실행되는 총 시간(초)입니다. 허용되는 최대값은 4,294,967,295(System.UInt32.MaxValue)입니다. 기본값: 4294967295.
--timeout -t 기본값: 60.
--wait-time-between-faults 단일 반복 내에서 연속 오류 사이의 대기 시간(초)입니다. 기본값: 20.

값이 클수록 오류 간의 겹침이 낮아지고 클러스터가 통과하는 상태 전환 시퀀스가 더 간단합니다. 권장 사항은 1에서 5 사이의 값으로 시작하고 위로 이동하는 동안 주의를 기울이는 것입니다.
--wait-time-between-iterations 두 차례의 Chaos 연속 반복 간 시간-구분(초)입니다. 값이 클수록 오류 주입 속도가 낮아지게됩니다. 기본값: 30.
--warning-as-error 경고가 오류와 동일한 심각도로 처리되는지 여부를 나타냅니다.

전역 인수

인수 설명
--debug 로깅의 자세한 정도를 늘려 모든 디버그 로그를 표시합니다.
--help -h 이 도움말 메시지를 표시하고 종료합니다.
--output -o 출력 형식입니다. 허용되는 값: json, jsonc, table, tsv 기본값: json
--쿼리 JMESPath 쿼리 문자열입니다. 자세한 내용과 예제는 http://jmespath.org/를 참조하세요.
--verbose 로깅의 자세한 정도를 늘립니다. 전체 디버그 로그를 표시하려면 --debug를 사용합니다.

sfctl chaos stop

클러스터에서 실행되는 경우 Chaos를 중지하고 비정상 상황 일정을 중지된 상태로 전환합니다.

Chaos가 새 오류를 실행하는 것을 중지합니다. 진행 중인 오류는 완료될 때까지 계속해서 실행됩니다. 현재 비정상 상황 일정은 중지된 상태로 전환됩니다. 일정이 중지되면 중지된 상태로 유지되며 Chaos의 새 실행을 Chaos Schedule에 사용하지 않습니다. 일정을 다시 시작하려면 새 Chaos Schedule을 설정해야 합니다.

인수

Argument 설명
--timeout -t 작업을 수행하기 위한 서버 제한 시간(초)입니다. 이 시간 제한은 클라이언트가 요청된 작업이 완료되기를 기다리는 기간을 지정합니다. 이 매개 변수의 기본값은 60초입니다. 기본값: 60.

전역 인수

인수 설명
--debug 로깅의 자세한 정도를 늘려 모든 디버그 로그를 표시합니다.
--help -h 이 도움말 메시지를 표시하고 종료합니다.
--output -o 출력 형식입니다. 허용되는 값: json, jsonc, table, tsv 기본값: json
--쿼리 JMESPath 쿼리 문자열입니다. 자세한 내용과 예제는 http://jmespath.org/를 참조하세요.
--verbose 로깅의 자세한 정도를 늘립니다. 전체 디버그 로그를 표시하려면 --debug를 사용합니다.

다음 단계