Azure Elastic SAN에서 클러스터된 애플리케이션 배포
Azure Elastic SAN 볼륨을 여러 컴퓨팅 클라이언트에 동시에 연결할 수 있으므로 클러스터 애플리케이션을 Azure에 배포하거나 마이그레이션할 수 있습니다. 클러스터 관리자를 사용하여 WSFC(Windows Server 장애 조치 클러스터) 또는 Pacemaker를 사용하여 Elastic SAN 볼륨을 공유해야 합니다. 클러스터 관리자는 클러스터 노드 통신 및 쓰기 잠금을 처리합니다. Elastic SAN은 기본적으로 SMB 또는 NFS를 통해 액세스할 수 있는 완전 관리형 파일 시스템을 제공하지 않습니다.
공유 볼륨으로 사용되는 경우 가용성 영역 또는 지역에서 Elastic SAN 볼륨을 공유할 수 있습니다. 영역 간에 로컬 중복 스토리지 SAN에서 볼륨을 공유하면 볼륨과 클라이언트 간의 대기 시간이 증가하여 성능이 저하됩니다.
제한 사항
- Elastic SAN 연결 스크립트를 사용하여 VMSS의 가상 머신 또는 가용성 집합의 가상 머신에 공유 볼륨을 연결할 수 있습니다. 장애 도메인 맞춤은 지원되지 않습니다.
- 공유 볼륨에서 지원하는 최대 세션 수는 128개입니다.
- 개별 클라이언트는 성능 향상을 위해 개별 볼륨에 대한 여러 세션을 만들 수 있습니다. 예를 들어 각 클라이언트에서 32개의 세션을 만드는 경우 4개의 클라이언트만 단일 볼륨에 연결할 수 있습니다.
Elastic SAN의 다른 제한 사항은 Azure Storage 기능 지원을 참조하세요.
작동 방식
Elastic SAN 공유 볼륨은 SCSI-3 영구 예약을 사용하여 초기자(클라이언트)가 공유 Elastic SAN 볼륨에 대한 액세스를 제어할 수 있도록 합니다. 이 프로토콜을 사용하면 초기자가 Elastic SAN 볼륨에 대한 액세스를 예약하고, 다른 초기자의 쓰기(또는 읽기) 액세스를 제한하고, 기본적으로 세션 수명 이후의 볼륨에서 예약을 유지할 수 있습니다.
SCSI-3 PR은 클러스터 시나리오에서 공유 볼륨 내에서 데이터 일관성 및 무결성을 유지하는 데 중요한 역할을 합니다. 클러스터의 컴퓨팅 노드는 클러스터 애플리케이션에서 선택한 예약에 따라 연결된 Elastic SAN 볼륨을 읽거나 쓸 수 있습니다.
영구 예약 흐름
다음 다이어그램은 SCSI-3 PR을 사용해 한 노드에서 다른 노드로 장애 조치할 수 있는 2노드 클러스터된 데이터베이스 애플리케이션 샘플을 보여 줍니다.
흐름은 다음과 같습니다.
- Azure VM1 및 VM2 레지스터 둘 다에서 실행되는, 클러스터된 애플리케이션은 Elastic SAN 볼륨에 대한 읽기 또는 쓰기 의도를 등록합니다.
- 그러면 VM1의 애플리케이션 인스턴스가 볼륨에 대한 독점 쓰기 예약을 받습니다.
- 이 예약은 볼륨에 적용되며 이제 데이터베이스가 볼륨에 독점적으로 데이터를 쓸 수 있습니다. VM2의 애플리케이션 인스턴스 쓰기가 실패하게 됩니다.
- VM1의 애플리케이션 인스턴스가 중단되면 VM2의 인스턴스가 이제 데이터베이스 장애 조치를 시작하고 및 볼륨 제어를 인계할 수 있습니다.
- 이 예약이 이제 볼륨에 적용되어 VM1에서 쓰기를 허용하지 않습니다. VM2의 쓰기만 허용합니다.
- 클러스터된 애플리케이션은 데이터베이스 장애 조치(failover)를 완료하고 VM2의 요청을 처리할 수 있습니다.
다음 다이어그램은 기계 학습 모델 학습과 같은 병렬 프로세스를 실행하기 위해 Elastic SAN 볼륨에서 데이터를 읽는 여러 노드로 구성된 다른 일반적인 클러스터된 워크로드를 보여 줍니다.
흐름은 다음과 같습니다.
- 모든 VM 레지스터에서 실행되는, 클러스터된 애플리케이션은 Elastic SAN 볼륨에 대한 읽기 또는 쓰기 의도를 등록합니다.
- VM1의 애플리케이션 인스턴스는 다른 VM에서 디스크에 대한 읽기를 시작할 때 볼륨에 대한 독점 쓰기 예약을 받습니다.
- 이 예약은 볼륨에 적용됩니다.
- 이제 클러스터의 모든 노드에서 볼륨의 데이터를 읽을 수 있습니다. 클러스터의 모든 노드를 대표하는 하나의 노드만 볼륨에 결과를 다시 씁니다.
지원되는 SCSI PR 명령
다음 명령은 Elastic SAN 볼륨에서 지원됩니다.
볼륨과 상호 작용하려면 적절한 영구 예약 작업으로 시작합니다.
- PR_REGISTER_KEY
- PR_REGISTER_AND_IGNORE
- PR_GET_CONFIGURATION
- PR_RESERVE
- PR_PREEMPT_RESERVATION
- PR_CLEAR_RESERVATION
- PR_RELEASE_RESERVATION
PR_RESERVE, PR_PREEMPT_RESERVATION 또는 PR_RELEASE_RESERVATION을 사용하는 경우 다음의 영구 예약 형식 중 하나를 제공합니다.
- PR_NONE
- PR_WRITE_EXCLUSIVE
- PR_EXCLUSIVE_ACCESS
- PR_WRITE_EXCLUSIVE_REGISTRANTS_ONLY
- PR_EXCLUSIVE_ACCESS_REGISTRANTS_ONLY
- PR_WRITE_EXCLUSIVE_ALL_REGISTRANTS
- PR_EXCLUSIVE_ACCESS_ALL_REGISTRANTS
영구 예약 유형은 클러스터의 각 노드에서 볼륨에 대한 액세스를 결정합니다.
영구 예약 유형 | 예약 소유자 | 등록됨 | 기타 |
---|---|---|---|
예약 없음 | 해당 없음 | 읽기/쓰기 | 읽기-쓰기 |
쓰기 전용 | 읽기/쓰기 | 읽기 전용 | 읽기 전용 |
단독 액세스 | 읽기/쓰기 | 액세스 없음 | 액세스 없음 |
쓰기 전용 - 등록자만 | 읽기-쓰기 | 읽기/쓰기 | 읽기 전용 |
단독 액세스 - 등록자만 | 읽기-쓰기 | 읽기/쓰기 | 액세스 없음 |
쓰기 전용 - 모든 등록자 | 읽기-쓰기 | 읽기/쓰기 | 읽기 전용 |
단독 액세스 - 모든 등록자 | 읽기-쓰기 | 읽기/쓰기 | 액세스 없음 |
또한 사용 시 영구 예약 키를 제공해야 합니다.
- PR_RESERVE
- PR_REGISTER_AND_IGNORE
- PR_REGISTER_KEY
- PR_PREEMPT_RESERVATION
- PR_CLEAR_RESERVATION
- PR_RELEASE-RESERVATION.