아마존 클라우드

[클라우드] 아마존 로드 발란서 NLB 사용하기

트리스탄1234 2023. 7. 14. 06:09
728x90
반응형

 

 

인녕 하세요 이웃님들 ^.^

오래간만에 전공 관련글 올려 봅니다.

 

오늘 포스팅은 Amazon Load Balancer에 대해서 포스팅을 해보려고 하는데요.

그중에 NLB(Network Load Balancer)의 사용방법에 대해서 포스팅을 해보려고 합니다.

 

우선 오늘 구성할 다이어 그램은 위의 그림과 같습니다.

Web server 1,2 번 서버 앞에서 NLB를 위치 시키고. 서비스 요청이 올때마다

 

Server1, 2번에 각각 분배 하는 방법에 대해서 알아 봅시다.

우선 서버 1번과 2번은 EC2 인스턴스로 사전에 아래의 그림과 같이 미리 생성을 해놓았습니다.

.

서버가 정상 동작 하는지 웹브라우저에서, ec1와 ec2에 대한 주소를 붙여 넣고 서비스가 정상적인지 확인을 해보면.

반응형

위의화면과 같이 Test Website EC2 Instance 1과 2로 Web 서비스가 정상적임을 확인 할수 있습니다.

이제 NLB를 생성하기 위해서 아마존 콘솔창에서 EC2를 검색 하고, 아래 화면과 같이 Load balancer를 클릭을 합니다.

아래 그림과 같이 Create Load Balancer를 클릭 합니다.

아래 그림 처럼 Load Balancer의 Type중 Network Load Balancer 밑의 Create 버튼을 클릭 합니다.

아래 그림 처럼 Load Balancer Name은 주고 싶은 이름을 주고, Public 서브넷에 위치한 NLB이니까..

Internet-facing을 클릭을 하고, IPV4를 클릭 합니다.

Network mapping 부분에서 우리가 사용할 Lab VPC를 클릭을 하고..

Mapping 부분에 2개의 AZ(Available Zone)을 클릭 합니다.

Listener and routing 부분에서 create target group를 클릭 합니다.

이번 실습에서는 대상 그룹(NLB가 서비스 요청을 분배할)이 EC2이므로, Target group Type는 Instances로 선택을 하고, target group이름은 원하는 이름을 넣고, Protocol 은 TCP Port는 80으로 선택을 하고,

VPC는 우리가 사용할 VPC를 선택을 합니다.

 

Advance health check setting부분을 아래와 같이 설정 합니다.

로드 밸런서는 지정된 포트, 프로토콜 및 ping 경로를 사용하여 HealthCheckIntervalSeconds초마다 등록된 각 대상에 상태 확인 요청을 보내고, 응답 제한 시간 내에 대상이 응답하기를 기다리다가 상태 확인이 연속 실패 응답에 대한 임계값을 초과하면 로드 밸런서는 대상을 서비스에서 제외하게 됩니다.

위의 설정값을 해석을 하면. 다섯번의 응답이 오면 서비스가 정상이라고 판다을 하고,

 

연속적인 2번의 서비스 응답을 받지 못하면 실패로 간주를 합니다.

이제 설정을 완료가 되었으니 Next 버튼을 클릭 합니다.

target group에 포함시킬 EC2 Instance 2개를 선택을 하고 include as pending now버튼을 클릭 합니다.

그럼 위의 화면 아래 부분처럼 pending 상태의 2개의 EC2가 포함이 되어있는 것을 확인 하고 create target group 버튼을 클릭 합니다.

위의 화면에서 refresh를 클릭 하고 표시되는 target group을 클릭 합니다.

그럼 이제 listener and routing 부분으로 돌아 가서 생성된 target을 클릭 합니다.

그럼 이제 crerate load balancer 버튼을 클릭 합니다.

view load balancer 버튼을 클릭 합니다.

이제 DNS Name을 메모장에 복사를 합니다.

생성된 elb-target을 클릭 합니다.

포함된 EC2 Instance가 health 상태가 될때까지 기다립니다.

EC2의 단계에 따른 상태 설명은 아래와 같습니다.

 

  • initial: 로드 밸런서가 대상을 등록하거나 대상에서 초기 상태 확인을 수행하는 중입니다.
  • healthy: 대상이 정상입니다.
  • unhealthy: 대상이 상태 확인에 응답하지 않았거나 상태 확인에 실패했습니다.
  • unused: 대상이 대상 그룹에 등록되지 않았거나 대상 그룹이 로드 밸런서에 대한 리스너 규칙에서 사용되지 않았거나 대상이 로드 밸런서에 대해 활성화되지 않은 가용 영역에 있습니다.
  • draining: 대상이 등록 취소되고 Connection Draining이 진행 중입니다

 

앞에서 복사한 Target Group의 DNS 이름을 웹 브라우저에 붙여 넣습니다.

여러번 붙여 넣어서 실행을 시켜 봐도 계속 ec2 Instance 2로만 트래픽이 흐르는것을 알수 있습니다.

교차 영역 기능을 활성화 시키면 1번 서버와 2번 서버에 서비스 요청을 골고루 분배를 할수 있습니다.

생성한 로드 발란서를 클릭을 하고 attribute tab에서 edit 버튼을 클릭 합니다.

위의 그림 처럼 cross-zoneload balancing을 enable을 클릭 하고, Save changes를 클릭 합니다.

이제 적용한 값이 설정 되기까지 1분에서 2분 정도를 기다리고,,,

 

웹브라우저를 열고 앞서 복사한 target group의 DNS 주소를 웹 브라우저 창에서 붙여 놓고 엔터를 쳐 봅니다.

.

위의 화면과 같이 서버 1번과, 2번에 서비스 요청이 골고루 분포 되는걸 볼수 있습니다.

 

그럼 오늘은 여기까지 포스팅 하겠습니다.

오늘도 도움이 되었기를 바라면서 ^.^

 

이만 물러 갑니다.

행복한 하루 되세요.

 

 

 

 

728x90
반응형