2017.04.21 23:30 Azure

이번에 진행할 내용은 Azure에서 VM으로 만든 SQL Server DB Backup 입니다.

 

DB 백업은 여러가지 방법이 있습니다.

회사의 정책이나 DB Data의 중요도 등에 따라 결정 되기도 하고 중요한 경우 Failover Cluster도 만들어 장애조치를 하기도 합니다.

 

제일 좋지 않은 Backup 방법이 로컬하드디스크에 bak 파일을 만드는 방법이라고 보는데 이유는 말씀드리지 않아도 잘 알고 계시리라고 생각 합니다. 제일 쉽기 때문에 많이 사용하지만 보안성이나 안전성 면에서는 불안 요소가 있는 방법입니다.

 

그런데 DB Backup 파일을 자동으로 다른 스토리지에 안전하게 옮긴다면 어떨까요?

 

Microsoft에서 배포한 프로그램중 SQLBackup2Azure 라는 프로그램이 있습니다.

(https://www.microsoft.com/ko-kr/download/details.aspx?id=40740 에서 다운로드를 받을 수 있습니다.)

 

이프로그램을 이용하면 SQL Server의 로컬 하드디스크에 만들어진 DB Backup 파일을 Azure 스토리지로 암호화/압축 하여 옮겨줍니다.

다른 지역에 있는 스토리지로도 옮길 수 있으니 IDC 전체에 문제가 생겼을 경우 마음 고생을 덜 할 수 있을거라고 봅니다. (Backup 완료 시간 부터 장애 발생 시점 사이의 데이타는 유실되겠지만요.)

 

1. 우선 SQL Server Management Studio에서 백업 Job을 만듭니다. 방법은 다아실테니 이 단계는 넘어가겠습니다.

매일 오전 3시에 로컬 디스크의 특정 폴더에 *.bak DB를 백업하게 설정을 합니다.


2.
위 링크에서 다운로드한 프로그램을 해당 SQL Server에 설치 합니다.

 

2-1. 설치가 되었으면 실행해서 첫번째 단계에 필요한 내용을 입력 합니다.

DB Backup 파일이 저장되는 path pattern을 입력 하고 다음 단계로 넘어갑니다.


 

2-2. Storage account name, Access Key, Container 정보를 입력하고 Vetify account를 클릭하여 계정확인 절차를 진행 합니다

(어떤 이유에서인지 가끔 계정 확인 오류가 발생하기도 합니다. 그럴때는 다시 클릭해보세요.)

Storage account name에는 Azure 저장소 계정에서 만든 저장소 명을 입력합니다. SQL Server VM이 위치한 곳과 다른 지역에 있어도 상관 없습니다.

Access Key는 해당 저장소의 액세스 키 값을 입력합니다.

Container는 백업 파일들이 옮겨질 스토리지의 컨테이너(폴더) 이름을 입력 합니다.


 

2-3. 3번째 단계는 SQL Server Management Studio가 만든 백업 파일을 이동할때 암호화 여부와 압축 여부를 선택하는 단계 입니다.

필요하면 두 설정 모두 해두는 것이 좋습니다. 설정이 모두 끝났으니 설정을 마칩니다.



3. 백업과 Azure 스토리지로 이동이 잘되는지 SQL Server Management Studio에서 Job을 실행 시켜 봅니다.

 



4. 백업이 완료되어 해당 스토리지로 파일이 이동이 되었으면 백업 폴더에는 관련 로그만 남습니다.


5. Azure 저장소에 백업이 잘 되었는지 확인해봅니다.

 

6. Good Job!

 

7. 가끔 패치 후 서버가 재부팅을 하면 Backup이 실행되지 않거나 서비스에서 SQLBackup2Azure 관련 프로세스가 중지되어 있는 경우가 발생 합니다. 그러면 Agent를 실행 하고, 프로세스를 실행하면 됩니다.

 

참 쉽죠?














저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 얼음무지개

댓글을 달아 주세요

2017.02.24 21:00 Azure

CDN에 대한 이야기를 하나 더 하겠습니다.

 

이전 포스팅에서 CDN의 장점에 대해서 알아 봤는데요.

 

이리저리 따져 봐도 제일 좋은 점은 전세계에 흩어져 있는 POP에서 컨텐츠를 배포하기 때문에

클라이언트 입장에서는 가장 가까운 POP에서 컨텐츠를 받아오므로 속도도 빠르고 서버에도 부하를 적게 준다는 점입니다.

 

하지만 클라이언트 입장에서 POP에 첫 요청의 경우에는 캐시된 컨텐츠가 없기 때문에 원본이 있는 곳에서 받아와야 합니다그래서 첫 요청을 하는 클라이언트는 약간의 손해(?)를 보게 됩니다.

이를 방지 하기 위한 방법이 있는데

이것을 "CDN 끝점에 미리 로드" 정도라고 하겠습니다.

 

끝점에 컨텐츠를 미리 로드해 두면 대규모 이벤트에 무척 유용기 때문에 즐겨 사용하는 방법입니다.

 

제일 쉬운 방법은 Azure 포탈에서 적용하는 방법입니다.

 

CDN 프로필의 끝점 메뉴에 있는 "로드" 를 클릭 합니다.


 

Path 영역에 미리 로드하려는 컨텐츠의 정보를 입력 합니다.

정규식에 맞는 URL이어야 하며 와일드카드는 사용하지 못합니다.


 

"로드" 를 클릭 하고


 

요청이 완료될때까지 잠시 기다립니다.


 

1분쯤 기다리면 요청이 완료 됩니다.


 


, 제약 사항이 있는데요.

- Verizon Azure CDN 제품(표준 및 프리미엄)만 가능 하며
  아직 Akamai Azure CDN에서 지원되지 않습니다.

- 로드 요청은 CDN 프로필별로 분당 10개로 제한됩니다.


이렇게 미리 컨텐츠를 로드해 두면 무조건 클라이언트 주변의 가까운 POP에서 컨텐츠를 받아 오기 때문에 첫번째 적중 대기 시간이 발생하지 않게 됩니다.








저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 얼음무지개

댓글을 달아 주세요

  1. 2017.03.19 21:26  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

2017.02.10 10:30 Azure

지난 포스팅에서 CDN에 대해서 간단하게 알아봤습니다.

 

그런데 CDN은 편리성과 함께 구조적인 불편함이 하나 있습니다.

 

이미지가 다른데 파일명이 같은 경우에는 스토리지에 업로드해서 Over Write가 되면 바로 바뀐 이미지로 보이지 않는다는 점입니다.

물론 이미지가 다를 경우 파일명을 다르게 사용하면 됩니다만 부득이하게 같은 파일명이어야 할때가 있습니다.

이를해결하기 위하여 예와 함께 방법을 알아보겠습니다.

 

스토리지에 이미지 파일이 하나 있습니다.

http://icerainbow.blob.core.windows.net/image/icerainbow1.png

 

CDN을 끝점을 연결 시켜서 URL이 이렇게 변경이 되었습니다.

http://icerainbowcdn.azureedge.net/image/icerainbow1.png



이제 스토리지에 이름은 같지만 이미지가 다른 파일을 업로드합니다.

파일 이름이 같을 경우 이미지 파일을 업로드 하면 일단 덮어 쓴다는 경고가 발생 합니다.

무시하고 덮어 쓰겠습니다.

 

업로드가 완료되었습니다.

 

스토리지와 CDN에 어떤 변화가 있는지 보겠습니다.


 

blob 스토리지의 URL을 브라우저에서 호출하면 이미지가 변경되었음을 알 수 있는데,

CDN URL을 호출하면 아직 이미지가 변경되지 않았음을 알 수 있습니다.

 

설명하자면 좀 길어지지만 기본 TTL 값인 7일이 지나지 않았기 때문 입니다.

 

자세한 내용은 아래 링크글 참고 하시면 됩니다.

 

Azure CDN(콘텐츠 배달 네트워크) 개요
https://docs.microsoft.com/ko-kr/azure/cdn/cdn-overview

 

그러면 최대 7일 동안 방법이 없는걸까요? 그럴리가요.

Azure CDN 끝점 제거 라고 하는 방법을 사용하면 됩니다.

 

영문에는 "purge" 라고 표현되어 있고 한글은 "제거" 라고 되어 있습니다.

 

"제거"를 클릭하면  CDN이 없어질것 같은 기분이 듭니다만 그건 순전히 기분탓 입니다.

 

과감히 "제거"를 클릭 합니다.

 

CDN 정보를 입력하고 컨텐츠 경로인 /image/icerainbow1.png 를 입력 한 후 "제거"를 클릭 합니다.


 

삭제 요청이 완료 되었네요.


하지만 바로 적용 되는 것이 아니라 가이드에 따르면 약간의 시간이 필요 하며 동시 요청 건수도 최대 50개 입니다.

 

가이드에는 이렇게 나와 있네요.

 

제거 요청은 Verizon Azure CDN(Standard Premium)으로 처리하려면 약 2-3, Akamai Azure CDN으로 처리하려면 약 7분이 소요됩니다. Azure CDN은 동시 제거 요청이 항상 50개로 제한됩니다.

 

잠시 기다리면 두곳 모두 이미지가 변경된것을 확인할 수 있습니다.

 

 

이렇게 CDN에서 끝점을 제거 하는 방법외에 이미지와 같은 정적 콘텐츠에 대해서는 web.config cache control head를 설정하여 TTL을 수정하거나 ASP.Net의 경우에는 HttpResponse.Cache 속성을 설정하여 CDN 캐싱 동작을 수정할 수 있으므로 필요한 방법을 적용하여 사용하면 되겠습니다.

 

 

 

저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 얼음무지개

댓글을 달아 주세요

2017.02.07 23:00 Azure

이전 포스팅에서 Azure Storage를 만들어 컨테이너를 만들고 이미지 파일을 업로드하여 브라우저에서 잘 보이는지 확인하였습니다.

 

이번에는 지난번에 만든 스토리지를 CDN에 연결 시키는 작업을 하려고 합니다.

 

우선 CDN 가격 정책은 3가지로 구분되어 있습니다. (17 1월 기준)

 

표준은 Verizon Akamai를 사용할 수 있으며 1GB당 최소 104원이며

프리미엄은 Verizon만 사용 가능하며 1GB당 최소 204원 입니다.

당연히 프리미엄이 더 다양한 분석과 규칙을 적용할 수 있으며 실시간 분석이 가능하다는 장점도 있습니다1TB당 최소 10만원 차이이니 기업 사용자는 다양한 분석이 가능한 제품을 사용하는 것이 좋지 않을까 생각됩니다.

 

자 이제 CDN을 연결하러 가볼까요.

 

Azure 포탈에서 CDN 프로필로 들어가 추가를 합니다.

 


CDN
프로필 의 각 영역에 값을 채워 넣고 만들기를 클릭 합니다.


CDN
이 프로필이 만들어 졌습니다.



개요에서 끝점을 클릭하여 끝점을 추가 합니다.

여기에서 이전에 만들어 놓았던 스토리지를 연결합니다.


 

1) 이미지 파일을 하나의 폴더에서 관리한다면 "원본 경로"에 해당 이미지 폴더를 입력하여 고정 시켜 놓는 것이 편합니다.

   이경우 이미지 파일의 경로는 icerainbow.azureedge.net/이미지파일 이 됩니다.

2) 이미지를 넣어서 관리할 폴더가 여러개일 경우라면 원본 경로를 지정하지 않아야 합니다.

   (아니면 폴더마다 1)의 방법으로 폴더마다 끝점을 만들어서 운영하면 됩니다.)

   이경우 이미지 파일의 경로는 icerainbow.azureedge.net/폴더명/이미지파일 이 됩니다.

 

끝점을 만들고 있습니다. 잠시 기다리면


 

끝점이 만들어졌네요.


 

끝점이 만들어 지더라도 바로 사용할 수 없고 90분을 기다려야 합니다.

(아마도 전세계에 흩어져 있는 POP에 해당 사항을 업데이트 하는데 필요한 시간인것 같습니다.)


 

90분이 지나서 끝점에 있는 이미지 파일을 브라우저에서 열어보면 잘 열리는 것을 확인할 수 있습니다.

html 소스는 이렇게 됩니다.

<img src="https://icerainbow.azureedge.net/icerainbow1.png">


 

사용자 지정 도메인은 위의 내용과 같이 이미지 파일이 있는 도메인이 표시되는 것보다 여러가지 이유로 인하여 그 회사의 도메인 또는 서브 도메인을 사용하고 싶을때 사용 합니다

예를 들면 www.icerainbow.com 을 소유하고 있는데 cdn.icerainbow.com 과 같은 사용자 지정 도메인을 사용하려고 한다면 적용할 수 있는 방법입니다.


 

, 아직 https를 지원하지 않습니다. (17 1월 기준)


 


종합해서 이미지 기준의
html 코드로 설명 드리면 이렇습니다.

 

1) 웹서버 로컬 하드디스크에 이미지 파일이 있을 경우

   <img src="/images/icerainbow01.png">

2) Azure 스토리지에 image 폴더를 만들고 그안에 이미지 파일이 있을 경우

   <img src="https://icerainbowimage.blob.core.windows.net/image/icerainbow1.png">

3) CDN 프로필을 생성하고 끝점을 Azure 스토리지의 image 폴더를 원본 경로로 지정했을 경우

   <img src="https://icerainbow.azureedge.net/icerainbow1.png">

4) 사용자 지정 도메인을 사용할 경우.

   <img src="http://사용자지정도메인/icerainbow1.png">


 

이렇게 됩니다.

 

각각의 상황별로 장단점이 있으니 적절한 환경에 따라 선택해서 사용하면 되겠습니다.

가능하다면 CDN을 사용해보세요. (소근소근~)













 


저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 얼음무지개

댓글을 달아 주세요

2017.01.31 22:30 Azure

Azure에서 홈페이지를 운영하면서 이미지를 서비스 하는 여러 가지 방법중에 오늘은 Storage CDN, 그리고 CDN의 사용자 지정 도메인에 대한 내용을 말해볼까 합니다. 내용이 길어지면 두번 정도로 나누겠습니다.

 

홈페이지에는 거의 대부분 이미지 파일을 사용합니다. 특히 우리나라의 경우 네트워크 속도가 빠르다보니 심하다 싶을 정도로 많이 사용합니다.

 

보통의 경우

 

이미지를 홈페이지에 넣는 가장 일반적인 방법은 웹서버에 특정 폴더를 만들고 그안에 이미지 파일을 넣어서 호출 하는 방법입니다.

 

이미지 관련 html 소스는 일반적으로 이렇게 작성됩니다.
(
프로그램을 이용하면 조금 더 복잡해 지지만 여기에서는 기본적인 내용을 보여드리겠습니다.)

 

<img src="/images/icerainbow01.png">

 

웹서버의 디폴트 폴더안에 images 폴더 안에 icerainbow01.png 파일을 브라우저에 보이게 하는 소스 입니다.

 

이 경우 어떤 문제가 발생 할까요? 행복한 고민이지만 홈페이지에 접속하는 사용자 수가 많을 경우 사용중인 네트워크 대역폭 중에 이미지 파일이 상당 부분 차치하게 되고 그러면 아시는 것처럼 오류가 발생한 것과 같은 화면을 사용자에게 보여 주거나 큐에 쌓인 순서에 따라 기다려야 합니다. 그러면 사용자는 기다리지 않고 백버튼을 누를겁니다.

 

이를 해결하려면 홈페이지를 운영하는 입장에서는 비용을 추가해서 대역폭을 늘리면 됩니다.

 

대역폭을 늘려서 접속 하는 사용자 수가 증가하게 되면 Disk i/o 가 올라가거나 CPU, 메모리 사용이 늘면서 전체적인 성능이 떨어 지게 됩니다. 해결 하려면 또 다시 비용이 들어가겠지만 Disk SSD로 바꾸거나 로드 밸런싱을 하면 됩니다. 그러면 사용자가 늘고 다시 네트워크에 부하가...

 

관리자라면 이 상황일 경우 어디부터 손을댈까요?

 

저라면 우선 네트워크 대역폭을 줄이기 위한 방법을 찾을겁니다.

다른 몇가지 방법중에 소스 최적화, 어플리케이션 캐시 등등등의 방법이 있지만 그중에 이미지 파일을 다른 장소에 넣어 두는 방법을 찾아보기로 합니다.

 

이렇게하면 사용자가 홈페이지에 접속 했을때 웹서버에서는 소스만 불러오게 되고 이미지는 다른 장소에서 불러오게 되므로 결국 웹서버의 네트워크 대역폭중에 이미지가 차지하는 만큼의 여유가 생기게 됩니다.

 

그 대표적인 방법이 Azure storage를 사용하는 방법 입니다.

기본적으로 Azure에 웹서버가 있다고 가정하고 진행 하겠습니다.

 

아래 이미지와 같이 "icerainbowimage" 저장소 계정을 만들었습니다.

 



"image"
라는 컨테이너 (PC에서 말하는 폴더라고 생각하면 이해하기 쉽습니다.)를 만듭니다.



이렇게 컨테이너가 만들어졌으니


컨테이너 안에 이미지 파일을 업로드 합니다
.

 

파일을 업로드 하는 방법이 여러가지가 있는데 개인적으로 제일 쉬운 방법은 "Microsoft Azure Storage Explorer"를 사용하는 방법이라고 생각 합니다.

 

Microsoft Azure Storage Explorer 다운로드

http://storageexplorer.com/

https://azurestorageexplorer.codeplex.com/

 

Microsoft Azure Storage Explorer 사용방법

https://docs.microsoft.com/ko-kr/azure/vs-azure-tools-storage-manage-with-storage-explorer

 

업로드한 파일의 정보는 아래 이미지와 같이 나오고

 

이 파일의 URL https://icerainbowimage.blob.core.windows.net/image/icerainbow1.png 가 됩니다.

 

브라우저에서 보이게 html 소스를 수정하면

 

<img src="https://icerainbowimage.blob.core.windows.net/image/icerainbow1.png">

 

이렇게 됩니다. 

이렇게하면 웹서버의 대역폭에서 이미지가 차지하는 부분 만큼의 여유가 생기게 됩니다. 한페이지의 크기가 3MB이고 이미지가 2MB라면 숫자상으로 두배넘는 사용자가 접속해도 버틸 수 있게 됩니다. 이를 응용하여 CSS, JS, HTML 파일, 웹폰트 등도 스토리지에 넣어두면 웹서버의 네트워크 대역폭에 많은 여유가 생기게 되겠죠. (물론 이를 위해서는 약간의 기술적인 조치가 필요 합니다.)

 

그런데 이 경우에도 약간의 문제가 있습니다. 스토리지가 있는 위치(이 내용에는 일본서부) 근접 지역의 사용자는 큰 문제가 없지만 멀리 떨어진 나라에서는 여전히 이미지를 불러 오는데 시간이 걸리게 됩니다. 운영하는 홈페이지 서버가  특정 지역의 사용자 접속이 압도적으로 많고 그 부근의 Azure IDC에서 운영중이라면 문제는 없지만 그렇지 않을 경우에는 사용자가 조금 더 빨리 이미지 파일을 가져갈 수 있도록 CDN 서비스를 이용하는 것이 좋습니다.

 

위키 백과 CDN 설명

https://ko.wikipedia.org/wiki/%EC%BD%98%ED%85%90%EC%B8%A0_%EC%A0%84%EC%86%A1_%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

Azure CDN 개요

https://docs.microsoft.com/ko-kr/azure/cdn/cdn-overview

 

쓰다 보니 글이 조금 길어졌네요.

Azure에서 CDN을 사용에 대한 글은 다음 포스팅에.









저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 얼음무지개

댓글을 달아 주세요

2017.01.23 23:00 Azure

첫번째 시나리오의 마지막 글입니다.

 

첫번째, 두번째 글에서 다룬 내용은 다음과 같습니다.

구포탈(홍콩)에서 두가지 방법으로 VM을 캡처했고 각각의 VHD 파일을 신포탈(서일본)로 복사 했습니다(내용은 한줄인데 과정은 길었네요.)

 

이제 서일본으로 복사해온 VHD파일을 이용하여 VM을 만들어 보겠습니다.

 

앞에서 설명한 것과 같이 신포탈에서는 가지고 있는 VHD 파일을 VM으로 만드는 UI가 없습니다.

그래서 많은 분들이 좋아하시는 파워쉘을 이용해서 VM을 만들어야 합니다. (신난다~)

파워쉘을 이용하여 VM을 만드는 일은 ';ㅁㄹㄴㅇㅎㄱ덯ㅁㅇ넘ㅇㄴㄹ;널ㄴㅇ

장점이 더 많습니다만 그 장점에 대해서는 나중에 다른 포스팅을 통해서 보기로 하구요.

 

이번 포스팅에서는 복사해온 VHD 파일로 VM을 만드는 방법에 대해서만 알아 보려고 했으나...

VM 만들기 전에 해야할 몇가지가 작업이 있어서 간단히 설명 드리겠습니다.

여기서 설명하는 "몇가지 작업"은 나중에 별도 포스팅에서 다루기로 약속은 해봅니다.

 

우선 신포탈에서는 VM을 만들기전에 기본적으로 해야할 몇가지 작업이 있습니다.

 

1. 지역(location) 선택

2. 리소스 그룹(Resource Group) 생성

3. 저장소 계정(storageAccName) 생성

4. 가상 네트워크(vnetName) 생성

5. 가상네트워크 서브넷(frontendSubnetName) 생성

6. 가용성 집합(avsetName) 생성

 

등등 입니다.

 

이중에는 VM을 신규로 만들면서 설정할 수 있는 것도 있지만 이 글에서는 파워쉘로 만들 예정이므로 미리 만들어둔 값을 사용하겠습니다.

 

다음과 같이 미리 만들어둔 값을 사용하도록 하겠습니다.

(저는 귀찮아서 2,3,4,6 의 이름을 똑같이 사용했는데 이렇게 하면 나중에 헷갈립니다. 이름 뒤에 구분값을 써 놓는 것이 좋습니다.

예를 들면 저장소 계정일 경우에는 newicerainbowstorage, 가상 네트워크는 newicerainbowNet. 이런 식으로...)

 

1. 지역 : 서일본(japanwest)

2. Resource Group : new-icerainbow

3. storageAccName : newicerainbow

4. vnetName : newicerainbow

5. frontendSubnetName : default

6. avsetName : newicerainbow

 

이제 파워쉘 스크립트를 작성해 보겠습니다.

 

1. 로그인 합니다.


   


2. 스크립트를 하나하나 알아보겠습니다.


# Resource Group 사용할 리소스 그룹 이름

$rgName = "new-icerainbow"

 

# 지역 (Japan West) 어느 지역에 만들것인지.

$location = "japanwest"

 

# 저장소 계정 이름

$storageAccName = "newicerainbow"

$storageAcc = Get-AzureRmStorageAccount -ResourceGroupName $rgName -AccountName $storageAccName

 

# 가상네트워크 이름

$vnetName = "newicerainbow"

$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName $rgName -Name $vnetName

 

# 가상네트워크 서브넷 이름

$frontendSubnetName = "default"

$frontendSubnetConfig = Get-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name $frontendSubnetName

 

# 가용성 집합 이름

$avsetName = "newicerainbow"

$avset = Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $avsetName

 

이와 같이 " " 안에 만들어둔 값(이름)을 넣어서 파워쉘 스크립트를 복사 붙이기 합니다. (다 외우시는 분은 직접 타이핑 해도 됩니다.)

 


그리고 엔터.

 

잘못 입력한 부분이 없으면 에러 없이 프롬프트가 떨어집니다.

 


만약
잘못 입력 했다면...

아래 그림처럼 시뻘건 오류 메세지를 만나게 됩니다.

 

3. 여기까지 했으면 다음 단계로 진행 합니다. 이전과 마찬가지로 몇가지 설정할 것들이 있는데 역시 다음 기회에 설명 하기로 하겠습니다.

PIP, Nic 설정하는 파워쉘 스크립트 입니다.

 

먼저 PIP Nic를 만듭니다.

 

#$pipName = "Newicerainbow01PIP"

#$pip = New-AzureRmPublicIpAddress -Name $pipName -ResourceGroupName $rgName -Location $location -AllocationMethod Dynamic

 

# NIC 생성

$nicName = "Newicerainbow01Nic"

$nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location -SubnetId $frontendSubnetConfig.Id

 

파워쉘 스크립트의 " " 부분을 수정해서 복사 붙이기 하고 엔터

 

정상적으로 입력이 되었으면 프롬프트가 반환됩니다. 주황색 경고는 무시 합니다.

 

4. ...여기까지 잘 진행 되었으면 osDisk를 선택하고 VM의 크기와 이름 등등등을 설정 합니다. 여기에서 osDisk는 구포탈(홍콩)에서 복사해온 VHD를 말합니다.

 

$osDiskName = "Newicerainbow01_os_Disk"

$osDiskCaching = "ReadWrite"

$osDiskVhdUri = "https://newicerainbow.blob.core.windows.net/backup/old-01-20160906-163223-os-2016-09-06-2880F66.vhd"

 

$vmSize = "Standard_A1"

$vmName = "Newicerainbow01"

 


스크립트도 " " 부분을 수정하고 복사 붙이기를 하고 엔터. 


5. 이제 마지막 단계 입니다. VM을 생성 하는 단계 입니다.

 

$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetId $avset.Id

$vmConfig  = Set-AzureRmVMOSDisk -VM $vmConfig -VhdUri $osDiskVhdUri -name $osDiskName -CreateOption attach -Windows -Caching $osDiskCaching

$vmConfig  = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id

 

New-AzureRmVM -ResourceGroupName $rgName -Location $location -VM $vmConfig

 


수정하는
부분 없이 이 스크립트를 복사 붙여넣기 하고 엔터.

VM 생성 하기 때문에 시간이 소요됩니다. 잠시 기다리면

 

정상으로 VM이 만들어진 리턴 코드가 나오고 포탈에 보면 해당 VM이 만들어진 것을 볼 수 있습니다.

 

만세!!!

 

이렇게해서 구포탈에서 만들어 운영하던 다른 지역의 VHD를 복사해와서 신포탈에 VM을 만들어 봤습니다.

 

그런데...

 

이전 포스팅에서 sysprep한 후 복사해온 VHD 파일은 뭐냐고 물으신다면 그건…
하하하... 까맣게 잊어버렸군요.

언젠간 포스팅할 날이 오겠죠.

 

간단하게만 말씀 드리면 sysprep Microsoft의 운영 체제를 배포하기 위한 준비 유틸리티를 말합니다. VM을 단순 복사할 경우 컴퓨터 이름이나 SID등이 겹치는 일이 발생 하고 서버마다 로그인 정책이 다를 경우 아이디/비번도 다르게 설정해줘야 하는데 이런 값들을 배포 하면서 설정할 수 있도록 도와주는 유틸리티 입니다. sysprep를 거친 VHD를 이미지로 등록하여 반복적으로 VM을 만들때 유용한 방법이기도 합니다.

 

이정도까지만 말씀 드리고 일단 여기서 마무리 하도록 하겠습니다.

 










저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 얼음무지개

댓글을 달아 주세요

2017.01.16 23:00 Azure

첫번째 에피소드의 두번째 이야기를 어떻게 풀어가야 하나 싶은데...

일단 첫번째 이야기를 작성하면서 만들어 놓은 Azure 환경을 폭파 시키고 새로 만들었습니다.

VHD 2개 필요했고 서비스 이름이 조금 헷갈릴듯하여...

이전 포스팅의 글은 VHD 파일을 복사하는 내용이니 크게 상관은 없으리라고 생각하면서 두번째 이야기를 작성하겠습니다.

 

Azure 구포탈에서는 VM을 만들때 캡처를 떠놓은 VHD, sysprep를 해 놓은 VHD

VM을 만들때 스토리지에 있는 캡쳐해놓은 VHD 파일을 이용할 수 있었습니다.

새로만들기에서 가지고 있는 VHD 파일을 선택 하면 같은 VM 5분 이내에 만들 수 있으니 아주 쉬웠죠.

급하게 같은 서버를 여러대 만들어야 할 경우에도 순서대로 계속 찍어내듯이 만들면 되었으니 참 편리했습니다.

 

그런데 신포탈 UI에서는 가지고 있는 VHD VM을 만들 수 있는 메뉴가 없습니다. (20171월 상황추후에 생긴다고는 하지만 언제일지 모르니...

 

주변 지인에게 물어 보시면 "파워쉘로 하면 금방되" 라는 답을 해줄겁니다. 몰론 금방 됩니다. (잘 안다면요.) 그런데 여기까지 오신건 잘 몰라서이니 아는 한도내에서 설명해 드리겠습니다. (이 글의 내용이 틀렸을 수도 있습니다. 틀렸다면 댓글에 지적해주시면 감사하겠습니다.)

 

구포탈에서는 말한것처럼 가지고 있는 VHD 파일로 VM만들기는 쉬웠습니다.
VHD
의 성격이나 상황을 크게 개의치 않았었으니까요.

 

그런데말입니다.

신포탈에서 VM을 만들때는 신경써야 할것들이 몇개 생겼습니다. 구포탈 UI만 사용하던 내 입장에서는 잠시 짜증도 났구요.

(이 시나리오는 이전 글에 썼듯이 구포탈에서 만들어진 VHD를 신포탈에서 사용할 수 있게 하는 것이 목적입니다.)

 

우선

Sysprep에 대해서 알아야 합니다. 아래 링크에 이에 대한 설명이 되어 있습니다.

https://azure.microsoft.com/ko-kr/documentation/articles/virtual-machines-windows-classic-capture-image/

(Sysprep에 대해서 잘 알고 있으면 좋습니다만 몰라도 세상 사는데 큰 불편함은 없습니다.)

 

자 그럼 작업을 진행해 보도록 하겠습니다.

 

구 포탈에서 두형태로 VHD파일을 캡쳐할겁니다.

하나는 그냥 캡쳐할거고(old-01) 하나는 sysprep를 실행한 후 캡쳐(old-02)할겁니다.

 

"이렇게 두종류의 VHD 파일을 만드는 이유는 파워쉘로 VM을 만들때 목적에 따라 구문이 조금 다르기 때문입니다."

(다른 포스팅에서 언급되겠지만 또 한종류가 필요합니다. 그건 그때 설명하도록 하겠습니다.)

 

old-01 서버를 선택 하고 캡쳐를 클릭하면 아래 이미지와 같은 창이 나옵니다.

이름과 설명을 입력 하고 체크를 클릭하면 캡쳐된 VHD 파일이 만들어 집니다.

 

old-02 서버는 Sysprep를 실행하고 캡처를 할겁니다.

old-02 서버에 RDP로 접속하여 도스창을 열고 Sysprep를 실행 합니다.

 

Sysprep tool이 실행 되면 옵션을 조정하고 OK를 클릭 합니다.

 

Sysprep 가 적용되고 해당 서버가 꺼집니다.

 

old-02 서버를 선택 하고 캡쳐를 클릭하면  아래 이미지와 같은 창이 나옵니다.

 

Sysprep를 적용했으니 Sysprep를 실행 했다고 체크 합니다.

그러면 해당 가상 컴퓨터는 캡처 후 삭제 된다고 나옵니다. (캡처 후 진짜 해당 VM은 삭제 됩니다.) 백업이 필요한 서버일 경우 미리 백업을해두어야 합니다.

 

두개의 VM이 모두 캡쳐가 완료 되었군요.

 

캡쳐가 완료된 2개의 VHD 파일은 이전 포스팅 내용에 따라 구포탈 스토리지에서 신포탈 스토리지로 복사했습니다.

 

다음 포스팅에서는 복사해온 두개의 VHD 파일로 VM을 만들어 보도록 하겠습니다.











저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 얼음무지개
 TAG Azure, Sysprep, vm, 캡처

댓글을 달아 주세요

2016.08.31 23:00 Azure

Microsoft Azure로 사이트를 운영하면서 최근에 경험했던 일중 몇개의 케이스들을 시나리오를 만들어서 작성해 보려고 합니다.


그중 첫번째 케이스 시작 합니다.


케이스

Azure 구포탈 A지역에 만들어 운영하는 웹서비스를 Azure 신포탈의 B지역으로 이전하려고 합니다.  (이후 내용에서는 A지역=동남아시아, B지역=서일본 으로 설명 됩니다.)


* 실제 서비스를 보여드릴 수 없으니 실제 상황보다 축소하여 이해할 수 있을 정도로 진행하며, 몇번에 걸쳐 여러가지 해야할 일들을 포스팅 한 후 마지막에 정리하도록 합니다.


* 이 케이스를 진행하게 되면서 몇 가지 제한 상황을 겪게 됩니다. 그 제한 상황에 대해서는 해당 포스팅이 진행될때 같이 설명을 하는것으로 하겠습니다.


자 시작해 볼까요. 


일이 생겼습니다. 이런 저런 이유로 동남아시아에서 운영하고 있는 서비스를 일본서부로 이전을 해야하고 Azure 포탈도 구포탈에서 신포탈로 이전해야 합니다. (구포탈에서 만들어진 VM들이 신포탈에서 안보이는건 아닙니다만 여러가지 제한이 있습니다.)


이일은 구포탈의 VM을 신포탈로 이전하는 것과 거의 흡사한 상황입니다. 검색해 보면 많은 글들이 나오고 몇줄의 파워쉘 코드로 쉽게 이전 가능한 것처럼 보이지만 실제로 해보면 전후 관계를 잘 알아야 하고 파워쉘 코드는 툭하면 빨간색 오류를 사용자에게 뿌려 대기도 합니다. 잘 아시는 분 입장에서는 별거 아니지만 처음 진행할때 겪게되는 각종 오류때문에 머리가 지끈지끈 아파 옵니다. 잘 아는 분의 도움 받기도 어렵고 대부분의 블로그 포스팅된 글들은 크게 도움되지 않기도 합니다. 


이제 크게 도움이될 블로그 글을 작성해보도록 하겠습니다.



1. 현재 상황

구포탈에서 운영하고 있는 VM 입니다.


구포탈에서 운영하고 있는 스토리지 입니다. 이 스토리지 안에 VM의 VHD 파일들이 있습니다.


이미지에서 보는 것처럼 "동남아시아"에서 운영하고 있는 서버 이며 크기는 "Standard_A1", "icerainbowstorage" 저장소에 VHD 파일이 들어 있습니다. (따옴표 안의 내용은 사용자에 따라 모두 다를 수 있습니다.) 


이 VHD 파일을 일본 서부에 있는 스토리지로 복사해오려고 합니다.



2. AzCopy 설치

VHD 파일을 복사 하는 여러 방법이 있는데 이중에 AzCopy.exe를 이용하여 동남아시아의 스토리지에서 일본서부의 스토리지로 복사해올겁니다.


AzCopy.exe 는 PC에 기본으로 설치되어 있지 않습니다. 아래 사이트에서 프로그램을 받아서 설치를 진행 합니다.

https://azure.microsoft.com/ko-kr/documentation/articles/storage-use-azcopy/



보통 설치는 아래 폴더에 설치 됩니다.


C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy


AzCopy가 다 설치 되었으면 도스창을 열고 해당 폴더로 이동 합니다.



3.  AzCopy를 이용하여 Azure 스토리지간 VHD 파일 복사를 위한 구문

동아시아에 있는 파일을 서일본으로 복사해 오려는데, AzCopy를 설치 했던 사이트에 보면 해당 구문이 설명되어 있습니다.



 AzCopy /Source:<source> /Dest:<destination> [Options]



매우 쉽죠? 


하지만 <source>, <destination>, [Options] 에 무엇을 어떻게 작성해야 할지 난감합니다. 그 아래줄을 읽어 보면 이에 대한 자세한 설명이 나오지만 보통은 메뉴얼은 잘 읽지 않기 때문에 처음부터 짜증이 나기 시작할겁니다. 짜증을 잠시 멈추고 조금 더 아래 내용을 보면 


보조 지역에서 주 지역으로 단일 Blob 복사 부분이 나옵니다.


구문은 



 AzCopy /Source:https://myaccount1-secondary.blob.core.windows.net/mynewcontainer1 /Dest:https://myaccount2.blob.core.windows.net/mynewcontainer2 /SourceKey:key1 /DestKey:key2 /Pattern:abc.txt 



로 되어 있네요.



간단하게 설명을 하자면 (물론 이 내용도 읽지 않는 다면...)

/source: 원본 VHD 파일의 위치 입니다. (설명상 동남아시아에 있는 스토리지의 위치)

/destination: 목적지에 VHD가 들어갈 위치 입니다. (설명상 서일본에 있는 스토리지의 위치)

/SourceKey: 원본 저장소 엑세스 키 값이 들어 갑니다.

/DestKey: 목적지 저장소 엑세스 키 값이 들어 갑니다.

/Pattern: 복사할 파일 이름을 적습니다.


이제 여기에 들어갈 값들을 정리해보겠습니다.

/source: 아래 이미지의 URL 에서 path만 적습니다.


/destination: 아래 이미지의 컨테이너 URL 입니다.


/SourceKey: 아래 이미지의 기본 엑세스 키를 복사/붙이기 합니다.


/DestKey: 아래 이미지의 기본 엑세스 키를 복사/붙이기 합니다.


/Pattern: 아래 이미지의 VHD 파일 전체 이름 입니다.


그러면 구문을 완성해 볼까요?



이렇게 구문이 만들어 졌습니다. (엑세스 키 값은 보안상 이유로 X또는 Z로 표기했습니다.)

*구문은 한줄 입니다. 중간 중간 옵션 전에 빈칸 하나씩 넣어 줍니다.



AzCopy.exe /Source:https://icerainbowstorage.blob.core.windows.net/vhds /Dest:https://icerainbowbox.blob.core.windows.net/backup /SourceKey:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX /DestKey:ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ /Pattern:"icerainbow-icerainbow-01-2016-08-29.vhd"

 



4. AzCopy로 복사하기


열었놓았던 도스창에서 해당 구분을 실행 합니다.


복사 완료까지 대략 15분 ~ 20분이 소요됩니다.

* 주의 : 네트워크 비용이 발생 합니다. (계약된 상황에 따라 다릅니다만 127GB VHD 파일을 하나 복사하면 몇천원? 정도의 네트워크 비용이 발생 될 수 있습니다.)


다음 포스팅에 언급이 되겠지만 여러가지 이유로 복사해올 VHD 파일이 상황에 따라 다를 수 있습니다. 그래서 사전에 필요한 VHD 파일을 어떻게 만들어야 할지 고민을 해야 합니다. 이 고민 없이 무조건 복사를 진행 하면 여러번 복사할 일이 생기고 비용과 시간이 발생하게 됩니다.


복사가 끝났네요.


잘 들어 왔는지 신포탈의 스토리지로 가서 확인해 보겠습니다.


이미지에 나온것 처럼 잘 복사가 되었네요.


조금 쉽게 설명하다 보니 이미지와 글이 길어졌는데 쓰다가 귀찮으면 대충대충 적을것 같습니다만 최대한 쉽게 적어 보도록 하겠습니다.


다음 포스팅에서는 복사해온 VHD 파일로 신포탈에서 VM을 만들면서 겪게 되는 여러가지 상황에 대해서 적어 보도록 하겠습니다. 이 내용은 2~3회로 나뉘어 올라갈 것 같습니다.


간만에 포스팅 작성하려니 쉽지 않네요.



저작자 표시 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 얼음무지개
 TAG azcopy, Azure, 애저

댓글을 달아 주세요

이전버튼 1 이전버튼

블로그 이미지
얼음무지개
free counters

글 보관함


티스토리 툴바