Dev./Terraform

Terraform: LoadBalancer

Ivan'show 2023. 9. 5.
728x90
반응형

Load balance

앱을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포한다.

  • 애플리케이션 가동 중지 없이 애플리케이션 서버 유지 관리 또는 업그레이드 실행
  • Health check 을 수행하고 가동 중지를 유발할 수 있는 문제를 방지

서브넷 -> 로드벨런스 리소스 -> 타겟 그룹 -> 리스너 -> 적용 인스턴스 설정

## Load Balancer 생성 시작
# Load Balancer
resource "ncloud_lb" "lion-lb-tf" {
  name = "be-lb-staging"
  network_type = "PUBLIC"
  type = "NETWORK_PROXY"
	# 로드 밸런서는 구분지어진 하나의 서브넷을 받기 때문에 따로 설정해준다.
  subnet_no_list = [ ncloud_subnet.be-lb.id ]
}

# 로드밸런서 도메인 주소값 출력
output "ncloud-lb-domain" {
  value = ncloud_lb.lion-lb-tf.domain
}

# Target group
resource "ncloud_lb_target_group" "lion-lb-tf" {
  vpc_no   = ncloud_vpc.main.vpc_no
  protocol = "PROXY_TCP"
  target_type = "VSVR" # Target type 에서 VPC
  port        = 8000
  description = "for django be"
  health_check {
    protocol = "TCP" # PROXY_TCP 는 체크도 TCP 만
    http_method = "GET"
    port           = 8080
    url_path       = "/monitor/l7check"
    cycle          = 30
    up_threshold   = 2
    down_threshold = 2
  }
  algorithm_type = "RR"
}

# 어떤 프로토콜을 리스닝할건지 정의
resource "ncloud_lb_listener" "lion-lb-tf" {
  load_balancer_no = ncloud_lb.lion-lb-tf.load_balancer_no
  protocol = "TCP"
  port = 80
  target_group_no = ncloud_lb_target_group.lion-lb-tf.target_group_no
}

# 타겟 그룹 설정으로 대상 서버 인스터스를 정할 수 있다
# Target group attachment
resource "ncloud_lb_target_group_attachment" "lion-lb-tg-tf" {
  target_group_no = ncloud_lb_target_group.lion-lb-tf.target_group_no
  target_no_list = [ncloud_server.server.instance_no]
}
## Load Balancer 생성 끝

 

 

728x90
반응형

'Dev. > Terraform' 카테고리의 다른 글

Terraform: Separating  (0) 2023.09.06
Terraform: Modules  (0) 2023.09.05
Terraform: AWS - VPC 생성  (0) 2023.09.04
Terrform: NCP 서버 생성  (0) 2023.09.02
Terraform: 설치와 기본정보  (0) 2023.09.01

댓글