Azure Stack Hub를 사용하여 iSCSI 스토리지에 연결

이 문서의 템플릿을 사용하여 Azure Stack Hub VM(가상 머신)을 온-프레미스 iSCSI 대상에 연결하여 Azure Stack Hub 외부 및 데이터 센터의 다른 곳에서 호스트되는 스토리지를 사용하도록 VM을 설정할 수 있습니다. 이 문서에서는 Windows 컴퓨터를 iSCSI 대상으로 사용하는 것을 살펴봅니다.

Azure Intelligent Edge 패턴 GitHub 리포지토리의 lucidqdreams 포크에서 템플릿을 찾을 수 있습니다. 템플릿은 storage-iSCSI 폴더에 있습니다. 템플릿은 Azure Stack Hub 쪽에서 iSCSI 대상에 연결하는 데 필요한 인프라를 설정하도록 설계되었습니다. 여기에는 함께 제공되는 VNet, NSG, PIP 및 스토리지와 함께 iSCSI 초기자 역할을 하는 가상 머신이 포함됩니다. 템플릿이 배포된 후 두 개의 PowerShell 스크립트를 실행하여 구성을 완료해야 합니다. 하나의 스크립트는 온-프레미스 VM(대상)에서 실행되고 하나는 Azure Stack Hub VM(초기자)에서 실행됩니다. 이 작업이 완료되면 Azure Stack Hub VM에 온-프레미스 스토리지가 추가됩니다.

개요

다이어그램은 Azure Stack Hub 외부의 스토리지가 iSCSI 프로토콜을 통해 Azure Stack Hub 호스팅 VM 내에 탑재될 수 있도록 온-프레미스(물리적 또는 가상)의 iSCSI 탑재 디스크를 사용하여 Azure Stack Hub에서 호스트되는 VM을 보여 줍니다.

다이어그램은 외부 iSCSI 탑재 디스크에 액세스하는 Azure Stack Hub에서 호스트되는 VM을 보여 줍니다.

요구 사항

  • Windows Server 2016 Datacenter 또는 Windows Server 2019 Datacenter를 실행하는 온-프레미스 머신(물리적 또는 가상)입니다.
  • 필수 Azure Stack Hub Marketplace 항목:
    • Windows Server 2016 Datacenter 또는 Windows Server 2019 Datacenter(최신 빌드 권장).
    • PowerShell DSC 확장.
    • 사용자 지정 스크립트 확장.
    • 기존 가상 또는 물리적 컴퓨터입니다. 이상적으로이 컴퓨터에는 두 개의 네트워크 어댑터가 있습니다. 이는 instance SAN과 같은 또 다른 iSCSI 대상이 될 수도 있습니다.

고려할 사항

  • 네트워크 보안 그룹이 템플릿 서브넷에 적용됩니다. 이를 검토하고 필요에 따라 추가 허용량을 만듭니다.
  • RDP 거부 규칙은 Tunnel NSG에 적용되며 공용 IP 주소를 통해 VM에 액세스하려는 경우 허용하도록 설정해야 합니다.
  • 이 솔루션은 DNS 확인을 고려하지 않습니다.
  • Chapusername 및 Chappassword를 변경해야 합니다. Chappassword의 길이는 12~16자여야 합니다.
  • 이 템플릿은 iSCSI 연결이 구성에서 로컬 주소를 사용하므로 VM에 대한 고정 IP 주소를 사용합니다.
  • 이 템플릿은 BYOL Windows 라이선스를 사용합니다.
  • Linux 기반 시스템을 iSCSI 대상에 연결할 수도 있습니다. ubuntu 설명서의 iSCSI 초기자 문서에서 지침을 찾을 수 있습니다.

옵션

  • _artifactsLocation 사용하여 고유한 Blob Storage 계정 및 SAS 토큰을 사용할 수 있으며 _artifactsLocationSasToken 매개 변수는 SAS 토큰과 함께 고유한 스토리지 Blob을 사용하는 기능을 사용할 수 있습니다.
  • 이 템플릿은 VNet 명명 및 IP 주소 지정에 대한 기본값을 제공합니다.
  • 이 구성에는 iSCSI 클라이언트에서 오는 하나의 iSCSI nic만 있습니다. 별도의 서브넷과 NIC를 활용하기 위해 여러 구성을 테스트했습니다. 그러나 여러 게이트웨이에 문제가 있었고 트래픽을 격리하고 실제로 중복되는 별도의 스토리지 서브넷을 만들려고 했습니다.
  • 배포가 실패할 수 있으므로 이러한 값을 법적 서브넷 및 주소 범위 내에 유지해야 합니다.
  • PowerShell DSC 패키지의 주요 목적은 보류 중인 다시 부팅을 위해 검사 것입니다. 필요한 경우 이 DSC를 추가로 사용자 지정할 수 있습니다. 자세한 내용은 omputerManagementDsc를 참조하세요.

리소스 그룹 템플릿(iSCSI 클라이언트)

다이어그램은 iSCSI 대상에 연결하는 데 사용할 수 있는 iSCSI 클라이언트를 만들기 위해 템플릿에서 배포된 리소스를 보여 줍니다. 이 템플릿은 VM 및 기타 리소스를 배포합니다. 또한 prepare-iSCSIClient.ps1 실행하고 VM을 다시 부팅합니다.

다이어그램은 iSCSI 대상에 연결할 iSCSI 클라이언트를 만들기 위해 템플릿에서 배포된 리소스를 보여 줍니다. 내부 서브넷 및 NIC(네트워크 카드), 내부 PIP(프라이빗 인터넷 프로토콜) 및 NSG(네트워크 보안 그룹)가 있는 파일 서버를 보여 줍니다.

배포 프로세스

리소스 그룹 템플릿은 출력을 생성합니다. 이 출력은 다음 단계의 입력입니다. 주로 iSCSI 트래픽이 발생하는 서버 이름 및 Azure Stack Hub 공용 IP 주소에 중점을 줍니다. 이 예제에서는 다음과 같이 복사합니다.

  1. 인프라 템플릿을 배포합니다.
  2. 데이터 센터의 다른 곳에서 호스트되는 VM에 Azure Stack Hub VM을 배포합니다.
  3. 가상 머신 또는 물리적 서버일 수 있는 iSCSI 대상의 스크립트에 대한 출력 매개 변수로 템플릿의 IP 주소 및 서버 이름 출력을 사용하여 를 실행 Create-iSCSITarget.ps1 합니다.
  4. iSCSI 대상 서버의 외부 IP 주소 또는 주소를 입력으로 사용하여 스크립트를 Connect-toiSCSITarget.ps1 실행합니다.

다이어그램은 위에 나열된 네 단계 중 처음 세 단계를 보여 줍니다. 여기에는 입력 및 출력이 포함됩니다. 단계는 인프라 배포, iSCSI 대상 만들기 및 iSCSI에 연결입니다.

azuredeploy.json에 대한 입력

매개 변수 default description
WindowsImageSKU 2019-Datacenter 기본 Windows VM 이미지를 선택하세요.
VMSize Standard_D2_v2 VM 크기를 입력하세요.
VMName FileServer VM 이름
adminUsername storageadmin 새 VM의 관리자 이름
adminPassword 새 VM의 관리자 계정에 대한 암호입니다. 기본값은 구독 ID입니다.
VNetName 스토리지 VNet의 이름입니다. 리소스에 레이블을 지정하는 데 사용됩니다.
VNetAddressSpace 10.10.0.0/23 VNet의 주소 공간
VNetInternalSubnetName 내부 VNet 내부 서브넷 이름
VNetInternalSubnetRange 10.10.1.0/24 VNet 내부 서브넷의 주소 범위
InternalVNetIP 10.10.1.4 파일 서버의 내부 IP에 대한 정적 주소입니다.
_artifactsLocation
_artifactsLocationSasToken

배포 단계

  1. 를 사용하여 iSCSI 클라이언트 인프라 배포 azuredeploy.json
  2. 온-프레미스 서버 iSCSI 대상에서 실행 Create-iSCSITarget.ps1 합니다. 템플릿이 완료되면 첫 번째 단계의 출력을 사용하여 온-프레미스 서버 iSCSI 대상에서 Create-iSCSITarget.ps1 실행해야 합니다.
  3. iSCSI 클라이언트에서 를 실행 Connect-toiSCSITarget.ps1 합니다. iSCSI 대상의 세부 정보를 사용하여 iSCSI 클라이언트의 Connect-toiSCSITarget.ps1 해제합니다.

기존 VM에 iSCSI 스토리지 추가

기존 Virtual Machine에서 스크립트를 실행하여 iSCSI 클라이언트에서 iSCSI 대상으로 연결할 수도 있습니다. 이 흐름은 iSCSI 대상을 직접 만드는 경우입니다. 이 다이어그램은 PowerShell 스크립트의 실행 흐름을 보여 줍니다. 이러한 스크립트는 스크립트 디렉터리에서 찾을 수 있습니다.

다이어그램은 아래에 설명된 세 가지 스크립트를 보여 줍니다. 실행 순서로는 Prepare-iSCSIClient.ps1, (클라이언트에서 실행), iSCSITarget.ps1 만들기(대상에서 실행) 및 Connect-toiSCSITarget.ps1(클라이언트의 exectutes)입니다.

Prepare-iSCSIClient.ps1

스크립트는 Prepare-iSCSIClient.ps1 iSCSI 클라이언트에 필수 구성 요소를 설치합니다. 여기에는 다음이 포함됩니다.

  • Multipath-IO 서비스 설치
  • iSCSI 초기자 서비스 시작을 자동으로 설정
  • iSCSI에 대한 다중 경로 MPIO 지원 사용
  • 모든 iSCSI 볼륨의 자동 클레임 사용
  • 디스크 시간 제한을 60초로 설정

이러한 필수 구성 요소를 설치한 후 시스템을 다시 부팅하는 것이 중요합니다. MPIO 부하 분산 정책을 설정하려면 다시 부팅해야 합니다.

Create-iSCSITarget.ps1

스크립트는 Create-iSCSITarget.ps1 스토리지 서버에서 실행되어야 합니다. 초기자가 제한하는 여러 디스크 및 대상을 만들 수 있습니다. 이 스크립트를 여러 번 실행하여 여러 대상에 연결할 수 있는 여러 가상 디스크를 만들 수 있습니다. 다중 디스크를 하나의 대상에 연결할 수 있습니다.

입력 default description
RemoteServer FileServer iSCSI 대상에 연결하는 서버의 이름
RemoteServerIPs 1.1.1.1 iSCSI 트래픽이 들어오는 IP 주소
DiskFolder C:\iSCSIVirtualDisks 가상 디스크를 저장할 폴더 및 드라이브
DiskName DiskName 디스크 VHDX 파일의 이름
DiskSize 5gb VHDX 디스크 크기
TargetName RemoteTarget01 iSCSI 클라이언트의 대상 구성을 정의하는 데 사용되는 대상 이름입니다.
ChapUsername 사용자 이름 Chap 인증의 사용자 이름
ChapPassword userP@ssw0rd! Chap 인증의 암호 이름입니다. 12~16자여야 합니다.

Connect-toiSCSITarget.ps1

Connect-toiSCSITarget.ps1 iSCSI 클라이언트에서 실행되고 iSCSI 대상에서 제공하는 디스크를 iSCSI 클라이언트에 탑재하는 최종 스크립트입니다.

입력 default description
TargetiSCSIAddresses "2.2.2.2","2.2.2.3" iSCSI 대상의 IP 주소
LocalIPAddresses "10.10.1.4" iSCSI 트래픽이 들어오는 내부 IP 주소입니다.
LoadBalancePolicy C:\iSCSIVirtualDisks iSCSI 트래픽이 들어오는 IP 주소
ChapUsername 사용자 이름 Chap 인증의 사용자 이름
ChapPassword userP@ssw0rd! Chap 인증의 암호 이름입니다. 12~16자여야 합니다.

다음 단계

Azure Stack Hub 네트워킹에 대한 차이점 및 고려 사항