HA of infra
Infra ha
목차
0. 개요
1. 고가용성(HA)이란?2. HA 구현시 예상 최소 사양
3. AWS가 제공하는 고가용성
4. Auto scaling5. Elasticsearch clustering6. 인프라 아키텍처
0. 개요
프로젝트 인프라 구축 간 High availability(이하 HA)의 중요성 대두
다중 AZ-다중 서버/단일 AZ-단일 서버/단일 AZ-다중 서버, active-active/active-standby 등 검토하여 적용이 필요하다는 결론
1. 고가용성(HA)이란?
고가용성이란 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 뜻하며 한마디로 '고장나지 않는 정도'.
고가용성은 흔히 가용한 시간의 비율을 99%, 99.9% 등과 같은 퍼센티지로 표현하며 대표적인 예시인 5 nines(=99.999%)라는 표현은 1년에 계획 된 것 제외 5분 15초 이하의 장애시간을 허용한다는 매우 높은 수준으로 고품질의 데이터센터에서 목표로 한다고 알려져 있다.
하나의 정보 시스템에 고가용성이 요구된다면, 그 시스템의 모든 부품과 구성 요소들은 미리 잘 설계되어야 하며, 실제로 사용되기 전에 완전하게 시험되어야 한다.
동시에 다수의 시스템을 클러스터로 연결할 수 있지만 주로 2개의 서버를 연결하는 방식을 많이 사용한다.
만약 2개의 서버 중 1대의 서버에서 장애가 발생할 경우, 다른 서버가 즉시 그 업무를 대신 수행하므로, 시스템 장애를 불과 몇 초만에 복구할 수 있다.
3. AWS가 제공하는 고가용성(작성중)
Elasticache : Elasticache는 기본 노드나 가용 영역 장애 발생 등 특정 경우를 감지하여 기본 노드를 교체한다.
즉, 기본적으로 고가용성을 제공하나 다중AZ 기능을 활성화 할 경우 클러스터 교체 중 가동 중지시간이 최소화된다.
RDS : 복수의 서브넷 지정이 가능하여 암시적으로 여러 가용 영역에 걸쳐서 사용할 수 있다.
IoT core : VPC 또는 서브넷 종속이 아니기에 가용성 면에서 문제가 없다.
Route 53 : VPC 외부에서 ELB를 엔드포인트로 지정하기에 ELB의 가용성을 이용할 수 있다.
ELB : 여러 가용영역의 서브넷을 지정하여 고가용성을 확보할 수 있다.
S3 bucket : VPC 혹은 서브넷에 종속이 아닌 글로벌이기에 가용성 면에서 문제가 없다.
SQS : 글로벌은 아니지만 VPC 종속이 아니기에 가용성 면에서 문제가 없다.
4. Auto scaling
오토스케일링은 클라우드 환경의 가장 기본적인 요소들 중에 하나로,
갑작스러운 트래픽 집중에 서버, 스토리지 등의 자원이 자동으로 확장하면서, 안정적인 서비스를 유지하는 것
Amazon EC2 오토 스케일링
- EC2의 확장성을 위한 오토 스케일링
- 오토 스케일링 그룹을 헬스 체크하며 인스턴스 확인
- 특정 이벤트 발생, 스케일링 작업 수행에 의해 시작
- 인스턴스를 늘리는 것 외에 축소(down-scaling or scaling in) 하는 작업도 포함
- 가용성, 비용, 시스템 매트릭 등이 스케일링의 변수
- 4개의 스케일링 옵션
① Maintain: 고정된 수의 인스턴스를 유지
② Manual: MIN, MAX, 특정수 등으로 수동 설정한 수대로 인스턴스 유지
③ Schedule: 일정에 따라 인스턴스 수를 늘리거나 줄임
④ Dynamic: 시스템 매트릭 값에 따라 인스턴스 수를 늘리거나 줄임
EC2외의 Auto Scaling
- EC2 외의 다른 서비스들도 오토 스케일링 가능 e.g.) DynamoDB, ECS, EMR
- 모든 스택에 대한 중앙 집중형 스케일링 관리, Predictive 스케일링 포함
Scale
서비스의 흥행상황은 항상 유동적으로 접속자가 많을 때도 있고, 적을 때도 있다.
어떤 서비스는 완만하게 성장하는 경우도 있고, 어떤 서비스는 특정 시간에 접속이 집중될수도 있다.
수강신청이나 귀성길 열차예매와 같은 업무를 처리하는 시스템이 예시.
예측하지 못한 순간에 시스템에 폭주하는 경우도 있으며 이런 상황은 물론 비즈니스의 관점에서는 성공이라고 할 수 있겠지만, 이에 대한 준비가 되어 있지 않다면 이것은 비즈니스적인 클라이막스를 두손 놓고 보내버리는 수 밖에 없다.
그렇다고 평소에 충분한 시스템을 준비하기에는 비용 문제가 발생한다.
이런 상황에서 사용할 수 있는 서비스가 EC2와 ELB이다. EC2로 손쉽게 인스턴스를 생성하고, 이것을 ELB로 묶어서 서비스를 제공한다.
Auto Scaling
Auto scaling이란 정책에 따라서 시스템을 자동으로 늘리고 줄여주는 서비스다. 이를테면 이런식으로 동작한다. 갑자기 트래픽이 폭주하면 서비스에 참여하고 있던 서버들의 CPU 사용률이 점점 높아진다. 그러다 CPU 점유율이 80%를 넘게되면 미리 준비된 이미지(AMIs)를 이용해서 인스턴스를 생성하고, ELB에 연결해서 트래픽을 새로 생성한 EC2 인스턴스에 분산한다. 트래픽이 줄어들면서 CPU 사용률이 20% 아래로 떨어지면 EC2 인스턴스가 순차적으로 제거된다. 비용을 절감할 수 있다.
인스턴스를 만들기위한 이미지가 AMI(Amazon Machine Image : .iso 같은 파일) 하나가 존재해야한다
scale out : 인스턴스를 이미지 파일에 기반하여 지정된 개수 만큼 생성(늘린)한다
scale in : 생성되어 있는 인스턴스를 내린다