6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ZOZOAdvent Calendar 2022

Day 13

GCPにおける外部L4ロードバランサーをTerraformで作成してみた

Last updated at Posted at 2022-12-12

本記事は ZOZO Advent Calendar 2022 カレンダー Vol.1 の 13 日目の記事です。昨日の投稿は @tippy さんの「PagerDuty CLIでscheduleをoverrideする方法」でした。

今回作成したロードバランサー

今回はGoogle Compute Engine(GCE)で構築したSFTPサーバの前段に置くロードバランサーのため、L7(http/https)ロードバランサではなく、L4(TCP/UDP)ロードバランサを選択しました。

なお、GCPにおける実現可能なロードバランサーは以下にまとまっているため、実際に構築を行う際は要件を満たすものを選択してください。
https://cloud.google.com/load-balancing/docs/choosing-load-balancer?hl=ja#lb-summary

事前準備

事前準備としてTerraformgcloud CLIをインストールしておきます。

Terraformに関しては業務などで複数のversionのTerraformを使用するのであればtfenvを使うのがおすすめです。

Terraformによる作成

Terraformのコードが以下になります。

resource "google_compute_address" "test-nlb-ip" {
  name    = "test-nlb-ip"
  project = local.project
  region  = local.region
  address = local.sftp_server_nlb_ip
}

resource "google_compute_region_backend_service" "test-nlb-backend-service" {
  provider              = google-beta
  name                  = "test-nlb-backend-service"
  project               = local.project
  region                = local.region
  load_balancing_scheme = "EXTERNAL"
  protocol              = "TCP"

  backend {
    group = google_compute_region_instance_group_manager.test-sftp-instance-group-manager.instance_group
  }

  health_checks = [google_compute_region_health_check.test-nlb-health-check.id]
}

resource "google_compute_region_health_check" "test-nlb-health-check" {
  provider = google-beta
  name     = "test-nlb-health-check"
  project  = local.project
  region   = local.region
  tcp_health_check {
    port = "80"
  }
}

resource "google_compute_forwarding_rule" "test-nlb-forwarding-rule" {
  provider              = google-beta
  name                  = "test-forward-rule"
  project               = local.project
  region                = local.region
  load_balancing_scheme = "EXTERNAL"
  backend_service       = google_compute_region_backend_service.test-nlb-backend-service.id
  ip_address            = google_compute_address.test-nlb-ip.id
  ip_protocol           = "TCP"
  ports                 = ["22"]
}

TerraformのGoogle Providerにはロードバランサーというリソースは存在しておらず、複数のリソースを組み合わせてロードバランサーの機能を実現しています。

google_compute_addressに関してはロードバランサーに紐付けるIPアドレスを固定するために使用しています。
また、google_compute_region_backend_serviceで指定しているbackendについてはGCEで構築しているSFTPサーバのinstance-managerを指定しています。

おわりに

GCPのL7ロードバランサーをTerraformで作成してみた記事は見かけるのですが、L4ロードバランサーの記事はあまり無かったので書いてみました。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?