본문 바로가기
교육

[74일 차] 21.11.08 : DevOps 15

by ballena 2021. 11. 8.

AWS Migration


수업 전 강사님 말씀

 

 

내일부터 AWS 공인 강사님 수업. 현직자 분이시라 아마 최신 기술이나 실제 사용하는 기술을 배울 수 있을 것이다.

배우는 내용이 많이 겹치겠지만, 복습한다고 생각하고 듣기. 강사는 2분인데, 한분은 AWS, 한분은 Docker/Kubernetics. 수업 끝나면 원래 강사님 돌아와서 파이썬/Terraform 수업하면서 팀 프로젝트 준비.

-> 팀 프로젝트 발표 자료 자체는 간단하게. 내용은 말로 해야지 자료에 넣으면 지저분해진다.

-> 대충 미리 겁먹지 말라고 하신다.

 

1. AWS SAA 준비

2. 개인 포트폴리오 준비

3. 팀 프로젝트 구상


1교시

 

 

Migration Service - Application Migration Service(AMS or MGN)

클라우드 마이그레이션의 3가지 방법론

1. Rehost or Lift and Shift

기존 인프라를 그대로 클라우드에 마이그레이션 하는 방법. 이 방법으로 마이그레이션을 수행할 시 주변 인프라나 비즈니스 프로세스에 큰 변화가 없으므로 값비싼 개발 및 테스트가 필요 없다. 신속한 마이그레이션 가능

 

2. Replatform

기존 인프라에 몇 가지 간단한 수정 사항을 적용하여 클라우드에 적합한 구성으로 마이그레이션 하는 방법. 이 방법으로 마이그레이션을 수행할 시 기존 Workload를 유사하게 가져오면서 다중 AZ/CloudFront/Autoscaling/관리형 서비스(RDS, S3)와 같이 인프라에 변화가 적은 클라우드 서비스를 이용할 수 있다. 개발 및 테스트 비용, 마이그레이션 시간, 클라우드 이점 등을 고려했을 때 비용 면에서 가장 효율적인 마이그레이션 방법.

 

3. Refactoring

기존 인프라를 클라우드에 최적화되도록 전면적으로 교체하는 마이그레이션 방법. 하나의 서버를 여러 개의 경량 EC2로 대체하거나, 컨테이너 서비스, 서버리스 서비스 도입 등을 위해 Refactoring 수행. 대대적인 인프라 개편을 도입해야 하므로 장기적인 비용은 절감되지만, 시간 및 개발 비용이 많이 발생한다.

 

 

Application Migration Service(AMS -> MGN)

Server Migration Service(SMS)

Database Migration Service(DMS)

이렇게 3가지의 마이그레이션 서비스 중 SMS는 실습이 어렵다.

가상화 HW 위에서 동작하는 VM을 AWS 리소스로 마이그레이션 하는 서비스인데, 호스트 PC에 vSphere/vCenter/VM 설치하고 그걸 마이그레이션해야 하는데, 메모리가 최소 32G는 필요하다.

독립적인 물리적 서버는 SMS로 마이그레이션이 안된다.

-> 해당 기술을 개발한 cloudendure를 AWS가 인수

-> 이 기술을 AWS 서비스로 만든 것이 AMS

-> 가상 머신 서버/물리적 서버 모두 마이그레이션 가능


2교시

 

 

AMS(or MGN)는 서비스된지 얼마 되지 않았다.

예전에는 대상 서버의 백업 파일을 추출해서 AMI로 변환 후 EC2로 복원했다.

-> 이제는 중단 문제 없이 클라우드 서버로 전환

AMS는 Source -> Staging -> Production의 단계를 거쳐 마이그레이션 된다.

 

SMS는 한 번에 하나의 서버만 마이그레이션 가능

 

AMS 제약사항

1. RHEL을 실행하는 서버에 BYOL 라이선스 필요.

2. 데비안/우분투에서는 커널 3.x 이상만 지원

3. Nitro 인스턴스 유형은 Linux 환경에서 RHEL 7.0+ 또는 CentOS 7.0+와 함께, Windows Server 2008 R2, Windows Server 2012 R2, Windows Server 2016 및 Windows Server 2019와 함께 작동합니다. 이 제한 사항은 다른 인스턴스 유형 패밀리에 적용되지 않습니다.

4. 커널 버전 2.6.32-71은 AWS의 RHEL 6.0 및 CentOS 6.0에서 지원되지 않습니다.

5. 2.6.18-164 이전 버전의 커널은 Application Migration Service에서 지원되지 않습니다. 따라서 이러한 커널 버전을 실행하는 서버는 Application Migration Service에서 복제할 수 없습니다.

6. Microsoft Windows Server 버전 2008 R2 이상에는 가 필요합니다. 최종 사용자가 설치할 Net Framework 버전 4.5 이상.

7. RHEL 8.4 및 Centos 8.4는 커널 문제로 인해 현재 지원되지 않습니다.

 

 

WSL에서 사용했던 우분투 20.04를 사용했다. uname -r로 커널 버전 확인

\\wsl$\Ubuntu-20.04\home 디렉터리 사용

 

후다닥 VMWare Workstation 켜서 CentOS VM 켰다.

CentOS는 커널 버전 제약 없다.


3교시

 

 

지금 하려는 것은

호스트 PC에서 VMWare로 VM 구축. VM에서 집 네트워크의 게이트웨이를 통해 외부로 나갈 수 있다.

외부에서 가상 머신으로 들어오는 것이 막혀있다.

어쨌건 VM이 소스가 되고, AWS EC2가 대상이 된다. VM을 통째로 들여오는 서비스가 AMS

AMS 실습 구조

대충 웹 페이지 하나 만들어서 EC2로 들여온 후에도 잘 작동하는지 확인하면 된다.

VM에 AWS 프로그램을 설치해서 소스에서 AMS로 요청 세션을 보낸다.

AMS 입장에서는 소스가 퍼블릭 네트워크 일지 프라이빗 네트워크 일지 모르니 소스 쪽에 프로그램을 설치하는 것.

 

나중에 과정을 보면

소스를 복제

> 구성 서버가 만들어지고 > 구성을 이용한 복제 서버가 만들어지고

(Staging - 여기서 만들어지는 것은 테스트용)

> 이 복제 서버로 EC2 서버를 완성 > (Cutover 이후) 구성 서버와 복제 서버 삭제됨

(Productions - 실제 대상)


4교시

 

 

AWS에는 EC2 인스턴도, 시작 템플릿, EBS 볼륨도 없다.

소스에서 내용물을 보내오면 받을 구성 정보를 만들어 놓자.

Application Migration Service > 좌측 목록에서 Settings 선택(복제 서버를 어디에 둘지 설정) > 서브넷 선택, 인스턴스 타입 선택, EBS 볼륨 선택, 암호화는 기본값 두고 생성

 

다음은 소스에 내용물을 채우자

yum -y install python3

wget -O ./aws-replication-installer-init.py https://aws-application-migration-service-ap-northeast-2.s3.amazonaws.com/latest/linux/aws-replication-installer-init.py

python3 aws-replication-installer-init.py

리전과 IAM 사용자 Access Key ID/Secret Access Key 입력

-> 이 다음 물어보는 것은 복제할 디스크 : 엔터 치던가 특정 디스크 경로 입력

 

예전에 만들었던 CentOS로 했다가 버전이 안 맞아서인지 에러 발생

-> https://releases.ubuntu.com/18.04/에서 ISO 파일 다운로드 후 VM 새로 만들었다

 

복붙이 안된다?

-> VM > Settings > Options > Shared Folders > Always enabled

-> sudo apt-get install open-vm-tools-desktop 설치 후 재부팅


5교시

 

 

아무튼 우분투 작업하고 내용물 채우고 다시 

python3 aws-replication-installer-init.py

리전과 IAM 사용자 Access Key ID/Secret Access Key 입력

-> 이 다음 물어보는 것은 복제할 디스크 : 엔터 치던가(모든 내용물 복사) 특정 디스크 경로 입력

볼륨 식별 - 소스 서버에 AWS 레플리케이션 서비스 다운로드/설치 - 동기화

 

이제 AMS로 돌아가서 Source Servers에 생긴 것 확인

-> 클릭해서 들어가 보면 진행 중 : EC2 인스턴스도 생겼다

 

AMS의 복제 단계는 : 테스트 준비 - 테스트 진행 - 컷오버 준비 - 컷오버 진행 - 컷오버 완성

 

 

AMS가 출시된 지 얼마 지나지 않아서 호환성이 많이 떨어진다.

-> AWS 사용자 정보를 서버에 입력해야 한다.

-> 소스 서버에서 AWS로 접근하는 것

 

※ 데이터 복사는 암호화된 상태로 진행된다.


6교시

 

 

EBS 스냅숏 화면에 가보면 스냅숏이 만들어지고 있는 것이 보인다.

 

Lifecycle이 'Ready for testing'으로 바뀐 것을 확인했다면 테스트를 해보자.

테스트 전에 시작 템플릿을 만들어야 한다. EC2 서비스의 시작 템플릿 화면에 가보면 시작 템플릿이 하나 있다. 테스트 EC2 인스턴스가 이 시작 템플릿으로 만들어질 것이다.

(EC2 인스턴스를 자동 배포할 수 있는 2가지 - 시작 템플릿과 오토 스케일링 시작 구성)

AMS Source Service 항목에서 Launch settings 탭으로 가서

EC2 Launch Template 부분 > Modify > 버전 설명 작성

이걸 수정하면 시작 템플릿의 최신 버전 숫자가 변경된다. 이후 기본 버전도 변경해 줘야 생성되는 인스턴스에도 수정 사항이 적용된다.

해당 시작 템플릿 체크 > 작업 > 기본 버전 설정 > 기본 버전으로 지정할 템플릿 버전 선택

 

apt-get install openssh-server

systemctl enable --now ssh

 

 

테스트 후 완벽하게 작동한다는 것을 확인한 후에 Cutover 해야 한다.

테스트해보자.

Test and cutover > Launch test instance > launch

이러면 Lifecycle이 'Test in progress'로 바뀐다. EC2 인스턴스로 가보면 테스트 서버가 하나 만들어진다.


7교시

 

 

테스트 진행 도중 EC2 인스턴스들을 보면 replication 서버는 그대로인데 다른 게 하나 생긴다. 대충 구성 정보를 담고 있는 서버라고 생각하면 된다.

+ 테스트가 진행되고 있는 인스턴스도 있다.

 

기다리다 테스트가 끝나면 Next actions의 지시에 따라

Test and cutover > Revert to "Ready for cutover"

실행하면 테스트 인스턴스는 종료된다. 구성 정보를 담고 있는 인스턴스는 아직 작동 중

다음은 Test and cutover > Lauch cutover instances

실행하고 기다리면 인스턴스가 만들어진다. 이건 배포 서버

 

끝나면 지시에 따라 Finalize cutover 실행

cutover 이후에는 소스 서버에 추가되는 파일은 마이그레이션 된 서버에 추가되지 않는다.

또한 구성 정보를 담고 있던 EC2 인스턴스는 종료된다.

 

이제 다 끝났으니

Actions > Mark as archived

실행하면 Source Server 목록에서 사라진다. 우측의 톱니바퀴 아이콘의 설정으로 다시 볼 수 있다.

 

다음은 EC2 인스턴스, 볼륨, 스냅숏 삭제

AMS 자체로는 비용이 나가지 않는다. 이로 인해 만들어지는 것들이 비용이 나갈 뿐이다.


8교시

 

 

Server Migration Service는 리소스 자원이 모자라서 실습 못한다.

 

 

DMS는 시간 관계상 못했으니 10.28 수업 영상 보고 다시 해보기

 

KMS 안 했으니 공인 강사님께 부탁할 것

24일에 강사님 돌아오시면 파이썬 -> Terraform -> Kubernetics


2교시(10:35~11:00)

5교시 빠르게 훑기

6교시 후반(16:10~16:20)

7교시 후반(17:00~17:15)

8교시 빠르게 훑기

'교육' 카테고리의 다른 글

[86일 차] 21.11.24 : Python 1  (0) 2021.11.24
[75일 차] 21.11.09 : AWS 공인 교육 1  (0) 2021.11.09
[73일 차] 21.11.05 : DevOps 14  (0) 2021.11.05
[72일 차] 21.11.04 : DevOps 13  (0) 2021.11.04
[71일 차] 21.11.03 : DevOps 12  (0) 2021.11.03

댓글