기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
액티브/패시브 로드 밸런서
이 설정에서는 한 번에 한 인스턴스에서 로드 밸런서로 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 탑재 디렉터리에 있어야 장애 조치 인스턴스에 복제됩니다.
-
HAProxy 구성을 DRBD 탑재 디렉터리에 복사합니다.
sudo mkdir -p /drbd/loadbalancer/etc/haproxy/ sudo cp /etc/haproxy/haproxy.cfg /drbd/loadbalancer/etc/haproxy/haproxy.cfg -
DRBD 탑재 경로의 구성을 사용하도록 HAProxy systemd unit 파일을 편집합니다. 각 인스턴스에서 이를 실행합니다.
sudo systemctl edit haproxy다음 줄을 추가하여 구성 파일 경로를 DRBD 탑재 경로로 업데이트합니다.
[Service] Environment="CONFIG=/drbd/loadbalancer/etc/haproxy/haproxy.cfg" -
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의 경우)를 구성하여 브레인 분할 및 데이터 손상을 방지해야 합니다.
장애 조치 확인
-
초기 상태를 확인합니다. HAProxy가 기본 인스턴스에서 실행 중인지 확인합니다.
sudo pcs status -
장애 조치를 시뮬레이션합니다. 프라이머리 노드를 대기 모드로 전환하여 모든 리소스를 프라이머리 노드에서 강제로 해제합니다.
sudo pcs node standbyprimary-node-name -
장애 조치를 확인합니다. 대기 인스턴스에서 클러스터 상태를 확인합니다. 이제 DRBD, 파일 시스템 및 HAProxy 리소스가 up-to-date 구성 파일이 있는 대기 인스턴스에서 실행되어야 합니다.
sudo pcs status실패한 인스턴스가 복구되면 마이그레이션하도록 Pacemaker를 구성하지 않는 한 로드 밸런서 서비스는 대기 인스턴스에 남아 있습니다.
-
노드를 다시 온라인 상태로 전환합니다.
sudo pcs node unstandbyprimary-node-name