OCI 4. OCI 에서 공인 IP 를 그대로 둔 채 인스턴스를 새로 만들기: 예약 퍼블릭 IP 옮기기
춘천 리전에 1코어 4GB 짜리 오래된 인스턴스가 하나 있었습니다. 쇼핑몰 연동 서비스가 돌고 있었는데, 이 서비스는 도매 사이트와 결제사 API 를 부르면서 서버의 공인 IP 를 허용 목록에 등록해 두고 있었습니다. IP 가 바뀌면 두 곳에 다시 등록해야 하고, 그때까지 연동이 멈춥니다.
이 인스턴스를 4코어 24GB 새 노드로 바꾸는 게 목표였습니다. 처음엔 옛 인스턴스를 그대로 키우는 쪽을 생각했는데, 같은 계정의 다른 서버들을 정리하고 나니 무료 한도가 남아서 새로 만드는 쪽으로 바꿨습니다. 그러려면 공인 IP 를 옮겨야 합니다.
OCI 의 공인 IP 는 두 종류입니다.
- 임시(ephemeral) IP: 인스턴스를 만들 때 자동으로 붙는 IP 입니다. 그 VNIC 에 묶여 있어서 다른 인스턴스로 옮길 수 없습니다.
- 예약(reserved) IP: 계정에 따로 잡아 두는 IP 입니다. VNIC 에서 떼었다 다른 VNIC 에 붙일 수 있습니다.
다행히 옛 인스턴스의 IP 는 예약 IP 였습니다. 콘솔의 네트워킹 → IP 관리 → 예약된 퍼블릭 IP 목록에 있으면 예약 IP 입니다. 거기 없으면 임시 IP 이고, 그 IP 는 옮길 방법이 없습니다.
계획은 이랬습니다.
- 새 VCN 에 새 인스턴스를 임시 IP 로 만들고 셋팅합니다. 퍼블릭 서브넷에 둬야 합니다. 프라이빗 서브넷에 두면 바깥으로 나가는 주소가 NAT 게이트웨이 IP 가 돼서 등록해 둔 IP 와 어긋납니다.
- 서비스를 새 인스턴스로 옮기고 리허설합니다. 이때 옛 인스턴스는 계속 서비스합니다.
- 옛 인스턴스의 서비스를 멈추고 마지막 데이터를 옮깁니다.
- 콘솔에서 옛 인스턴스 VNIC 의 IPv4 주소를 편집해 예약 IP 를 떼어 냅니다.
- 새 인스턴스 VNIC 에서도 임시 IP 를 떼고, 예약된 퍼블릭 IP 목록에서 방금 풀린 IP 를 골라 붙입니다.
실제로는 콘솔에서 새 인스턴스를 만들면서 예약 IP 를 먼저 옮겨 버렸습니다. 새 노드가 셋팅도 되기 전에 IP 가 넘어간 셈이라, 서비스를 새 노드로 옮기는 동안은 연동이 멈춰 있었습니다. 다행히 이른 아침이었고 옮기는 데 오래 걸리지 않았습니다. 순서대로 했다면 끊김은 마지막 데이터를 옮기는 몇 분뿐이었을 겁니다.
옛 인스턴스는 예약 IP 를 떼면 공인 IP 가 없어집니다. 데이터를 더 꺼낼 일이 있을 수 있어서 임시 IP 를 하나 새로 붙여 두고, 정리가 끝날 때까지 그걸로 접속했습니다.
DNS 는 건드릴 필요가 없었습니다. 같은 IP 니까요. 새 노드에서 연동이 다시 도는 것을 확인하고, 옛 인스턴스를 종료한 다음 새 노드를 무료 한도까지 키웠습니다.
앞으로 만드는 인스턴스는 처음부터 예약 IP 로 바꿔 둡니다. 인스턴스를 만든 직후 VNIC 의 IPv4 주소 편집에서 예약 IP 를 새로 만들어 붙이면 됩니다. 임시 IP 를 예약 IP 로 그대로 전환하는 건 안 되니, 주소가 한 번은 바뀝니다. 아무것도 등록하기 전에 해 두는 게 좋습니다.
참고: OCI 퍼블릭 IP 주소, https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/managingpublicIPs.htm