View a markdown version of this page

액티브/패시브 AWS IoT Greengrass V2 서비스 - AWS IoT Greengrass

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

액티브/패시브 AWS IoT Greengrass V2 서비스

이 설정에서는 한 번에 한 인스턴스에서 AWS IoT Greengrass V2 시스템 서비스로를 실행합니다. Pacemaker는 DRBD 복제, 파일 시스템 탑재 및 AWS IoT Greengrass V2 서비스를 순서가 지정된 리소스로 관리합니다. 기본 인스턴스에 장애가 발생하면 Pacemaker는 대기 인스턴스의 DRBD를 기본 인스턴스로 승격하고 파일 시스템을 탑재한 다음 시작합니다 AWS IoT Greengrass V2.

중요

계속하기 사전 조건 및 클러스터 설정 전에의 모든 단계를 완료합니다.

주의

달리 명시되지 않는 한 기본 인스턴스에서만 다음 명령을 실행합니다.

DRBD 리소스 연결

계속하기 전에 Pacemaker가 실행 중인지 확인합니다.

sudo systemctl status pacemaker

리소스를 생성하기 전에 STONITH를 비활성화합니다. 펜싱 디바이스를 구성하지 않으면 STONITH가 활성화된 경우(기본값) Pacemaker가 리소스 시작을 거부합니다.

sudo pcs property set stonith-enabled=false
주의

STONITH는이 자습서를 간소화하기 위해 여기에서 비활성화됩니다. 프로덕션 환경에서는 STONITH를 활성화하고 펜싱 에이전트(예: Amazon EC2 인스턴스fence_aws의 경우)를 구성하여 브레인 분할 및 데이터 손상을 방지해야 합니다.

기본 인스턴스에서 DRBD 디바이스를 마운트 해제하고 모든 인스턴스에서 DRBD를 다운하여 Pacemaker가 DRBD 수명 주기를 완벽하게 제어할 수 있도록 합니다.

# On the primary instance only sudo umount /greengrass/v2 # On all instances sudo drbdadm down greengrass

Pacemaker에서 DRBD 리소스를 생성합니다.

sudo pcs resource create drbd-greengrass \ ocf:linbit:drbd drbd_resource=greengrass \ op monitor interval=15s role=Promoted \ op monitor interval=30s role=Unpromoted

한 번에 하나의 인스턴스만 기본 인스턴스가 되도록 리소스를 홍보 가능으로 구성합니다. 클러스터의 인스턴스 수clone-max로 설정합니다.

sudo pcs resource promotable drbd-greengrass \ promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true

파일 시스템 리소스 연결

모든 AWS IoT Greengrass V2 리소스는 아래에 저장됩니다/greengrass/v2. 이 단계에서는 승격된 인스턴스의 해당 경로에 DRBD 디바이스를 탑재하도록 Pacemaker에 지시합니다. 이렇게 하면 AWS IoT Greengrass V2 데이터 디렉터리가 복제되고 장애 조치 중에 사용할 수 있습니다.

비활성화된 상태에서 파일 시스템 리소스를 생성합니다. 모든 제약 조건이 적용되면 활성화됩니다.

sudo pcs resource create fs_greengrass Filesystem \ device="/dev/drbd0" \ directory="/greengrass/v2" \ fstype="ext4" \ op start timeout=15s \ op stop timeout=15s \ --disabled

리소스 확인

리소스가 생성되어 모든 인스턴스에 전파되는지 확인합니다.

sudo pcs status

AWS IoT Greengrass V2 시스템 리소스 프로비저닝 및 연결

  1. 프로비저닝 AWS IoT Greengrass V2. 이전에 DRBD 디바이스를 탑재 해제했으므로 유지 관리 모드를 활성화하고 프로비저닝을 위해 다시 탑재합니다.

    # Enable maintenance mode to prevent Pacemaker from interfering sudo pcs property set maintenance-mode=true # Check which node Pacemaker promoted to Primary sudo pcs status | grep drbd-greengrass # On the Promoted node, mount the DRBD device sudo mount /dev/drbd0 /greengrass/v2

    자동 프로비저닝을 사용하여 기본 인스턴스 AWS IoT Greengrass V2 에 프로비저닝합니다. 자동 리소스 프로비저닝을 사용하여 AWSAWS IoTAWS IoT Greengrass V2 코어 소프트웨어 설치의 지침을 따릅니다.

    /greengrass/v2 디렉터리(DRBD 탑재 경로)에 AWS IoT Greengrass V2 가 설치되어 있는지 확인합니다. 프로비저닝 후 디바이스를 마운트 해제하고 유지 관리 모드를 비활성화합니다.

    sudo umount /greengrass/v2 sudo pcs property set maintenance-mode=false
  2. Pacemaker가 systemd 대신 관리할 수 있도록 AWS IoT Greengrass V2 서비스를 비활성화합니다.

    sudo systemctl disable greengrass sudo systemctl stop greengrass
  3. 모든 대기 인스턴스에 런타임 사전 조건을 설치합니다. AWS IoT Greengrass V2 에는 자동 프로비저너가 DRBD 복제 디렉터리 외부에 설치하는 Java 및 기타 종속성이 필요합니다. 각 대기 인스턴스에 동일한 JDK 버전을 설치합니다. 사전 AWS IoT Greengrass V2 조건의 전체 목록은 요구 사항을 참조하세요.

  4. 다른 인스턴스에서 시스템 단위 파일을 생성합니다. Pacemaker가 장애 조치 중에 모든 인스턴스에서 서비스를 시작할 수 있도록 AWS IoT Greengrass V2 시스템 단위 파일을 대기 인스턴스에 복사합니다.

    # On the primary instance, view the unit file location systemctl show -p FragmentPath greengrass

    해당 파일을 서로 다른 인스턴스의 동일한 경로에 복사합니다. 그런 다음 새 단위 파일을 인식하도록 각 대기 인스턴스에서 systemd를 다시 로드합니다.

    # On each standby instance sudo systemctl daemon-reload
  5. AWS IoT Greengrass V2 리소스를 연결합니다.

    sudo pcs resource create greengrass systemd:greengrass \ op monitor interval=10s \ op start timeout=60s \ op stop timeout=60s \ --disabled

리소스 제약 조건 생성

Pacemaker가 장애 조치 중에 리소스를 올바른 순서로 관리하도록 제약 조건 순서를 생성합니다.

sudo pcs constraint order promote drbd-greengrass-clone then start fs_greengrass sudo pcs constraint colocation add fs_greengrass with Promoted drbd-greengrass-clone score=INFINITY sudo pcs resource group add greengrass-group fs_greengrass greengrass sudo pcs constraint location greengrass-group prefers instance1=200

이제 제약 조건이 적용되도록 리소스를 활성화합니다.

sudo pcs resource enable fs_greengrass sudo pcs resource enable greengrass

리소스 제약 조건의 최종 상태를 확인합니다.

sudo pcs constraint show

출력에는 다음 제약 조건이 표시되어야 합니다.

  • 위치 제약 - greengrass-group 리소스 그룹이 기본 인스턴스를 선호합니다.

  • 코로케이션 제약 조건 -는 승격된 로 fs_greengrass 실행drbd-greengrass-clone되고는 로 greengrass 실행됩니다fs_greengrass.

  • 주문 제약 조건 - DRBD는 파일 시스템이 시작되기 전에 승격되고 파일 시스템이 시작되기 전에 승격됩니다 AWS IoT Greengrass V2.

장애 조치 확인

장애 조치를 시뮬레이션하여 설정이 작동하는지 확인합니다.

  1. 초기 상태를 확인합니다. AWS IoT Greengrass V2 가 기본 인스턴스에서 실행 중인지 확인합니다.

    sudo pcs status
  2. 기본 인스턴스 장애를 시뮬레이션합니다. 프라이머리 노드를 대기 모드로 전환하여 리소스 마이그레이션을 트리거합니다.

    sudo pcs node standby primary-node-name
  3. 장애 조치를 확인합니다. 대기 인스턴스에서 클러스터 상태를 확인합니다. 이제 DRBD, 파일 시스템 및 AWS IoT Greengrass V2 리소스가 대기 인스턴스에서 실행되어야 합니다.

    sudo pcs status
  4. 실패한 인스턴스를 복구합니다.

    sudo pcs node unstandby primary-node-name

    노드가 다시 온라인 상태가 되면 클러스터를 대기 인스턴스로 다시 조인합니다. 장애 조치 중에 승격된 인스턴스는 기본 인스턴스로 유지됩니다.

문제 해결

리소스가 실패 상태가 되면 다음 명령을 사용하여 리소스를 정리하고 다시 시작할 수 있습니다.

sudo pcs resource cleanup