728x90
■ NLB 실습
- 사전 구성
- 사용자 VPC 생성 및 CIDR 10.0.0.0/16 사용.
- 가용 영역 2개에 서브넷 생성 (10.0.0.0/24, 10.0.1.0/24)
- 가용 영역당 2개의 Public EC2 생성 및 HTTP 수용 보안 그룹 생성
- Apache2 패키지 다운로드 및 설치
- 실습 내용
- NLB 로드 밸런서 및 대상 그룹 생성
- NLB 동작 방식 확인
■ NLB 대상 그룹 생성
EC2 >> (로드 밸런싱) 대상 그룹 >> 대상 그룹 생성
- 그룹 세부 정보 지정 (1단계)
- 대상 유형: 인스턴스
- 그룹 이름: NLB-TG-HTTP-80
- 프로토콜: TCP / 80 (포트 번호는 변경 가능)
- VPC: 사전 구성에서 생성한 VPC 사용
- 프로토콜 버전: HTTP1 또는 HTTP2
- 상태 검사: NLB에서 수행할 헬스체크 (기본값 사용). HTTP를 사용하여 응답값 200 또는 TCP SYN/ACK 사용 가능
- 대상 등록 (2단계)
- 사용 가능한 인스턴스 등록: 사전 구성에서 생성한 4개의 인스턴스 등록. 등록할 포트는 1단계에서 지정한 포트 사용
- 사용 가능한 인스턴스 등록: 사전 구성에서 생성한 4개의 인스턴스 등록. 등록할 포트는 1단계에서 지정한 포트 사용
- 대상 그룹 상태 확인
- 로드 밸런서에 연결되지 않아 현재 상태는 Unused
■ NLB 로드 밸런서 생성
EC2 >> (로드 밸런싱) 로드밸런서 >> 로드밸런서 생성
- 로드 밸런서 유형 선택: NLB 선택
- 로드 밸런서 이름: NLB-HTTP-80
- 체계: 인터넷 경계 선택 (내부에서 사용할 경우 내부 선택)
- IP 주소: IPv4 선택
- 매핑: 가용 영역 선택. 가용성을 위해 2개 이상의 가용 영역을 선택하는 것이 좋으며, 사전 구성된 EC2가 2개의 가용 영역에 분산되어 있어 az1, az3 선택. IP는 AWS에서 지정하는 IP 또는 EIP를 생성하여 연결 가능
- 보안 그룹: HTTP 트래픽을 수용할 수 있는 보안그룹 연결 (EC2에서 사용하는 동일한 보안 그룹 사용)
- 리스너: 외부에 공개되는 포트 정보. 일반적인 L4 스위치에서 생성하는 Virtual Server와 동일함.
- NLB 로드밸런서 상태 확인
- 로드 밸런서 생성 이후 대상 그룹의 상태 확인
- Unused >> Initial >> Health 상태로 변경
- 등록 대상 EC2가 Health 상태로 변경 되면 NLB 로드 밸런서는 사용 가능.
■ NLB 동작 확인
- 생성된 NLB URL에 500회 요청
def AWS_NLB():
retrun_data = dict()
for i in range(1,500+1):
req = requests.get("http://nlb-http-80-e8469ea4178122ab.elb.ap-northeast-2.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
nlb = AWS_NLB()
print(nlb)
- 테스트 결과
- 1회차 결과: {'AZ_A_PUB_EC2_1': 239, 'AZ_A_PUB_EC2_2': 261}
- 2회차 결과: {'AZ_A_PUB_EC2_1': 258, 'AZ_A_PUB_EC2_2': 242}
- 3회차 결과: {'AZ_A_PUB_EC2_1': 244, 'AZ_A_PUB_EC2_2': 256}
- 가용 영역에 포함된 EC2가 모두 비활성화 될 경우 다른 가용 영역으로 전환 됨
- NLB의 라우팅 정책은 Flow Hash 방식으로 해당 알고리즘에 따라 트래픽을 받을 가용 영역이 결정되며, 가용 영역에 있는 EC2에게 트래픽이 분산 됨.
- NLB는 기본적으로 교차 영역 로드 밸런싱 기능은 비활성화 상태이며, 활성화 하기 위해서 로드 밸런서 속성 편집 또는 대상 그룹 속성을 수정하여 교차 영역 로드 밸런싱을 활성화 시킬 수 있음. (비용 발생)
일반적으로 대상 그룹 단위로 설정을 수행 함. - 아파치 access_log 확인 시 출발지 IP 확인 가능
728x90
'AWS' 카테고리의 다른 글
AWS - EC2 Auto Scaling 구축 (실습) (0) | 2024.03.01 |
---|---|
AWS - ELB (Elastic Load Balancing) ALB (실습) (1) | 2024.03.01 |
AWS - EC2 Auto Scaling (0) | 2024.03.01 |
AWS - Auto Scaling (0) | 2024.03.01 |
AWS - ELB (Elastic Load Balancing) 대상 그룹 설정 (0) | 2024.02.29 |