ChaosToolkit 기초

12319 단어 toolkitresiliencychaos
탄력성 실험의 주요 목표는 항상 동일합니다.

To observe a steady state
Do something that attempts to disrupt that steady state
Observe if we still have a steady state

이 세 단계는 모든 복원력 실험에서 항상 일정합니다.

이러한 단계를 측정하거나 발생시키는 방식에 어떤 변화가 있습니까?

예를 들어,

To see if a service is up we can have multiple methods viz. Health Checks, Monitoring Checks or Request Checks.
To simulate a service downtime, we can shutdown the machine or the specific process (each has its own case)

자동화된 상태에서 실험을 올바르게 수행하고 테스트의 동일성을 유지하기 위해 이를 수행하는 동종 방법을 제공하는 도구를 구현해야 했습니다.

이러한 실험을 위해 Gremlin 및 Chaos Toolkit을 평가했습니다.

이 문서는 위에 나열된 내용을 염두에 두고 Chaos Toolkit의 작업을 설명합니다.
Chaos Toolkit은 드라이버를 사용하여 모든 시스템으로 확장할 수 있는 Chaos Engineering 실험을 위한 선언적 프레임워크입니다. 대부분의 주요 시스템에 대한 오픈 소스 드라이버가 있습니다.

선언적 프레임워크와 기본 사항을 살펴보겠습니다.

각 실험에는 다음 섹션이 있습니다.

설명 섹션:

이것은 테스트를 위한 메타 데이터일 뿐입니다. 버전, 제목 및 설명은 실험의 세부 사항을 언급합니다. 태그는 테스트 중인 시스템이 무엇으로 구성되어 있는지 또는 테스트 태그가 무엇인지 언급합니다. 여러 태그가 있을 수 있지만 단일 버전, 제목 및 설명만 있습니다.



정상 상태 가설 섹션:

이것이 실험의 핵심입니다. 이 섹션은 실험이 시작되고 "방법"섹션이 실행된 후에 실행됩니다. 첫 번째 실행은 조치를 취하기 전에 정상 상태 가설이 충족되는지 확인하는 것입니다. 그렇지 않으면 실험이 실패한 것입니다. 정상 상태

상태 또는 가설을 확인하는 방법은 프로브를 사용하는 것입니다. ChaosToolkit은 서비스 또는 URL을 확인하는 데 사용할 수 있는 일련의 프로브를 제공합니다. 각 프로브에는 해당되는 경우 프로브 유형과 인수를 언급하는 공급자가 있습니다. 각 프로브는 다르며 인수가 여러 개이거나 전혀 없을 수 있습니다.

아래 예에는 두 개의 프로브가 있습니다.

첫 번째는 부울을 반환하는 파이썬 함수입니다. 이는 "tolerance"매개변수에서 확인됩니다.

두 번째는 URL을 확인하고 응답 코드가 200인지 확인하는 내장 http 프로브입니다.

Writing a good steady state hypothesis is essential to get your resiliency tests be repeatable and accurate. Too simple and you risk missing issues. Too complex and you risk false negatives.



"작업"섹션:

이 섹션에서는 "중단"을 수행합니다.

동인에 따라 다음과 같은 여러 유형의 중단이 있을 수 있습니다.

AWS 드라이버는 인스턴스, 가용 영역의 임의 시스템 등을 종료할 수 있습니다.

Kubernetes 드라이버에는 임의 포드를 종료할 수 있는 기능이 있습니다.

아래 예에서 작업이 주어진 패턴의 임의 이름을 기반으로 포드를 종료하는 것을 볼 수 있습니다. 작업이 수행된 후 제공된 값에 대한 실행을 몇 초 안에 일시 중지하여 시스템을 안정화한 다음 예상 값에 대한 조사를 진행할 수 있습니다. 이 경우 실험 초기에 이미 정의된 프로브를 참조하여 프로브합니다.



정의된 다른 프로브도 볼 수 있습니다. 여러 프로브가 있을 수 있는 것처럼 "methods"섹션 내에 여러 작업이 있을 수 있습니다.

It might be better to keep the action itself brief and limited so that we can objectively identify what that action does to our system. If there are multiple actions, determining what caused the failure might be difficult.

This is not always true though as many issues will come up because of multiple actions performed simultaneously. In short, YMMV.





롤백 섹션:

이 섹션은 실험 과정에서 발생했을 수 있는 시스템에 대한 영구적인 변경을 취소하기 위한 것입니다. 예를 들어 실험에서 종료한 인스턴스를 시작할 수 있습니다.

전반적으로 실험 설명자 파일은 다음과 같습니다.

간단한 ChaosToolkit 실험


{
    "version": "1.0.0",
    "title": "Stop an instance",
    "description": "it should stop",
    "tags": [
        "stop"
    ],
    "steady-state-hypothesis": {
        "title": "Application responds",
        "probes": [
            {
                "name": "count-instances",
                "type": "probe",
                "tolerance": 1,
                "provider": {
                    "func": "count_instances",
                    "type": "python",
                    "arguments": {
                        "filters": []
                    },
                    "module": "chaosaws.ec2.probes"
                }
            }
        ]
    },
    "method": [
        {
            "type": "action",
            "name": "stop-an-ec2-instance",
            "provider": {
                "type": "python",
                "module": "chaosaws.ec2.actions",
                "func": "stop_instance",
                "arguments": {
                    "instance_id": "i-0e1f0c1d97589b5e9"
                }
            },
            "pauses": {
                "after": 30
            }
        },
        {
            "name": "count-instances",
            "type": "probe",
            "tolerance": 0,
            "provider": {
                "func": "count_instances",
                "type": "python",
                "arguments": {
                    "filters": []
                },
                "module": "chaosaws.ec2.probes"
            }
        },
        {
            "type": "probe",
            "name": "healthcheck-service-must-still-respond",
            "provider": {
                "type": "http",
                "url": "http://localhost:8080/healthcheck"
            }
        }
    ]
}

좋은 웹페이지 즐겨찾기