싱가폴 리전에 있는 EC2 인스턴스 서울로 이전하기

사내에서 개발용도로 이용하는 스테이징 서버가 싱가폴 리전에 있다. 이유는 잘 모르겠다.
추측컨데 예전에 홍콩, 싱가폴에 회사가 지사가 생겼을때 같이 둔 것이 아닐까 예상해본다.

서울 리전으로 옮기자는 결정이 나서 옮기는 작업을 맡게 되었다.

전략 선택.

AMI 이미지를 만들어서 인스턴스를 새로 만들려고 했으나 리전별로 AMI가 독립되어있어서 그렇게 할 수 없었다.

방법을 찾아보니 Snapshot을 찍고 그걸 다른 리전으로 복사해서 그걸 볼륨으로 만들어서 사용하는 방법이 있다는 것을 확인했다.

그렇게 해서 결정한 방법.

  1. 옮겨갈 리전에서 스냅샷 생성 (시간이 좀 소요됨)
  2. 서울리전에서 동일한 설정으로 인스턴스 생성
  3. 생성시에 임의로 볼륨 연결함.
  4. 생성한 스냅샷을 서울 리전으로 복사 (시간이 소요됨)
  5. 복사된 스냅샷으로 볼륨 생성
  6. 서울리전에 생성한 인스턴스를 중단하고 연결된 볼륨을 빼냄
  7. 스냅샷으로 만든 볼륨을 Root device 와 동일한 경로로 잡고 붙임

아마 볼륨 스왑 하는 과정에서 오류가 날 수 있는데 몇 번의 인스턴스를 끄고 키는 과정을 반복하며 연결해주면 쉽게 해결 할 수 있다.

주의 해야 할 것

  • 리전 별 키 관리에 유의해야한다.
  • 엘라스틱 아이피도 새로 만들어줘야한다.
    • 이유는 국가별 네트워크 대역대가 다르므로 하나도 공유가 안된다.
  • 이전해서 볼륨을 만들때 만든 인스턴스와의 Availability Zone 을 잘 맞춰야 한다.
  • 볼륨을 그대로 카피한거라서 리전 키가 싱가폴 리전으로 접속이 가능할것이다.
    • 2번 과정에서 인스턴스가 만들어지면 ~/.ssh/authorized_keys 파일을 백업해두면 좋을 듯.
    • 다른 방법이 있을 것 같긴한데 나는 잘 모르니 무식하게 백업했다.

마치며

리전 별 이동이 쉬울 것이라 생각했는데 생각보다는 복잡했다.
다행히 실서버가 아니라서 쉽게 옮겼지만 만약 프로덕션 레벨의 인스턴스였다면 충분히 시나리오를 짜고 테스트를 거쳐야 할 듯 하다.

다행히 인스턴스 복사 등이 간편하기 때문에 사전 시나리오 테스트에는 유용할 것 같다.