728x90
■ ALB 실습
- 사전 구성
- 사용자 VPC 생성 및 CIDR 10.0.0.0/16 사용.
- 가용 영역 2개에 서브넷 생성 (10.0.0.0/24, 10.0.1.0/24)
- 가용 영역당 2개의 Public EC2 생성 및 HTTP 수용 보안 그룹 생성
- Apache2 패키지 다운로드 및 설치
- 실습 내용
- ALB 로드 밸런서 및 대상 그룹 생성
- ALB 동작 방식 확인
■ ALB 대상 그룹 생성
EC2 >> (로드 밸런싱) 대상 그룹 >> 대상 그룹 생성
- 그룹 세부 정보 지정 (1단계)
- 대상 유형: 인스턴스
- 그룹 이름: ALB-TG-HTTP-80
- 프로토콜: HTTP / 80 (포트 번호는 변경 가능)
- VPC: 사전 구성에서 생성한 VPC 사용
- 프로토콜 버전: HTTP1 또는 HTTP2
- 상태 검사: ALB에서 수행할 헬스체크 (기본값 사용). HTTP를 사용하여 응답값 200 사용.
- 대상 등록 (2단계)
- 사용 가능한 인스턴스 등록: 사전 구성에서 생성한 4개의 인스턴스 등록. 등록할 포트는 1단계에서 지정한 포트 사용
- 사용 가능한 인스턴스 등록: 사전 구성에서 생성한 4개의 인스턴스 등록. 등록할 포트는 1단계에서 지정한 포트 사용
- 대상 그룹 상태 확인
- 로드 밸런서에 연결되지 않아 현재 상태는 Unused
■ ALB 로드 밸런서 생성
EC2 >> (로드 밸런싱) 로드밸런서 >> 로드밸런서 생성
- 로드 밸런서 유형 선택: ALB 선택
- 로드 밸런서 이름: ALB-HTTP-80
- 체계: 인터넷 경계 선택 (내부에서 사용할 경우 내부 선택)
- IP 주소: IPv4 선택
- 매핑: 가용 영역 선택. 가용성을 위해 2개 이상의 가용 영역을 선택하는 것이 좋으며, 사전 구성된 EC2가 2개의 가용 영역에 분산되어 있어 az1, az3 선택. ALB는 AWS에서 할당하는 IP만 사용 가능
- 보안 그룹: HTTP 트래픽을 수용할 수 있는 보안그룹 연결 (EC2에서 사용하는 동일한 보안 그룹 사용)
- 리스너: 외부에 공개되는 포트 정보. 일반적인 L4 스위치에서 생성하는 Virtual Server와 동일함.
- ALB 로드밸런서 상태 확인
- 로드 밸런서 생성 이후 대상 그룹의 상태 확인
- Unused >> Initial >> Health 상태로 변경
- 등록 대상 EC2가 Health 상태로 변경 되면 ALB 로드 밸런서는 사용 가능.
■ ALB 동작 확인
- 생성된 ALB URL에 500회 요청
def AWS_ALB():
retrun_data = dict()
for i in range(1,500+1):
req = requests.get("http://alb-http-80-1207148678.ap-northeast-2.elb.amazonaws.com").text
if "AZ_C_PUB_EC2_1" in req:
retrun_data.setdefault("AZ_C_PUB_EC2_1", 0)
retrun_data["AZ_C_PUB_EC2_1"] += 1
elif "AZ_C_PUB_EC2_2" in req:
retrun_data.setdefault("AZ_C_PUB_EC2_2", 0)
retrun_data["AZ_C_PUB_EC2_2"] += 1
elif "AZ_A_PUB_EC2_1" in req:
retrun_data.setdefault("AZ_A_PUB_EC2_1", 0)
retrun_data["AZ_A_PUB_EC2_1"] += 1
elif "AZ_A_PUB_EC2_2" in req:
retrun_data.setdefault("AZ_A_PUB_EC2_2", 0)
retrun_data["AZ_A_PUB_EC2_2"] += 1
return retrun_data
alb = AWS_ALB()
print(alb)
- 테스트 결과
- 1회차 결과:{'AZ_A_PUB_EC2_2': 125, 'AZ_C_PUB_EC2_1': 125, 'AZ_A_PUB_EC2_1': 125, 'AZ_C_PUB_EC2_2': 125}
- 2회차 결과: {'AZ_A_PUB_EC2_2': 125, 'AZ_C_PUB_EC2_1': 125, 'AZ_A_PUB_EC2_1': 125, 'AZ_C_PUB_EC2_2': 125}
- 3회차 결과: {'AZ_A_PUB_EC2_2': 126, 'AZ_A_PUB_EC2_1': 125, 'AZ_C_PUB_EC2_2': 125, 'AZ_C_PUB_EC2_1': 124}
- ALB는 기본적으로 교차 영역 부하분산이 기본적으로 활성화 되어 모든 가용 영역으로 트래픽이 분산됨.
- 아파치 access_log 확인 시 출발지 IP 확인 불가 가능. 출발지 IP를 확인 하기 위해서 access_log에 x-forwared-for 정보를 Log에 기록할 수 있도록 설정 수정 필요. (아래 IP는 ALB의 내부 IP)
- 세션 유지가 필요할 경우 고정 기능을 활성화를 해야 하며, 해당 기능을 활성화 하기 위해서 교차 영역 로드 밸런싱 기능이 활성화 되어야 함.
- 고정 기능 활성화 이후 브라우저에서 ALB URL 호출 시 항상 동일한 서버 정보 반환.
728x90
'AWS' 카테고리의 다른 글
AWS - Elastic Block Storage (EBS) (0) | 2024.03.02 |
---|---|
AWS - EC2 Auto Scaling 구축 (실습) (0) | 2024.03.01 |
AWS - ELB (Elastic Load Balancing) NLB (실습) (4) | 2024.03.01 |
AWS - EC2 Auto Scaling (0) | 2024.03.01 |
AWS - Auto Scaling (0) | 2024.03.01 |