웹 서비스에서 중요한 부분을 차지하고 있는 로드밸런서을 terrafrom 을 통해 설정해보겠습니다.
시나리오는 80port로 들어오는것을 모두 443포트로 보내는 것이다.
또한 해당 도메인으로 접속할 수 있도록 설정한다.
대상그룹 설정
우선 80port의 대상그룹을 설정하고 ec2에 연결하는 작업이 필요하다.
# 대상그룹 설정
resource "aws_lb_target_group" "my80" {
name = "my80"
port = 80
protocol = "HTTP"
vpc_id = aws_vpc.my_vpc.id
}
# 로드밸런서 ec2 연결
resource "aws_lb_target_group_attachment" "attachment_ec2"{
target_group_arn = aws_lb_target_group.my80.arn
target_id = aws_instance.app-ec2.id
port = 80
}
로드밸런서 그룹 생성
로드밸런서 그룹을 생성하고 서브넷과 보안그룹을 설정한다.
다음으로는 리스너를 추가하는데 사전에 설정한 대상그룹을 선택하고 리다이렉트로 443포트로 가게한다.
## 로드밸런서
resource "aws_alb" "my-alb"{
name = "my-alb"
internal = false
load_balancer_type = "application"
security_groups = [aws_security_group.alb-sg.id]
subnets = [aws_subnet.my-public-subnet-a.id , aws_my.sjb-public-subnet-c.id]
}
## 리스너 추가
# 리스너
resource "aws_lb_listener" "my-alb"{
load_balancer_arn = aws_alb.my-alb.arn
port = 80
protocol = "HTTP"
default_action {
type = "redirect"
redirect {
protocol = "HTTPS"
port = "443"
status_code = "HTTP_301"
}
target_group_arn = aws_lb_target_group.my80.arn # 사전에 설정한 80 포트 대상그룹
}
}
로드밸런스 규칙 추가
로드밸런스 규칙을 통해 80포트로 들어오는것들은 해당 도메인으로 접속이 가능하도록 추가한다.
## 로드밸런서 규칙 추가
resource "aws_lb_listener_rule" "my-rule2" {
listener_arn = aws_lb_listener.my-alb.arn
action {
type = "forward"
target_group_arn = aws_lb_target_group.my80.arn
}
condition {
host_header {
values = ["www.mydns.link"]
}
}
}
이외에서 다양한 포트를 추가하고 로드밸런스를 설정하면된다.
로드밸런서 코드 작성은 생각보다 복잡하여 조금 더 공부가 필요해보인다!
'Terraform' 카테고리의 다른 글
Terraform _ Certificate 요청 및 Route 53 (0) | 2023.09.28 |
---|---|
Terraform _ db 삭제 시 오류 ( final_snapshot_identifier is required when skip_final_snapshot is false) (0) | 2023.09.22 |
Terraform_DB subnet , DB instance (0) | 2023.09.22 |
Terraform_ EC2 instance 생성 (0) | 2023.09.22 |
Terraform_ 보안그룹에서 내 IP 설정하는 법 (2) | 2023.09.21 |