Date: 6월 13, 2020
단계별 : Azure의 ISCSI 대상 서버 클러스터
최근에 누군가가 Azure에서 iSCSI 대상 서버 클러스터를 구축하도록 도왔으며 해당 특정 구성에 대한 단계별 가이드를 작성하지 않았다는 것을 깨달았습니다. 이를 해결하기 위해 직접 수행해야 할 경우를위한 단계별 지침이 있습니다.
전제 조건
Azure 및 Windows Server에 대해 잘 알고 있다고 가정하겠습니다. 따라서 세부 정보를 아끼지 않겠습니다. 최소한 전제 조건으로 다음을 수행했다고 가정 해 봅시다.
- 서로 다른 가용 영역에 각각 두 개의 서버 (SQL1, SQL2)를 프로비저닝하십시오 (가용성 세트도 가능하지만 가용 영역이 더 나은 SLA를 가짐)
- Azure Portal을 통해 고정 IP 주소를 할당
- 서버를 기존 도메인에 가입
- 두 노드 모두에서 장애 조치 클러스터링 기능 및 iSCSI 대상 서버 기능을 활성화했습니다.
- 각 노드에 3 개의 Azure Premium Disk를 추가하십시오.
참고 : 이것은 선택 사항이며 최소 하나의 디스크가 필요합니다. IOPS를 늘리기 위해 스토리지 풀에서 3 개의 프리미엄 Azure 디스크를 함께 스트라이핑하고 간단한 (RAID 0) 가상 디스크를 만듭니다. - SIOS DataKeeper는 클러스터에서 사용되는 복제 된 스토리지를 제공하는 데 사용됩니다. DataKeeper가 필요한 경우 여기에서 평가판을 요청할 수 있습니다.
로컬 스토리지 풀 생성
다시 한 번이 단계는 완전히 선택 사항이지만 IOPS를 높이기 위해 3 개의 Azure Premium 디스크를 단일 저장소 풀로 스트라이프합니다. 대신 동적 디스크와 스팬 볼륨을 사용하고 싶을 수도 있지만 그렇게하지 마십시오! 동적 디스크를 사용하는 경우 나중에 iSCSI 대상을 만들지 못하게하는 일반적인 비 호환성이 있음을 알 수 있습니다.
걱정하지 마십시오. 아래 설명에 따라 발생할 수있는 함정을 알고 있다면 로컬 스토리지 풀을 만드는 것이 매우 간단합니다. 공식 문서는 여기에서 찾을 수 있습니다.
함정 # 1 – 설명서에 스토리지 풀에 사용되는 볼륨의 최소 크기가 4GB라고 나와 있지만 P1 프리미엄 디스크 (4GB)가 인식되지 않는 것으로 나타났습니다. 실험실에서는 16GB P3 프리미엄 디스크를 사용했습니다.
함정 # 2 – 스토리지 풀을 만들려면 3 개 이상의 디스크가 있어야합니다.
함정 # 3 – 클러스터를 만들기 전에 저장소 풀을 만듭니다. 클러스터를 만든 후 클러스터를 만들려고하면 Microsoft가 클러스터 저장소 풀을 만들려고 할 때 큰 혼란에 빠질 것입니다. 클러스터 저장 영역 풀을 작성하지 않으므로 클러스터를 작성하기 전에 저장 영역 풀을 작성하여 혼란을 피하십시오. 클러스터가 작성된 후 스토리지 풀을 추가해야하는 경우 먼저 클러스터에서 노드를 제거하고 스토리지 풀을 작성해야합니다.
여기에있는 설명서를 기반으로 아래에 두 클러스터 노드 각각에 로컬 스토리지 풀을 구축 할 때 표시되는 스크린 샷이 나와 있습니다. 클러스터를 빌드하기 전에 두 서버 모두에서이 단계를 완료하십시오.
두 서버 모두에 기본 풀이 나타납니다.
마우스 오른쪽 단추를 클릭하고 새 스토리지 풀…을 선택하십시오.
이 마법사를 닫을 때 가상 디스크 생성을 선택하십시오
Standard, Premium 및 Ultra SSD의 조합을 사용하기로 결정한 경우 스토리지 계층을 생성 할 수 있습니다.
최상의 성능을 위해서는 단순 스토리지 레이아웃 (RAID 0)을 사용하십시오. Azure Managed Disks에는 백엔드에 3 중 중복성이 있으므로 안정성에 대해 걱정하지 마십시오. 최적의 성능을 위해서는 단순이 필요합니다.
성능을 위해 고정 프로비저닝을 사용하십시오. 어쨌든 전체 프리미엄 디스크에 대한 비용을 이미 지불하고 있으므로 모든 것을 사용할 필요는 없습니다.
클러스터 생성
각 서버마다 각각 45GB X 드라이브가 있으므로 기본 클러스터를 만들 것입니다. Azure에서 클러스터 생성은 정적 IP 주소를 지정할 수 있도록 Powershell을 통해 가장 잘 수행됩니다. GUI를 통해이 작업을 수행하면 Azure에서 정리해야 할 중복 IP 주소에 클러스터 IP를 할당한다는 사실을 곧 알게 될 것입니다.
다음은 새로운 클러스터를 생성하는 Powershell 코드의 예입니다.
새 클러스터-이름 mycluster -NoStorage -StaticAddress 10.0.0.100-노드 sql1, sql2
출력은 다음과 같습니다.
PS C : Users dave.DATAKEEPER> 새 클러스터-이름 mycluster -NoStorage
-StaticAddress 10.0.0.100-노드 sql1, sql2
경고 : 클러스터 된 역할을 만드는 동안 문제가 발생했습니다.
시작하지 못할 수 있습니다.
자세한 내용은 아래 보고서 파일을보십시오.
경고 : 보고서 파일 위치 : C : windows cluster Reports Create Cluster
2020.05.20의 마법사 mycluster
16.54.45.htm에서
이름
----
mycluster
보고서의 경고는 증인이 없다는 것을 알려줍니다. 이 클러스터에는 공유 스토리지가 없으므로 "Cloud Witness"또는 "File Share Witness"를 만들어야합니다. 해당 링크에 문서화되어 있으므로 해당 프로세스를 진행하지 않겠습니다.
다음 단계로 넘어 가기 전에 지금 이것을 막지 말고 지금 증인을 만드십시오!
이제 다음과 같은 기본 2 노드 클러스터가 있어야합니다.
클러스터 코어 IP 주소에 대한로드 밸런서 구성
Azure의 클러스터는 Azure 가상 네트워크가 무상 ARP를 지원하지 않는다는 점에서 고유합니다. 이것이 의미하는 바를 모르더라도 걱정하지 마십시오. 실제로 알아야 할 것은 클러스터 IP 주소에 직접 연결할 수 없다는 것입니다. 대신 클라이언트 연결을 활성 클러스터 노드로 리디렉션하는 Azure Load Balancer를 사용해야합니다.
Azure에서 클러스터에 대해로드 밸런서를 구성하려면 두 단계가 있습니다. 첫 번째 단계는로드 밸런서를 생성하는 것입니다. 두 번째 단계는 클러스터 IP 주소를 업데이트하여로드 밸런서의 상태 프로브를 수신하고 ILB와의 IP 주소 충돌을 피할 수있는 255.255.255.255 서브넷 마스크를 사용하는 것입니다.
먼저 클러스터 코어 IP 주소에 대한로드 밸런서를 생성합니다. 나중에이 문서 끝에 생성 될 iSCSI 클러스터 리소스 IP 주소를 처리하기 위해로드 밸런서를 편집합니다.
사용중인 고정 IP 주소는 코어 클러스터 IP 리소스를 생성 할 때 사용한 주소와 동일합니다.
로드 밸런서가 생성되면 아래와 같이로드 밸런서를 편집합니다
백엔드 풀에 두 개의 클러스터 노드 추가
백엔드 풀에 두 개의 클러스터 노드 추가
건강 프로브를 추가하십시오. 이 예에서는 59999를 포트로 사용합니다. 그 포트를 기억하십시오. 다음 단계에서 포트가 필요합니다.
모든 HA 포트를 리디렉션하기 위해 새 rue를 작성하십시오. 유동 IP가 사용 가능한지 확인하십시오.
2 단계 –로드 밸런서와 작동하도록 코어 IP 주소를 클러스터링하도록 편집
앞에서 언급했듯이로드 밸런서가 올바르게 작동하도록 구성하는 두 단계가 있습니다. 이제로드 밸런서가 있으므로 클러스터 노드 중 하나에서 Powershell 스크립트를 실행해야합니다. 다음은 클러스터 노드 중 하나에서 실행해야하는 스크립트 예입니다.
$ ClusterNetworkName =“클러스터 네트워크 1”
$ IPResourceName =“클러스터 IP 주소”
$ ILBIP =“10.0.0.100”
가져 오기 모듈 페일 오버 클러스터
Get-ClusterResource $ IPResourceName | 클러스터 매개 변수 설정
-여러 @ {Address = $ ILBIP; ProPortPort = 59998; SubnetMask = "255.255.255.255"
; Network = $ ClusterNetworkName; EnableDhcp = 0}
위의 스크립트에서 중요한 것은 사용자 환경에 맞는 모든 변수를 얻는 것 외에도 ProbePort가이 특정 IP 주소에 대한로드 밸런서 설정에서 정의한 것과 동일한 포트로 설정되어 있는지 확인하는 것입니다. 나중에 다른 포트를 사용하는 iSCSI 클러스터 IP 리소스에 대한 두 번째 상태 프로브를 생성 할 것입니다. 다른 중요한 점은 서브넷 세트를 255.255.255.255로 두는 것입니다. 잘못 보일 수도 있지만 이것이 바로 설정해야합니다.
실행 한 후 출력은 다음과 같아야합니다.
PS C : Users dave.DATAKEEPER> $ ClusterNetworkName =“클러스터 네트워크 1”
$ IPResourceName =“클러스터 IP 주소”
$ ILBIP =“10.0.0.100”
가져 오기 모듈 페일 오버 클러스터
Get-ClusterResource $ IPResourceName | 클러스터 매개 변수 설정
-여러 @ {Address = $ ILBIP; ProbePort = 59999; SubnetMask = "255.255.255.255"
; Network = $ ClusterNetworkName; EnableDhcp = 0}
경고 : 속성이 저장되었지만 모든 변경 사항이 적용되는 것은 아닙니다
클러스터 IP 주소가 오프라인이 된 후 다시 온라인이 될 때까지.
로드 밸런서에서 제대로 작동하려면 코어 클러스터 IP 리소스를 오프라인으로 전환 한 후 다시 온라인 상태로 만들어야합니다.
로드 밸런서를 생성하는 데 모든 작업을 올바르게 수행했다고 가정하면 두 서버의 서버 관리자는 아래 표시된 것처럼 클러스터를 온라인으로 나열해야합니다.
두 클러스터 노드에서 서버 관리자를 확인하십시오. 클러스터는 관리 효율성에서 "온라인"으로 표시되어야합니다.
DataKeeper 설치
여기서는 모든 단계를 수행하지는 않지만 기본적으로 두 클러스터 노드에 SIOS DataKeeper를 설치할 수 있습니다. 아주 간단한 설정입니다. 설정을 실행하고 모든 기본값을 선택하십시오. DataKeeper에 문제가 발생하면 대개 두 가지 중 하나입니다. 첫 번째 문제는 서비스 계정입니다. DataKeeper 서비스를 실행하는 데 사용중인 계정이 각 노드의 로컬 관리자 그룹에 있는지 확인해야합니다.
두 번째 문제는 방화벽과 관련이 있습니다. DataKeeper를 설치하면 로컬 Windows 방화벽이 자동으로 업데이트되지만 네트워크가 잠긴 경우 필요한 DataKeeper 포트를 통해 클러스터 노드가 서로 통신 할 수 있는지 확인해야합니다. 또한 ILB 상태 프로브가 서버에 도달 할 수 있는지 확인해야합니다.
DataKeeper가 설치되면 첫 번째 DataKeeper 작업을 작성할 수 있습니다. DataKeeper 인터페이스를 사용하여 복제하려는 각 볼륨에 대해 다음 단계를 완료하십시오.
DataKeeper 인터페이스를 사용하여 두 서버에 연결
새 직업 만들기를 클릭하고 이름을 지정하십시오.
클러스터에 DataKeeper 볼륨을 등록하려면 예를 클릭하십시오.
볼륨이 등록되면 Failover Cluster Manager의 사용 가능한 스토리지에 나타납니다
ISCSI 대상 서버 클러스터 생성
다음 단계에서는 클러스터에서 iSCSI 대상 서버 역할을 생성합니다. 이상적인 세상에서 나는 당신을 위해이 모든 것을 수행하는 Powershell 스크립트를 가지고 있지만 지금 당장은 GUI를 통해 그것을 수행하는 방법을 보여 드리겠습니다. Powershell 코드를 작성하는 경우 언제든지 나머지 사람들과 공유하십시오!
GUI 방법에는 한 가지 문제가 있습니다. ou는 IP 리소스가 생성 될 때 중복 IP 주소로 시작되어 클러스터 리소스가 수정 될 때까지 실패합니다. 그 과정도 함께 진행하겠습니다.
실패한 IP 주소 리소스의 속성으로 이동하여 고정 IP를 선택하고 네트워크에서 사용하지 않는 IP 주소를 선택하십시오. 이 주소를 기억하십시오.로드 밸런서를 업데이트 할 때 다음 단계에서 사용합니다.
이제 iSCSI 클러스터 리소스를 온라인 상태로 만들 수 있습니다.
ISCSI 대상 서버 클러스터 리소스 용로드 밸런서 업데이트
앞에서 언급 한 것처럼 클라이언트는 방금 iSCSI 대상 서버 클러스터 용으로 만든 클러스터 IP 주소 (10.0.0.110)에 직접 연결할 수 없습니다. 아래와 같이 앞에서 만든로드 밸런서를 업데이트해야합니다.
iSCSI 대상 클러스터 IP 리소스와 동일한 IP 주소를 사용하는 새로운 프런트 엔드 IP 주소를 추가하여 시작하십시오.
다른 포트에 두 번째 상태 프로브를 추가하십시오. 이 포트 번호를 기억하십시오. 다음에 실행할 powershell 스크립트에서 다시 사용합니다.
부하 분산 규칙을 하나 더 추가합니다. 방금 만든 주소를 사용하도록 프론트 엔드 IP 주소 및 상태 프로브를 변경하십시오. 또한 직접 서버 리턴이 사용 가능한지 확인하십시오.
로드 밸런서가 작동하게하는 마지막 단계는 클러스터 노드 중 하나에서 다음 Powershell 스크립트를 실행하는 것입니다. 새로운 Healthprobe 포트, IP 주소 및 IP 리소스 이름을 사용해야합니다.
$ ClusterNetworkName =“클러스터 네트워크 1”
$ IPResourceName =“IP 주소 10.0.0.0”
$ ILBIP =“10.0.0.110”
가져 오기 모듈 페일 오버 클러스터
Get-ClusterResource $ IPResourceName | 클러스터 매개 변수 설정
-여러 @ {Address = $ ILBIP; ProPortPort = 59998; SubnetMask = "255.255.255.255"
; Network = $ ClusterNetworkName; EnableDhcp = 0}
출력은 다음과 같아야합니다.
PS C : Users dave.DATAKEEPER> $ ClusterNetworkName =“클러스터 네트워크 1”
$ IPResourceName =“IP 주소 10.0.0.0”
$ ILBIP =“10.0.0.110”
가져 오기 모듈 페일 오버 클러스터
Get-ClusterResource $ IPResourceName | 클러스터 매개 변수 설정
-여러 @ {Address = $ ILBIP; ProPortPort = 59998; SubnetMask = "255.255.255.255"
; Network = $ ClusterNetworkName; EnableDhcp = 0}
경고 : 속성이 저장되었지만 모든 변경 사항이 적용되는 것은 아닙니다
IP 주소 10.0.0.0이 오프라인 상태가 된 후 다시 온라인 상태가 될 때까지.
설정을 적용하려면 리소스를 오프라인 및 온라인 상태로 만들어야합니다.
클러스터 된 ISCSI 대상 생성
시작하기 전에 두 서버의 서버 관리자가 두 개의 클러스터 노드와 두 개의 클러스터 이름 리소스를 볼 수 있는지 확인하고 아래 표시된 것처럼 관리 효율성 아래에 모두 "온라인"으로 표시되는지 확인하는 것이 가장 좋습니다.
두 서버 중 하나에 해당 클러스터 이름을 쿼리하는 데 문제가 있으면 다음 단계는 실패합니다. 문제가 발생하면로드 밸런서 및 Powershell 스크립트를 생성하기 위해 수행 한 모든 단계를 다시 확인하십시오.
이제 첫 번째 클러스터 된 iSCSI 대상을 만들 준비가되었습니다. 클러스터 노드 중 하나에서 iSCSI 대상을 작성하는 방법에 대한 예제로 아래에 설명 된 단계를 따르십시오.
물론이 서버를이 iSSI 대상에 연결할 서버에 할당하십시오.
거기에 이제 Azure에 작동하는 iSCSI 대상 서버가 있습니다.
당신이 이것을 구축하면 의견을 남기고 당신이 그것을 어떻게 사용할 계획인지 알고 있습니다!
치명적이지 않은 클러스터링의 허가를 받아 복제 된 기사