google_compute_region_backend_service

A Region Backend Service defines a regionally-scoped group of virtual machines that will serve traffic for load balancing.

To get more information about RegionBackendService, see:

Open in Cloud Shell

Example Usage - Region Backend Service Basic

resource "google_compute_region_backend_service" "default" {
  name                            = "region-service"
  region                          = "us-central1"
  health_checks                   = [google_compute_health_check.default.id]
  connection_draining_timeout_sec = 10
  session_affinity                = "CLIENT_IP"
}

resource "google_compute_health_check" "default" {
  name               = "rbs-health-check"
  check_interval_sec = 1
  timeout_sec        = 1

  tcp_health_check {
    port = "80"
  }
}
Open in Cloud Shell

Example Usage - Region Backend Service External Iap

resource "google_compute_region_backend_service" "default" {
  name                  = "tf-test-region-service-external"
  region                = "us-central1"
  protocol              = "HTTP"
  load_balancing_scheme = "EXTERNAL"
  iap {
    oauth2_client_id     = "abc"
    oauth2_client_secret = "xyz"
  }
}
Open in Cloud Shell

Example Usage - Region Backend Service Cache

resource "google_compute_region_backend_service" "default" {
  provider = google-beta

  name                            = "region-service"
  region                          = "us-central1"
  health_checks                   = [google_compute_region_health_check.default.id]
  enable_cdn  = true
  cdn_policy {
    cache_mode = "CACHE_ALL_STATIC"
    default_ttl = 3600
    client_ttl  = 7200
    max_ttl     = 10800
    negative_caching = true
    signed_url_cache_max_age_sec = 7200
  }

  load_balancing_scheme = "EXTERNAL"
  protocol              = "HTTP"

}

resource "google_compute_region_health_check" "default" {
  provider = google-beta

  name               = "rbs-health-check"
  region             = "us-central1"

  http_health_check {
    port = 80
  }
}
Open in Cloud Shell

Example Usage - Region Backend Service Ilb Round Robin

resource "google_compute_region_backend_service" "default" {
  region = "us-central1"
  name = "region-service"
  health_checks = [google_compute_health_check.health_check.id]
  protocol = "HTTP"
  load_balancing_scheme = "INTERNAL_MANAGED"
  locality_lb_policy = "ROUND_ROBIN"
}

resource "google_compute_health_check" "health_check" {
  name               = "rbs-health-check"
  http_health_check {
    port = 80
  }
}
Open in Cloud Shell

Example Usage - Region Backend Service External

resource "google_compute_region_backend_service" "default" {
  provider              = google-beta
  region                = "us-central1"
  name                  = "region-service"
  health_checks         = [google_compute_region_health_check.health_check.id]
  protocol              = "TCP"
  load_balancing_scheme = "EXTERNAL"
}

resource "google_compute_region_health_check" "health_check" {
  provider           = google-beta
  name               = "rbs-health-check"
  region             = "us-central1"

  tcp_health_check {
    port = 80
  }
}
Open in Cloud Shell

Example Usage - Region Backend Service External Weighted

resource "google_compute_region_backend_service" "default" {
  region                = "us-central1"
  name                  = "region-service"
  health_checks         = [google_compute_region_health_check.health_check.id]
  protocol              = "TCP"
  load_balancing_scheme = "EXTERNAL"
  locality_lb_policy    = "WEIGHTED_MAGLEV"
}

resource "google_compute_region_health_check" "health_check" {
  name               = "rbs-health-check"
  region             = "us-central1"

  http_health_check {
    port = 80
  }
}
Open in Cloud Shell

Example Usage - Region Backend Service Ilb Ring Hash

resource "google_compute_region_backend_service" "default" {
  region = "us-central1"
  name = "region-service"
  health_checks = [google_compute_health_check.health_check.id]
  load_balancing_scheme = "INTERNAL_MANAGED"
  locality_lb_policy = "RING_HASH"
  session_affinity = "HTTP_COOKIE"
  protocol = "HTTP"
  circuit_breakers {
    max_connections = 10
  }
  consistent_hash {
    http_cookie {
      ttl {
        seconds = 11
        nanos = 1111
      }
      name = "mycookie"
    }
  }
  outlier_detection {
    consecutive_errors = 2
  }
}

resource "google_compute_health_check" "health_check" {
  name               = "rbs-health-check"
  http_health_check {
    port = 80
  }
}
Open in Cloud Shell

Example Usage - Region Backend Service Balancing Mode

resource "google_compute_region_backend_service" "default" {
  load_balancing_scheme = "INTERNAL_MANAGED"

  backend {
    group          = google_compute_region_instance_group_manager.rigm.instance_group
    balancing_mode = "UTILIZATION"
    capacity_scaler = 1.0
  }

  region      = "us-central1"
  name        = "region-service"
  protocol    = "HTTP"
  timeout_sec = 10

  health_checks = [google_compute_region_health_check.default.id]
}

data "google_compute_image" "debian_image" {
  family   = "debian-11"
  project  = "debian-cloud"
}

resource "google_compute_region_instance_group_manager" "rigm" {
  region   = "us-central1"
  name     = "rbs-rigm"
  version {
    instance_template = google_compute_instance_template.instance_template.id
    name              = "primary"
  }
  base_instance_name = "internal-glb"
  target_size        = 1
}

resource "google_compute_instance_template" "instance_template" {
  name         = "template-region-service"
  machine_type = "e2-medium"

  network_interface {
    network    = google_compute_network.default.id
    subnetwork = google_compute_subnetwork.default.id
  }

  disk {
    source_image = data.google_compute_image.debian_image.self_link
    auto_delete  = true
    boot         = true
  }

  tags = ["allow-ssh", "load-balanced-backend"]
}

resource "google_compute_region_health_check" "default" {
  region = "us-central1"
  name   = "rbs-health-check"
  http_health_check {
    port_specification = "USE_SERVING_PORT"
  }
}

resource "google_compute_network" "default" {
  name                    = "rbs-net"
  auto_create_subnetworks = false
  routing_mode            = "REGIONAL"
}

resource "google_compute_subnetwork" "default" {
  name          = "rbs-net-default"
  ip_cidr_range = "10.1.2.0/24"
  region        = "us-central1"
  network       = google_compute_network.default.id
}
Open in Cloud Shell

Example Usage - Region Backend Service Connection Tracking

resource "google_compute_region_backend_service" "default" {
  provider                        = google-beta
  name                            = "region-service"
  region                          = "us-central1"
  health_checks                   = [google_compute_region_health_check.health_check.id]
  connection_draining_timeout_sec = 10
  session_affinity                = "CLIENT_IP"
  protocol                        = "TCP"
  load_balancing_scheme           = "EXTERNAL"
  connection_tracking_policy {
    tracking_mode                                = "PER_SESSION"
    connection_persistence_on_unhealthy_backends = "NEVER_PERSIST"
    idle_timeout_sec                             = 60
    enable_strong_affinity                       = true
  }
}

resource "google_compute_region_health_check" "health_check" {
  provider           = google-beta
  name               = "rbs-health-check"
  region             = "us-central1"

  tcp_health_check {
    port = 22
  }
}

Argument Reference

The following arguments are supported:


The backend block supports:

The circuit_breakers block supports:

The connect_timeout block supports:

The consistent_hash block supports:

The http_cookie block supports:

The ttl block supports:

The cdn_policy block supports:

The cache_key_policy block supports:

The negative_caching_policy block supports:

The failover_policy block supports:

The iap block supports:

The outlier_detection block supports:

The base_ejection_time block supports:

The interval block supports:

The connection_tracking_policy block supports:

The log_config block supports:

The subsetting block supports:

Attributes Reference

In addition to the arguments listed above, the following computed attributes are exported:

Timeouts

This resource provides the following Timeouts configuration options:

Import

RegionBackendService can be imported using any of these accepted formats:

In Terraform v1.5.0 and later, use an import block to import RegionBackendService using one of the formats above. For example:

import {
  id = "projects/{{project}}/regions/{{region}}/backendServices/{{name}}"
  to = google_compute_region_backend_service.default
}

When using the terraform import command, RegionBackendService can be imported using one of the formats above. For example:

$ terraform import google_compute_region_backend_service.default projects/{{project}}/regions/{{region}}/backendServices/{{name}}
$ terraform import google_compute_region_backend_service.default {{project}}/{{region}}/{{name}}
$ terraform import google_compute_region_backend_service.default {{region}}/{{name}}
$ terraform import google_compute_region_backend_service.default {{name}}

User Project Overrides

This resource supports User Project Overrides.