본문 바로가기

dev

AWS에서 Elastic IP를 활용해서 Internal instance 접속하기

기본적으로 AWS EC2 instance를 생성하면 private IP가 발급되고, 이 private IP는 aws 내부에서만 쓸 수 있다. 바꿔말하면 private IP로는 AWS 외부에서 접속을 할 수가 없다는 말. 또한 instance를 start/stop할 때마다 private IP는 변경이 된다.

그래서 아마존에서는 Elastic IP(EIP)를 제공한다. EIP는 아무 ec2 instance에나 할당을 할 수 있고 (단, 한 EIP당 하나의 instance) EIP로는 외부에서도 접속이 가능하고, 결정적으로 EIP는 static하다(=변경되지 않는다)

그럼 EC2내부에서 한 instance에서 다른 instance로 접속을 어떻게 해야하는가. (예를 들면 application server에서 내부 db server에 접근할 때)

단순하게 생각하면 private IP를 사용하면 되겠지만,  private IP는 instance를 start/stop할 때마다 변경되기 때문에 적절하지 않다. 매번 start/stop을 할 때마다 private IP를 hard coding 할 수는 없으니까!

그럼 EIP를 쓰면 되지 않느냐. 써도 된다. (돈 내고).

하지만 EIP로 접속을 할 경우엔 아마존에서 "외부접속"으로 간주하여 data transfer과금 대상이 된다. 물론 $0.01/GB로 비싸지는 않다. (요금 참고: http://aws.amazon.com/ec2/pricing/#DataTransfer) 하지만 1원이라도 아끼고 싶은 가난한 startup이라면 단 $0.01조차 내지 않아도 된다.

EIP를 할당하게 되면 그에 해당하는 public dns name이 생긴다. 

외부에서 이 도메인을 사용하면 dns server는 이를 EIP로 변환하고, 이는 곧 "외부접속"을 의미한다. 하지만 ec2내부에서 이 도메인을 사용하면 dns server는 EIP가 할당된 instance의 private IP로 변환하게 되고 이는 "내부접속"으로 처리되기 때문이다.


출처: http://alestic.com/2009/06/ec2-elastic-ip-internal

'dev' 카테고리의 다른 글

JNI 각 type별 Signature 알아내기  (0) 2013.09.07
git cheet sheet  (0) 2013.03.01
MySQL 한글 저장 설정  (0) 2013.01.24
RESTful API in 15 minutes  (0) 2013.01.15
ssh-agent 실행하기  (0) 2013.01.08