Load Balancer는 여러 인스턴스에 트래픽을 분배해주기 위해서 반드시 필요한 리소스이다. EC2 위에 올라가 있는 대부분의 서비스는 LB 앞 단에 두는 것이 보통인데, LB의 경우에는 설정할 것이 상당히 많아 코드로 한 번 정리해놓으면 편리하게 생성/관리할 수 있다.
LB 역할을 하는 것이 Nginx 혹은 HAProxy, Apache 등 이 있었다.
Load Balancer는 ALB/NLB 선택해서 생성하면 된다.
resource "aws_lb" "test" {
name = "test-lb-tf"
internal = false
load_balancer_type = "application"
security_groups = [aws_security_group.lb_sg.id]
subnets = [for subnet in aws_subnet.public : subnet.id]
enable_deletion_protection = true
access_logs {
bucket = aws_s3_bucket.lb_logs.id
prefix = "test-lb"
enabled = true
}
tags = {
Environment = "production"
}
}
NLB(Network Load Balancer): Layer4 로드밸런서로, ALB보다 전송 속도는 빠르다. 성능이 크며 고정 ip를 지원한다. 대형 Pool이다.
엄청나게 거대한 어떤 것이 할당받는 것이다. 성능상으로는 더 우위에 있다. 하지만 기능상으로는 약하다. Security Group으로 과거에는 접근제어가 되지 않았지만, 현재는 가능합니다.
resource "aws_lb" "test" {
name = "test-lb-tf"
internal = false
load_balancer_type = "network"
subnets = [for subnet in aws_subnet.public : subnet.id]
enable_deletion_protection = true
tags = {
Environment = "production"
}
}