Load Balancing(LB)
트래픽 분산 처리
. 하나의 인터넷 서비스에 발생하는 트래픽이 많을 때 여러 대의 서버를 분산처리 하여 서버의 로드율 증가, 부하량, 속도저하 등을 고려하여 분산처리하는 방식
장점
- 고가의 서버로 확장하지 않고(Scale-up) 저렴한 비용으로 다수의 서버를 증설(Scale-out)하여 경제적으로 비용절감
- 1대의 서버에 장애가 발생해도 서비스 중단 없이 운영 가능
- 트래픽이 급증해도 서버 증설로 서비스 중단 없이 운영 가능
ALB(Application LoadBalancer)
- 7계층 LB
- Client IP와 서버 사이의 모든 트래픽은 LB와 통신한다.
- 보안그룹을 통한 보안이 가능하다.
- Client → LB의 접근 제한 가능
- ALB의 IP 주소는 변동되기 때문에 Client에서 서버에 접근하려면 ALB의 DNS(Domain Name Service)를 사용해야 한다.
- Name Server 또는 Route53에서 CNAME을 사용해야 Domain Name 연동이 가능하다.
AWS ALB 동작 방식
NLB(Network LoadBalancer)
- 4계층 LB
- Client → Server 트래픽은 LB를 통하고 Server → Client 트래픽은 직접 통신한다.
- NLB에 보안 그룹이 적용되지 않아서 서버에 적용된 보안 그룹에서 보안이 가능하다.
- Client → Server의 접근 제한 가능
- NLB에 할당한 EIP를 Static IP로 사용 가능하여 DNS, IP 모두 사용할 수 있다.
- Name server 또는 Route 53에서 A Record 사용 가능하다.
Load Balancing Algorithm
라운드 로빈(Round Robin - RR)
Client로부터 받은 요청을 로드밸런싱 대상 서버에 순서대로
할당받음. 요청 받은 순서와 서버 순서가 일치함. 로드 밸런싱 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우, 균등한 분산이 가능해 이 방식을 사용.
가중 라운드 로빈(Weighted Round Robin - WRR)
실제 서버에 서로 다른 처리 용량을 지정 가능, 각 서버에 가중치(숫자 정수)를 부여하여 처리 용량을 정할 수 있음. 각기 다른 처리 능력을 가진 서버가 있을 경우 WRR 알고리즘이 더 효율적.
최소 연결 방식(Least Connection)
연결 수가 가장 적은 서버에 트래픽을 먼저 보냄. 동적 분산 알고리즘으로 각 서버에 대한 현재 연결 수를 동적으로 카운트할 수 있고, 동적으로 변하는 요청에 대한 부하 분산 가능
ALB 생성
AWS 콘솔에서 로드밸런서 > ALB 만들기 선택
Scheme
Internet-facing은 클라이언트의 요청이 인터넷을 타고 타겟에 도착할 수 있다. 따라서public subnet
이 필요하다.
Internal은 클라이언트의 요청이 private IP를 사용하여 타겟에 도착한다.
public-1a와 public-1c를 선택한다.
보안그룹 생성하기를 눌러 필요한 보안그룹을 만든다.
ALB를 생성할 VPC를 선택하고
인바운드 규칙으로 HTTP, HTTPS를 주었다.
인터넷에서 트래픽이 들어오는 부분이니까 소스는 Anywhere IPv4로 선택했다.
아웃바운드는 들어온 HTTP, HTTPS 요청이 WEB01, WEB02 서버에 들어갈 수 있게 web-sg를 선택했다.
보안그룹을 생성하고 다시 ALB 생성 화면으로 돌아와서 새로고침 버튼을 누르면 방금 생성한 보안그룹을 선택할 수 있다.
로드밸런서가 트래픽을 분산시켜서 전달해줄 타겟 그룹을 생성한다.
WEB01, WEB02 인스턴스에 전달할 것이므로 Instances 선택
VPC 선택
타겟 인스턴스를 선택하고 Include as pending below 버튼을 꼭 눌러서 포함시켜주자 ! !
다시 ALB 생성 화면에서 새로고침 버튼을 눌러서 방금 생성한 타겟 그룹을 선택한다.
WEB01, WEB02가 포함된 보안 그룹에 80포트를 추가시켜준다.
Target group을 확인하면 Health check settings이 있는데 여기서 Path를 /index.html로 바꿔주었다. 현재 사이트에 유일하게 존재하는 페이지가 index.html 한개니까..
Targets를 확인하면 이렇게 status가 healthy로 확인된다.
ALB의 DNS주소로 접속하면 두 WEB01과 WEB02가 번갈아가면서 나오는 것을 확인할 수 있다!
WEB01과 WEB02가 번갈아가면서 나오는 이유는?
ALB의 로드밸런싱 알고리즘이라운드 로빈
으로 설정되어 있기 때문이다.
다음에는 WAS에 톰캣 설치 ٩( *˙0˙*)۶