

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

# 액티브/패시브 AWS IoT Greengrass V2 서비스
<a name="pacemaker-tutorial-setup1"></a>

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

**중요**  
계속하기 [사전 조건 및 클러스터 설정](pacemaker-tutorial-prerequisites.md) 전에의 모든 단계를 완료합니다.

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

## DRBD 리소스 연결
<a name="pacemaker-tutorial-setup1-drbd-resource"></a>

계속하기 전에 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
```

## 파일 시스템 리소스 연결
<a name="pacemaker-tutorial-setup1-fs-resource"></a>

모든 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
```

## 리소스 확인
<a name="pacemaker-tutorial-setup1-verify-resources"></a>

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

```
sudo pcs status
```

## AWS IoT Greengrass V2 시스템 리소스 프로비저닝 및 연결
<a name="pacemaker-tutorial-setup1-greengrass-resource"></a>

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 코어 소프트웨어 설치](https://docs.aws.amazon.com/greengrass/v2/developerguide/quick-installation.html)의 지침을 따릅니다.

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

   ```
   sudo umount /greengrass/v2
   sudo pcs property set maintenance-mode=false
   ```

1. Pacemaker가 systemd 대신 관리할 수 있도록 ** AWS IoT Greengrass V2 서비스를 비활성화**합니다.

   ```
   sudo systemctl disable greengrass
   sudo systemctl stop greengrass
   ```

1. **모든 대기 인스턴스에 런타임 사전 조건을 설치합니다.** AWS IoT Greengrass V2 에는 자동 프로비저너가 DRBD 복제 디렉터리 외부에 설치하는 Java 및 기타 종속성이 필요합니다. 각 대기 인스턴스에 동일한 JDK 버전을 설치합니다. 사전 [AWS IoT Greengrass V2 조건](https://docs.aws.amazon.com/greengrass/v2/developerguide/setting-up.html)의 전체 목록은 요구 사항을 참조하세요.

1. **다른 인스턴스에서 시스템 단위 파일을 생성합니다.** 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
   ```

1. ** AWS IoT Greengrass V2 리소스를 연결합니다.**

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

## 리소스 제약 조건 생성
<a name="pacemaker-tutorial-setup1-constraints"></a>

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.

## 장애 조치 확인
<a name="pacemaker-tutorial-setup1-failover"></a>

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

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

   ```
   sudo pcs status
   ```

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

   ```
   sudo pcs node standby {{primary-node-name}}
   ```

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

   ```
   sudo pcs status
   ```

1. **실패한 인스턴스를 복구합니다.**

   ```
   sudo pcs node unstandby {{primary-node-name}}
   ```

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

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

```
sudo pcs resource cleanup
```