서론
CloudEndure의 존재조차 몰랐던 올챙이 시절에 팀원들과 서버 to AWS EC2 마이그레이션에 도전하면서 겪었던 VM to EC2 과정을 오랫만에 다시 읽어보며 정리해보았다.
AWS S3에 저장한
VM WEB 서버 → AWS EC2 Migration
해당 작업은 On-Premise의 WEB 서버를 AWS 클라우드 환경으로 Migration 하는 작업이다.
해당 작업은 VM이 아닌 물리서버라면 필요 없는 작업이지만 이 포스팅에서의 On-Premise 환경은 가상머신과 에뮬레이터를 활용한 가상서버이다.
따라서 On-Premise VM으로부터 이미지를 추출해서 AWS 클라우드 환경으로 Migration 해야한다.
작업은 아래와 같은 순서로 진행된다.
1.
VMware에서 OVA 이미지 추출
2.
AWS S3에 VM이미지 올리기
3.
S3에 올라간 OVA 이미지를 AMI로 변환
4.
변환된 AMI로 EC2인스턴스 생성
1. VMware에서 WEB 서버 OVA파일 추출
1.
VMware Workstation → File → Export to OVF → (.ova 파일로 저장, ovf 아님!)
VMware Workstation이 아니여도 export 방식은 비슷
2.
추출된 파일
2. 추출한 OVA 파일 S3로 업로드
1.
cloudestmigration 이라는 S3 버킷을 생성한 후에 해당 ova파일을 업로드했다.
3. OVA 이미지 → AWS AMI 변환하기
1.
S3 Upload는 AWS CLI를 사용하여 진행했다. AWS configure 명령어를 통해 AWS CLI 설치를 설정했으며 . 해당 명령어를 위해 네 가지 정보를 다음과 같이 필요하다. (Administrator 권한을 가진 IAM을 생성해서 테스트했다.)
•
액세스 키 ID (필수)
•
보안 액세스 키 (필수)
•
AWS Region
•
출력 형식
2.
AWS CLI Configure 등록
3.
OVA 파일을 S3로 업로드 후, 사용자는 VM Import/Export를 위한 권한이 필요하다. AWS 권장사항을 따라 VM Import/Export가 역할을 수임하도록 허용하는 신뢰 관계 정책 문서와 함께 vmimport 라는 서비스 역할을 생성하고 IAM 정책을 역할에 연결하기 위해 vmpolicy.json 파일을 생성했다.
•
vmpolicy.json 파일
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "vmie.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals":{
"sts:Externalid": "vmimport"
}
}
}
]
}
Shell
복사
4.
aws iam create-role 명령어를 사용하여 ‘vmimport’라는 역할을 생성하고 VM Import/Export 액세스 권한을 부여했다.
aws iam create-role --role-name vmimport --assume-role-policy-document "file://C:\import\vmpolicy.json"
Shell
복사
5.
s3policy.json 파일은 OVA 파일을 AMI로 변환하기 위한 파일이다. 'cloudestmigration'은 S3 버킷 이름이다.
•
s3policy.json 파일
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:getObject"
],
"Resource": [
"arn:aws:s3:::cloudestmigration"
"arn:aws:s3:::cloudestmigration/*"
]
},
{
"Effect": "Allow",
"Action":[
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource": "*"
}
]
}
Shell
복사
6.
s3policy.json 파일을 IAM 역할에 적용 (vmimport)
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://C:import\s3policy.json"
Shell
복사
7.
OVA 파일 AMI 로 변환을 위한 containers.json 파일
[
{
"Description": "MG-test",
"Format": "ova",
"UserBucket": {
"S3Bucket": "cloudestmigration",
"S3Key": "final_web.ova"
}
}
]
Shell
복사
8.
containers.json 파일로 OVA 파일 AMI로 변환
aws ec2 import-image --disk-containers "file://C:\import\containers.json"
명령 결과 화면
9.
변환 성공된 WEB 서버 AMI
4. AMI로 EC2 생성
1.
AMI를 기반으로 EC2 인스턴스 생성
결론
VMware에 위치한 서버를 OVA로 추출해서 S3 버킷으로 업로드하고 성공적으로 AMI로 변환했다.
생성한 AMI를 이용해 EC2 인스턴스를 만들었으며 이로서 성공적으로 WEB 서버를 AWS 클라우드 환경으로 Migration 할 수 있다.
VM으로 운영중인 서버는 이렇게 간단한 작업으로 VM을 이미지화해서 AWS 환경으로 이전할 수 있다.