View a markdown version of this page

액티브/패시브 로드 밸런서 - AWS IoT Greengrass

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

액티브/패시브 로드 밸런서

이 설정에서는 한 번에 한 인스턴스에서 로드 밸런서로 HAProxy를 실행합니다. HAProxy 구성 파일은 DRBD 복제 스토리지에 저장되므로 Pacemaker가 대기 인스턴스로 장애 조치되면 구성을 즉시 사용할 수 있습니다.

중요

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

주의

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

모든 인스턴스에 HAProxy 설치

Pacemaker가 관리할 수 있도록 HAProxy를 설치하고 서비스를 비활성화합니다. 각 인스턴스에서 이를 실행합니다.

sudo apt install -y haproxy sudo systemctl disable haproxy sudo systemctl stop haproxy

HAProxy용 DRBD 탑재 구성

로드 밸런서의 디렉터리에 DRBD 디바이스를 탑재합니다.

탑재 지점 디렉터리를 생성합니다. 각 인스턴스에서 이를 실행합니다.

sudo mkdir -p /drbd/loadbalancer/

기본 인스턴스에 DRBD 디바이스를 탑재합니다. 먼저 사전 요구 사항에서 이전 탑재 지점을 마운트 해제합니다.

sudo umount /greengrass/v2 sudo mount /dev/drbd0 /drbd/loadbalancer/

를 사용하여 탑재를 확인합니다lsblk. 에 drbd0 탑재된가 표시되어야 합니다/drbd/loadbalancer.

HAProxy 구성

구성 파일은 DRBD 탑재 디렉터리에 있어야 장애 조치 인스턴스에 복제됩니다.

  1. HAProxy 구성을 DRBD 탑재 디렉터리에 복사합니다.

    sudo mkdir -p /drbd/loadbalancer/etc/haproxy/ sudo cp /etc/haproxy/haproxy.cfg /drbd/loadbalancer/etc/haproxy/haproxy.cfg
  2. DRBD 탑재 경로의 구성을 사용하도록 HAProxy systemd unit 파일을 편집합니다. 각 인스턴스에서 이를 실행합니다.

    sudo systemctl edit haproxy

    다음 줄을 추가하여 구성 파일 경로를 DRBD 탑재 경로로 업데이트합니다.

    [Service] Environment="CONFIG=/drbd/loadbalancer/etc/haproxy/haproxy.cfg"
  3. systemd를 다시 로드합니다. 각 인스턴스에서 이를 실행합니다.

    sudo systemctl daemon-reload

DRBD 리소스 연결

Pacemaker가 디바이스를 관리할 수 있도록 DRBD 디바이스를 마운트 해제하고 DRBD를 내립니다. 기본 인스턴스와 drbdadm down 모든 인스턴스에서 탑재 해제를 실행합니다.

# On the primary instance only sudo umount /drbd/loadbalancer # On all instances sudo drbdadm down greengrass
sudo pcs resource create drbd-greengrass \ ocf:linbit:drbd drbd_resource=greengrass \ op monitor interval=15s role=Promoted \ op monitor interval=30s role=Unpromoted
sudo pcs resource promotable drbd-greengrass \ promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true

파일 시스템 리소스 연결

sudo pcs resource create fs_loadbalancer Filesystem \ device="/dev/drbd0" \ directory="/drbd/loadbalancer" \ fstype="ext4" \ op start timeout=15s \ op stop timeout=15s \ --disabled

HAProxy systemd 리소스 연결

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

리소스 제약 조건 생성

sudo pcs constraint colocation add haproxy with fs_loadbalancer sudo pcs constraint order fs_loadbalancer then start haproxy sudo pcs constraint colocation add fs_loadbalancer with Promoted drbd-greengrass-clone sudo pcs constraint order promote drbd-greengrass-clone then start fs_loadbalancer

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

sudo pcs resource enable fs_loadbalancer sudo pcs resource enable haproxy

이 자습서 설정에서 STONITH를 비활성화합니다.

sudo pcs property set stonith-enabled=false
주의

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

장애 조치 확인

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

    sudo pcs status
  2. 장애 조치를 시뮬레이션합니다. 프라이머리 노드를 대기 모드로 전환하여 모든 리소스를 프라이머리 노드에서 강제로 해제합니다.

    sudo pcs node standby primary-node-name
  3. 장애 조치를 확인합니다. 대기 인스턴스에서 클러스터 상태를 확인합니다. 이제 DRBD, 파일 시스템 및 HAProxy 리소스가 up-to-date 구성 파일이 있는 대기 인스턴스에서 실행되어야 합니다.

    sudo pcs status

    실패한 인스턴스가 복구되면 마이그레이션하도록 Pacemaker를 구성하지 않는 한 로드 밸런서 서비스는 대기 인스턴스에 남아 있습니다.

  4. 노드를 다시 온라인 상태로 전환합니다.

    sudo pcs node unstandby primary-node-name