VHDToAzure_ 마이그레이션절차서 Prepared for. Wednesday, 4 May 2016 Version 1.0 Draft Prepared by 곽동영 System Engineer dykwak@cnthoth.com Contributors 곽동영 System Engineer dykwak@cnthoth.com Page i
Revision and Signoff Sheet Change Record Date Author Version Change reference 2016-01-15 곽동영 0.5 초안작성 2016-01-21 곽동영 1.0 내용추가 2016-02-01 곽동영 1.1 VM 배포내용추가수정 Reviewers Name Version approved Position Date 곽동영 1.0 MS 기술파트파트장 2016-1-21 윤재호 1.1 MS Cloud 파트파트장 2016-1-21 Page ii
Table of Contents Executive Summary... 1 1 사전준비... 2 1.1 Legacy 서버준비... 2 1.1.1 가상서버의파일크기확인... 2 1.1.2 VHD 파일형식확인... 2 1.1.3 도메인가입여부확인... 3 1.1.4 WinRM 활성화... 4 1.1.5 원격데스크톱활성화및방화벽예외처리확인... 4 1.1.6 가상머신종료... 6 1.2 Azure 준비... 7 1.2.1 Azure 로그인... 7 1.2.2 리소스그룹생성... 8 1.2.3 저장소생성... 9 2 Virtual Machine 배포... 13 2.1 VHD 업로드... 13 2.1.1 Azure PowerShell 설치... 13 2.1.2 Azure PowerShell Login... 13 2.1.3 VHD Upload... 14 2.2 Virtual Machine 배포... 15 2.2.1 VM 템플릿배포... 15 2.2.2 네트워크보안그룹 (NSG) 생성... 16 2.3 SMB 파일서비스연결... 20 2.3.1 SMB 파일공유생성... 20 2.3.2 Windows 를실행하는 Azure 가상컴퓨터에공유마운트... 21 Page iii
EXECUTIVE SUMMARY 이문서는씨앤토트 ( 주 ) 에서진행하는 Hyper-V 기반의가상서버를 Azure 로마이그레이션하는작업에대해기술합니다. Azure 로마이그레이션하는방법은여러가지가있지만이문서에서는기존에보유하고있는 VHD 파일을 Azure 로 Upload 하여해당파일을사용하여 Virtual Machine 을구성하는방법입니다. 또한, 이문서는 Azure 의리소스관리자를통한구성방법을기술하였습니다. 클래식방식과는구현방법이다르기때문에이문서를참고해서는안됩니다. Page 1
1 사전준비 1.1 Legacy 서버준비 1.1.1 가상서버의파일크기확인 AZURE 로 VHD 를업로드하기위해서는 VHD 파일크기가 127GB 이하여야합니다. 127GB 이상의 VHD 파일은지원되지않습니다. 1.1.2 VHD 파일형식확인 Azure VM 은 VHDX 파일을지원하지않기때문에 VHD 파일인지확인해야합니다. * Azure 는 GPT 방식의파일은지원하지않습니다. Page 2
* 만약 VHD 파일이아닌 VHDX 파일이라면아래의방식으로 VHD 파일로변환하는작업을진행합니다. 1. [Hyper-V 관리자 ] 에서실행중인가상머신을중지합니다. Hyper-V 호스트를마우스우클릭후 [ 디스크검사 ] 를 클릭합니다. 2. [ 작업선택 ] 에서 " 변환 " 을선택합니다. 3. [ 가상하드디스크변환 ] 에서 "VHD" 를선택하여기존 VHDX 가상하드디스크를 VHD 형식으로변환합니다. 1.1.3 도메인가입여부확인 현재구성에서는 Azure 와온-프레미스서버사이에 VPN 을통한 Site-To-Site 연결을하지않기때문에도메인에가입된서버를 Azure 로이동할경우인증처리를할수없습니다. 도메인에가입되어있다면 Workgroup 으로전환하는작업을진행하여야합니다. Page 3
1.1.4 WinRM 활성화 효율적인관리를위하여 Windows Remote Management 기능을활성화합니다. * Windows Remote Management 이란? Microsoft Windows Server 는 WinRM 을통해원격에서서버를관리할수있습니다. ( 예, 서버관리도구, Windows PowerShell) Windows Server 2012 부터는기본적으로활성화되어있습니다. 1.1.5 원격데스크톱활성화및방화벽예외처리확인 1. 원격데스크톱활성화 Page 4
2. 방화벽예외처리 ( 원격데스크톱 + Windows Remote Management) 방화벽룰을통해원격데스크톱과 WinRM 포를 Open 하거나방화벽을사용안함으로 설정합니다. Page 5
1.1.6 가상머신종료 Azure 로가상서버를 Upload 하기위한사전준비작업이완료되었으므로가상머신을종료합니다. 온-프레미스에서만든 VHD 이미지를 Azure 에서새로운이미지를만들때마다사용하려면 sysprep 작업을진행해야하지만현재실행중인 Legacy VM 을 Azure 로마이그레이션하는작업에는 sysprep 을진행해서는안됩니다. * Sysprep 란? https://technet.microsoft.com/ko-kr/library/cc721940(v=ws.10).aspx Page 6
1.2 Azure 준비 Microsoft Azure 에 VM 을운영하기위해서는사전에운영환경준비작업을해야합니다. 1. 리소스그룹생성 2. 저장소생성 3. 가상네트워크생성 1.2.1 Azure 로그인 Azure 에서사용할회사계정을만든후포털에로그인합니다. 1. Azure Portal 로그인 http://portal.azure.com 로접속한후관리자계정으로로그인합니다. Page 7
1.2.2 리소스그룹생성 리소스그룹이란가상머신, 가상네트워크, 데이터베이스등 Azure 에서관리할리소스들을하나의그룹으로묶어관리하는개체입니다. 이리소스그룹으로리소스그룹내의리소스들을한번에배포및관리할수있게됩니다. ( 기존클래식개체의경우리소스들의변경내용을수동으로업데이트해야했습니다.) 1. 리소스그룹생성 그룹이름과위치를지정하여그룹을생성합니다. 위치는리소스내의서비스들을호스트할 Azure DataCenter 를지정합니다. 이번작업에서는홍콩 ( 동아시아 ) 에위치한 DataCenter 를사용합니다. Page 8
1.2.3 저장소생성 저장소란 Azure 상에서 VHD 및파일서비스등을이용하기위한스토리지공간입니다. 저장소는아래와같이 4 가지로구분됩니다. 형식 내용 Blob 저장소문서및미디어파일과같은구조화되지않은데이터를저장. 테이블저장소 구조화된 NoSQL 데이터를저장 큐저장소 메시지를저장 파일저장소 SMB 기반의파일저장소 1. 저장소를생성 [ 새로만들기 ] [Data + Storage] [ 저장소 ] 를선택합니다. 배포모델은 리소스관리자 를선택하고만들기를선택합니다. Page 9
* 리소스관리자 : 리소스관리자배포모델은응용프로그램을구성하는서비스를배포하고관리하는새로운방식입니다. (Azure 뉴포털에서사용가능 ) 기존클래식방식에비해아래와같은이점이있습니다. 이서비스를개별적으로처리하는것이아니라그룹으로솔루션에대한모든서비스를배포, 관리및모니터링할수있습니다. 앱수명주기내내응용프로그램을반복적으로배포하며안심하고일관된상태로리소스를배포할수있습니다. 선언적템플릿을사용하여배포를정의할수있습니다. 올바른순서로배포되므로리소스간의종속성을정의할수있습니다. 역할기반액세스제어 (RBAC) 가관리플랫폼으로통합되기때문에리소스그룹의모든서비스에대해액세스제어를적용할수있습니다. 리소스에태그를적용하여논리적으로구독에서모든리소스를구성할수있습니다. Page 10
Name - 저장소이름을지정합니다. 형식 LRS( 로컬중복 ) GRS( 영역중복 ) GRS( 지리중복 ) RA-GRS( 읽기액세스 지리중복 ) 단일데이터센터 지역내에있거나여러 LRS 와동일하고수백 GRS 와동일하고보조 내에여려개의도익 지역에있는여러데이터 마일떨어진곳에있는 데이터센터에대한 진행방법 데이터복사본을 센터에세개의데이터 보조데이터센터에 읽기권한이있습니다 만듭니다. 복사본을저장합니다. 블록 여러개의동기 Blob 에만적용됩니다. 복사본이보관됩니다. 총복사본 수 3 3 6 6 경제적인로컬저장소 블록 Blob 저장소를위한 중대한데이터센터 중단시데이터에대한 사용하는 또는데이터거버넌스 높은내구성의경제적인 중단또는재해로부터 읽기권한을제공하여 이유 옵션 보호 최대데이터가용성및 내구성보장 가용성 (SLA) 99.9% 읽기 / 쓰기 99.9% 읽기 / 쓰기 99.9% 읽기 / 쓰기 99.9% 읽기 99.99% 쓰기 진단 저장소계정을모니터랑할지여부를결정합니다. 저장소분석을사용하여사용자계정에 대한메트릭을추적하고요청데이터를기록할수있습니다. ( 추가비용발생 ) 2. 컨테이너생성 Page 11
컨테이너는그룹화된 BLOB 집합입니다. VHD 파일을업로드하기위해 1 개의컨테이너가필수로필요합니다. 모든 BLOB 은컨테이너에있어야하며저장소계정은개수에제한없이컨테이너를포함할수있지만적어도하나는포함해야합니다. [ 저장소 ] [Blob] [ 컨테이너 ] 생성 * 액세스형식 : 컨테이너의데이터에공개적으로액세스할수있는지여부를결정합니다. 기본적으로컨테이너데이터는계정소유자전용이므로 [ 개인 ] 으로선택합니다. Blob 에대한공용읽기권한을허용하려면 [Blob], 공용읽기및목록권한을허용하려면 [ 컨테이너 ] 를선택합니다. Page 12
2 VIRTUAL MACHINE 배포 2.1 VHD 업로드 2.1.1 Azure PowerShell 설치 1. 준비된 VHD 파일을 Azure Blob 스토리지로업로드하기위해서 Windows Azure PowerShell 을이용합니다. 아래경로에서설치파일을다운받아설치를진행합니다. https://azure.microsoft.com/en-us/documentation/articles/powershell-install-configure/ * Azure New Portal 에서리소스관리자모드로 VM 을관리하기위해서는 Azure PowerShell 0.9.4 이후버전이필요합니다. * sysprep 를활용한템플릿 VM 은 Windows Server 2012 이후버전만가능합니다. ( 금번작업은 sysprep 를이용하지않습니다.) 2.1.2 Azure PowerShell Login 설치된 PowerShell 을실행하여 Azure 에액세스하기위해로그인작업을진행합니다. 1. Azure 구독에연결합니다. Add-AzureAccount 2. Azure Resource Manager 모드관리를위해아래와같은명령어를실행합니다. Login-AzureRmAccount 3. VHD 파일을업로드합니다. Page 13
2.1.3 VHD Upload Add-AzureRmVhd ResourceGroupName <resourcename> Destination <uri> LocalFilePath <FileInfo> ResourceGroupName: Azure 저장소계정이있는리소스그룹이름 Destination: Azure 저장소컨테이너 URL + 업로드이미지이름 LocalFilePath: 업로드할로컬 VHD 파일경로 Add-AzureRmVhd ResourceGroupName RG1 Destination https://storage01.blob.core.windows.net/vhds/svrglms. LocalFilePath c:\azureupload_vhd\windows Server 2008 R2 SVRGlms.vhd 소요시간 : Azure 로의업로드시간은환경에따라많은차이가있을수있습니다. 유로지스넷네트워크기준총 1 시간 30 분정도소요되었습니다. ( 디스크사이즈 70GB, 실제 사이즈 50GB) Page 14
2.2 Virtual Machine 배포 2.2.1 VM 템플릿배포 1. 업로드한 VHD 이미지를이용하여 VM 을만들기위해서는사전에준비한 Azure PowerShell 을이용합니다. # Create the Network in Azure $pip = New-AzureRMPublicIpAddress -Name $nicname -ResourceGroupName $rgname - Location $location -AllocationMethod Static $subnetconfig = New-AzureRMVirtualNetworkSubnetConfig -Name $subnet1name - AddressPrefix $vnetsubnetaddressprefix $vnet = New-AzureRMVirtualNetwork -Name $vnetname -ResourceGroupName $rgname -Location $location -AddressPrefix $vnetaddressprefix -Subnet $subnetconfig $nic = New-AzureRMNetworkInterface -Name $nicname -ResourceGroupName $rgname -Location $location -SubnetId $vnet.subnets[0].id -PublicIpAddressId $pip.id ## Setup local VM object $vm = New-AzureRMVMConfig -VMName $vmname -VMSize $vmsize $vm = Add-AzureRMVMNetworkInterface -VM $vm -Id $nic.id $osdiskuri = "https://logisstorage.blob.core.windows.net/vhds/svrglms.vhd" $vm = Set-AzureRMVMOSDisk -VM $vm -Name $osdiskname -VhdUri $osdiskuri - CreateOption attach -Windows ## Create the VM in Azure New-AzureRMVM -ResourceGroupName $rgname -Location $location -VM $vm - Verbose -Debug Page 15
2. 정상적으로프로비저닝이끝나면아래와같이별도의 vhd 파일이생성됨을확인할수 있습니다. Upload 했던 vhd 파일은더이상필요없다면제거해도됩니다. 2.2.2 네트워크보안그룹 (NSG) 생성 NSG( 네트워크보안그룹 ) 은 ACL( 액세스제어목록 ) 의가상네트워크에 VM 인스턴스에대한 허용 / 거부네트워크트래픽규칙의목록을포함합니다. NSG 는서브넷또는서브넷내의개별 VM Page 16
인스턴스 ( 클래식만 ), 개별 NIC ( 리소스관리자배포에만 ) 중하나와연결될수있습니다. NSG 를 서브넷과연결한경우 ACL 규칙은해당서브넷에있는모든 VM 인스턴스에적용됩니다. 또한 개별 VM 에대한트래픽은해당 VM 에직접 NSG 를연결하여추가로제한할수있습니다. 1. 네트워크보안그룹생성 2. 인바운드보안규칙 Page 17
3. 네트워크인터페이스연결 생성된네트워크보안그룹은기존에만들었던 VM 의 NIC 에할당합니다. Page 18
* 기본규칙 모든 NSG 에는기본규칙집합이포함됩니다. 기본규칙은삭제할수없지만, 가장낮은우선순위가할당되기 때문에직접만든규칙으로재정의할수있습니다. * ICMP 트래픽현재 NSG 규칙은 TCP 또는 UDP 프로토콜만허용합니다. ICMP* 에대한고유태그는없습니다. 그러나 ICMP 트래픽은기본적으로 VNet 내의모든포트및프로토콜 '' 의송 / 수신트래픽을허용하는인바운드 VNet 규칙을통해가상네트워크내에서허용됩니다. Page 19
2.3 SMB 파일서비스연결 Azure 파일저장소는표준 SMB 프로토콜을사용하여클라우드에서파일공유를제공합니다. 클라이언트가파일저장소에액세스하면사용되는 SMB 버전은운영체제에서지원하는 SMB 버전에따라달라집니다. 아래표에 Windows 클라이언트에대한지원에대한요약을 제공합니다. Windows 클라이언트 SMB 버전지원 Windows 7 SMB 2.1 Windows Server 2008 R2 SMB 2.1 Windows 8 SMB 3.0 Windows Server 2012 SMB 3.0 Windows Server 2012 R2 SMB 3.0 Windows 10 SMB 3.0 2.3.1 SMB 파일공유생성 1. 기존에생성된저장소계정에서 [ 파일 ] 을선택하여추가합니다. Page 20
2. 이름과할당량을선택하여생성합니다. 3. 디렉터리생성 2.3.2 Windows 를실행하는 Azure 가상컴퓨터에공유마운트 이작업은가성서버에로그온한상태로 PowerShell 에서작업을진행합니다. 1. 가상컴퓨터의저장소계정자격증명유지 Windows 는가상컴퓨터가재부팅될때도파일공유에자동으로다시연결될수있도록 자격증명을유지해야합니다. cmdkey /add:<storage-account-name>.file.core.windows.net /user:<storage-accountname> /pass:<storage-account-key> Page 21
cmdkey /add:storage01.file.core.windows.net /user:storage01 /pass: Q80KIWJICkxFaf0rQUmdj31jXjfGk/jIapNKfpkOyhro1Sh9KfVtsx7NLx2YNvpHGvbWCiuoj f9nwql7d9ifca== 2. 유지된자격증명을사용하여파일공유마운트 가상컴퓨터에서 net use 명령을사용하여파일공유를마운트할수있습니다. net use <drive-letter>: \\<storage-account-name>.file.core.windows.net\<share-name> net use f: \\storage01.file.core.windows.net\files 3. 연결된파일저장소 Page 22