1. 글을 작성하게 된 계기
ALB에 왜 고정 IP 주소가 할당되지 않는지, 왜 동적으로 IP 주소가 바뀌는지에 대해 학습/기록하기 위해 작성한 글입니다. 학습 과정에서 작성되었기 때문에 틀린 내용이 있을 수 있으며, 이에 대한 지적/피드백은 언제든 환영입니다.
해당 글은 Nginx DNS 캐싱 이슈 해결과 이어집니다.
2. ALB의 동작 원리
ALB는 여러 가용 영역(AZ)에 걸쳐 있는 여러 개의 노드로 구성되어 있으며, 각 노드는 해당 가용 영역 내의 서브넷에 연결된 IP 주소를 할당받습니다. ALB는 들어오는 트래픽을 여러 노드에 걸쳐 분산시키는데, 이는 각 노드가 처리할 수 있는 트래픽의 양을 최적화하고, 전체 시스템의 부하를 균등하게 분배하여 서비스의 안정성을 유지하기 위함입니다.
ALB는 트래픽의 양에 따라 자동으로 확장되거나 축소될 수 있습니다. 트래픽이 증가하면 더 많은 노드를 추가하고, 반대로 트래픽이 감소하면 필요하지 않은 노드를 자동으로 제거합니다.
ALB에 접근하기 위해서는 DNS 이름을 통해 접근해야 합니다. 이는 ALB는 고정 IP 주소를 직접 제공하지 않기 때문인데, AWS의 Question 카테고리를 보면, 고정 IP를 할당할 수 없다는 것을 볼 수 있습니다.
여기까지 정리해보면 다음과 같습니다.
- ALB에는 여러개의 노드가 존재한다.
- ALB는 고정 IP 주소를 직접 제공하지 않으며, ALB에 접근하기 위해서는 DNS 이름이 필요하다.
ALB에 DNS 이름으로 접근하는 이유는 ALB가 고가용성, 확장성, 탄력성을 위해 IP 주소를 변경하기 때문입니다. 즉, 사용자의 트래픽이 늘어나거나 줄어들 경우, ALB는 노드 개수를 증가/감소시키는데, 이 과정에서 트래픽의 효율적인 분산과 최적의 경로 제공을 위해 기존 ALB의 주소를 변경할 수 있기 때문입니다. 이 과정에서 클라이언트는 ALB의 IP 주소가 변경되더라도 DNS 이름으로 IP 주소를 조회할 수 있으며, 이를 통해 트래픽 패턴이나 가용 영역의 상태 변화에 따른 ALB의 네트워크 구성을 유동적으로 변경할 수 있게 됩니다.
로드 밸런서가 트래픽이 증가/감소할 때, 어떻게 이를 균등하게 분배하는지에 대해 설명하는 글이 있는데, 이를 통해, 노드는 증가/감소할 수 있으며, 사용자의 요청이 전달되는 최적의 경로는 변경될 수 있다는 것도 알 수 있습니다.
이를 정리해보면, ALB의 동작 원리는 다음과 같습니다.
- 클라이언트는 DNS 이름을 통해 서버 IP 주소를 받아오며, 이는 AWS DNS 서버에 의해 변경될 수 있다.
- 이렇게 하는 이유는 트래픽의 증가/감소에 따라 ALB의 노드 개수가 변할 수 있기 때문이다.
- 노드의 개수가 증가/감소하면, 최적의 트래픽 경로를 제공하기 위해 ALB의 IP 주소가 변경될 수 있다.
3. 결론
ALB는 고가용성, 확장성, 탄력성을 위해 IP 주소를 변경합니다. 이는 사용자 요청에 따라 노드가 확장/축소되는데, 이 과정에서 최적의 경로를 제공하기 위해서 입니다. ALB의 자원 세팅도 중요하지만, 내부에서 어떻게 돌아가는지를 이해하는 것도 중요하므로, 이런 세부 사항도 잘 알아둘 것을 권장합니다.
