ALB + ASG 아키텍처
。EC2 인스턴스의고가용성과장애내구성을 확보하기 위한 가장 일반적인아키텍처
▶ELB에 의해EC2 인스턴스에Health Check를 주기적으로 수행하면서특정 인스턴스에서200 OK를 반환하지 않는 경우ASG에 의해인스턴스를강제 종료및 새로운인스턴스를프로비저닝
。ELB종류 中ALB를 사용
▶ 속도는 느리지만OSI 7계층정보를 모두 포함하므로 사용에 좋음
▶오토스케일링을 통해그룹내EC2 인스턴스 수를 관리 및 조정하면서ELB를 통해분산 트래픽처리를 수행
。클라이언트는ELB의IP주소만 알고트래픽을 전송
。ELB는그룹내EC2 인스턴스에 지속적으로Health Check 트래픽을 송신하며모니터링및Fail시 해당인스턴스로트래픽 전송 금지
。오토스케일링을 통해시작 구성을 기반으로Fail된인스턴스에 대응하는EC2 인스턴스를 생성하여그룹 내 EC2 인스턴스 수유지
ALB + Autoscailing실습
。시작 템플릿생성
。ASG생성 및 테스트
。대상 그룹생성 +ALB생성
。ALB와 연결 및 테스트
。ASG의인스턴스 증감에 따른ALB연동 확인
。리스너 테스트
。Connection Draining
Connection Draining
。ASG와ALB가 연결되어있을때ASG의자원정리 시로그 정보등의 확보를 위해자원을 바로 정리하지 않고 유예시간을 주는 행위
AWS Console -> EC2 ->시작템플릿 생성
。ASG에 의해 동적으로프로비저닝할EC2 인스턴스의옵션을 설정
▶ 이후 해당 설정을 기반으로EC2 인스턴스가 생성됨.
#!/bin/bash sudo -s dnf install httpd -y service httpd start chkconfig httpd on TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") INSTANCE_ID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id) echo "$INSTANCE_ID" >> /var/www/html/index.html▶
EC2 UserData에 다음Script를 입력하여Bootstrap설정
EC2 -> Auto Scaling 그룹진입 후ASG생성
시작 템플릿생성
。ASG에 의해 동적으로프로비저닝할EC2 인스턴스의옵션을 설정
▶ 이후 해당 설정을 기반으로EC2 인스턴스가 생성됨.
인스턴스 시작 옵션설정
。네트워크:ASG에 의해 생성될EC2 인스턴스가 속할VPC + Subnet을 설정
▶ 최대 3개의VPC를 설정 가능
。인스턴스 유형 요구사항:시작 템플릿 재정의를 통해시작 템플릿에 정의된인스턴스 내용을 재정의
▶Instance Type, 요금모델의인스턴스를 재정의 가능
- 다른 서비스와 통합 - 선택사항
。로드 밸런싱 서비스를 설정
대상 그룹 (Target Group) 생성
。AWS Console -> EC2 -> 대상그룹에서대상그룹을 생성
。대상 , 프로토콜 ( HTTP, TCP, .. ), 포트, 트래픽 분산 알고리즘등을 설정
ALB 생성
。AWS Console -> EC2 -> 로드 밸런서에서ALB를 생성
。로드 밸런서 유형:ALB
。리스너 및 라우팅 -> 기본 작업에서 생성한대상 그룹을 지정
리스너생성
。생성한ALB의리스너 및 규칙에서리스너 추가를 통해 생성
리스너 규칙추가
。ALB의리스너 및 규칙 -> 규칙 관리에서규칙 추가로 진입 후 리스너 규칙에 따라서조건 / 작업유형 / 우선순위를 설정