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

Example Usage

resource "google_compute_backend_service" "foobar" {
  name        = "blablah"
  description = "Hello World 1234"
  port_name   = "http"
  protocol    = "HTTP"
  timeout_sec = 10
  enable_cdn  = false

  backend {
    group = "${}"

  health_checks = ["${google_compute_http_health_check.default.self_link}"]

resource "google_compute_instance_group_manager" "foo" {
  name               = "terraform-test"
  instance_template  = "${google_compute_instance_template.foobar.self_link}"
  base_instance_name = "foobar"
  zone               = "us-central1-f"
  target_size        = 1

resource "google_compute_instance_template" "foobar" {
  name         = "terraform-test"
  machine_type = "n1-standard-1"

  network_interface {
    network = "default"

  disk {
    source_image = "debian-cloud/debian-8"
    auto_delete  = true
    boot         = true

resource "google_compute_http_health_check" "default" {
  name               = "test"
  request_path       = "/"
  check_interval_sec = 1
  timeout_sec        = 1

Argument Reference

The following arguments are supported:

  • name - (Required) The name of the backend service.

  • health_checks - (Required) Specifies a list of HTTP health check objects for checking the health of the backend service.

  • backend - (Optional) The list of backends that serve this BackendService. See Backend below.

  • description - (Optional) The textual description for the backend service.

  • enable_cdn - (Optional) Whether or not to enable the Cloud CDN on the backend service.

  • port_name - (Optional) The name of a service that has been added to an instance group in this backend. See related docs for details. Defaults to http.

  • project - (Optional) The project in which the resource belongs. If it is not provided, the provider project is used.

  • protocol - (Optional) The protocol for incoming requests. Defaults to HTTP.

  • region - (Optional) The Region in which the created address should reside. If it is not provided, the provider region is used.

  • timeout_sec - (Optional) The number of secs to wait for a backend to respond to a request before considering the request failed. Defaults to 30.

Backend supports the following attributes:

  • group - (Required) The name or URI of a Compute Engine instance group ( that can receive traffic.

  • balancing_mode - (Optional) Defines the strategy for balancing load. Defaults to UTILIZATION

  • capacity_scaler - (Optional) A float in the range [0, 1.0] that scales the maximum parameters for the group (e.g., max rate). A value of 0.0 will cause no requests to be sent to the group (i.e., it adds the group in a drained state). The default is 1.0.

  • description - (Optional) Textual description for the backend.

  • max_rate - (Optional) Maximum requests per second (RPS) that the group can handle.

  • max_rate_per_instance - (Optional) The maximum per-instance requests per second (RPS).

  • max_utilization - (Optional) The target CPU utilization for the group as a float in the range [0.0, 1.0]. This flag can only be provided when the balancing mode is UTILIZATION. Defaults to 0.8.

Attributes Reference

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

  • fingerprint - The fingerprint of the backend service.

  • self_link - The URI of the created resource.