해결하고자하는 과제
서버를 패치하거나(처리 능력을 높이기 위해) 서버를 업그레이드 할 경우 서버를 정지해야한다. 서버의 정지는 그대로 서비스 정지므로 시스템 공급자는 정지 시간을 가능한 짧게해야한다.
Web 서버의 경우 DNS구조를 사용하여 서버를 전환 할 수 있다. 하지만 그 경우에도 일반적으로 TTL(Time to Live) 값보다 전환 시간을 단축 할 수 없으므로 즉시 변경하려는 구성에는 적합하지 않다.
클라우드에서의 해결/패턴 설명
기존의 물리적 서버의 경우 서버 중지에 대비해 예비 서버를 하는 것이다. 프로덕션 서버가 정지한 후 예비 서버를 시작하고 (프로덕션 서버의)IP 주소를 설정하는 것으로 처리 대행을 했다.
클라우드는 이것과 동등한 것이 훨씬 짧은 시간에 쉽게 할 수 있다. 컴퓨터 이미지를 준비해두면 필요할 때 필요한 가상 서버를 시작할 수 있다. 또한 IP 주소를 지정하는 API도 포함되어 있기 때문에 서버의 시작에서부터 IP 주소 설정까지 스크립트를 이용하여 자동화하는 것도 가능하다.
구현
AWS에서 사용할 수 있는 고정 IP주소를 "EIP(Elastic IP Address)"라고 한다. 이를 이용하여 IP 주소를 교체한다. 기존 EC2 인스턴스의 EIP를 분리하고 그것을 다른 EC2 인스턴스에 연결하면 서비스 제공하는 가상 서버를 전환 할 수 있다.
(절차)
- EC2 인스턴스에 EIP를 할당한다.
- 장애 발생시나 업그레이드 중에 새로운 EC2 인스턴스를 시작한다. 시작시 Stamp패턴 등을 이용해도 좋다. 또한 보다 신속하게 전환하기 위해 다른 EC2 인스턴스를 가동해 두는 것도 좋다.
- 인스턴스 시작 후 지금의 EC2 인스턴스에 EIP를 분리하고 새로운 EC2 인스턴스에 연결한다.
구조
장점
- EIP를 바꾸는 것이므로, DNS의 TTL에 영향을 받지 않고 서버를 교체할 수 있다.
- 업그레이드시, 만일 변경 할 서버에 오류가 발생해도 즉시 원래 서버에 EIP를 붙이는 것으로 대체 할 수 있다.
- EIP는 다른 AZ에 걸쳐 적용 할 수 있으므로, 만일 AZ 수준에 오류가 있어도 다른 AZ 서버에 EIP를 바꿀 수 있다.
주의 사항
- EIP의 전환은 보통 몇 초 정도의 시간이 걸린다.
- VPC의 경우, 네트워크 인터페이스(ENI)에 고정된 사설 IP주소를 할당 할 수 있다. 네트워크 인터페이스(ENI)를 다른 EC2 인스턴스에 부여 할 수 있기 때문에 사설망에서도 이 패턴을 적용 할 수 있다. 그러나 VPC에서 서브넷을 넘는 주소를 바꿀 수 없는 점에 주의해야 한다.
- 해당 EIP에 SSH 연결되어 있는 경우 동일한 IP에서 서버가 바뀌게되므로 스푸핑 가능성이있어서 로그인을 못 할 수 있다.
기타
- 장애 감지를 할 때 HeartBeat와 Nagios, Zabbix 등 모니터링 소프트웨어를 이용해도 좋다. EIP의 고체는 프로그램에서 실행할 수 있으므로 모니터링 소프트웨어와 함께 사용하면 자동화 할 수 있다.
- Server Swapping패턴과 함께 사용하면 EIP를 바꿔 함께 EBS도 교체하여 데이터의 인계 할 수 있다.
- 예비 서버로의 전환은 EIP를 사용하지 않고, ELB를 이용하여 헬스 체크 파일의 추가/삭제로도 할 수 있다.
출처 : http://aws.clouddesignpattern.org/index.php/CDP:Floating_IP%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
'블로그 > AWS CDP(아마존웹서비스 클라우드디자인패턴)' 카테고리의 다른 글
6. Multi-Datacenter 패턴 (0) | 2015.03.04 |
---|---|
5. Multi-Server 패턴 (0) | 2015.03.03 |
4. Ondemand Disk 패턴 (0) | 2015.03.01 |
2. Stamp 패턴 (0) | 2015.03.01 |
1. Snapshot 패턴 (0) | 2015.03.01 |