| --- |
| # ---------------------------------------------------------------------------- |
| # |
| # *** AUTO GENERATED CODE *** Type: MMv1 *** |
| # |
| # ---------------------------------------------------------------------------- |
| # |
| # This file is automatically generated by Magic Modules and manual |
| # changes will be clobbered when the file is regenerated. |
| # |
| # Please read more about how to change this file in |
| # .github/CONTRIBUTING.md. |
| # |
| # ---------------------------------------------------------------------------- |
| subcategory: "Compute Engine" |
| description: |- |
| A Region Backend Service defines a regionally-scoped group of virtual |
| machines that will serve traffic for load balancing. |
| --- |
| |
| # 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: |
| |
| * [API documentation](https://cloud.google.com/compute/docs/reference/latest/regionBackendServices) |
| * How-to Guides |
| * [Internal TCP/UDP Load Balancing](https://cloud.google.com/compute/docs/load-balancing/internal/) |
| |
| ~> **Warning:** All arguments including the following potentially sensitive |
| values will be stored in the raw state as plain text: `iap.oauth2_client_secret`, `iap.oauth2_client_secret_sha256`. |
| [Read more about sensitive data in state](https://www.terraform.io/language/state/sensitive-data). |
| |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=region_backend_service_basic&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Region Backend Service Basic |
| |
| |
| ```hcl |
| 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" |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=region_backend_service_external_iap&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Region Backend Service External Iap |
| |
| |
| ```hcl |
| 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" |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=region_backend_service_cache&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Region Backend Service Cache |
| |
| |
| ```hcl |
| 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 |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=region_backend_service_ilb_round_robin&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Region Backend Service Ilb Round Robin |
| |
| |
| ```hcl |
| 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 |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=region_backend_service_external&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Region Backend Service External |
| |
| |
| ```hcl |
| 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 |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=region_backend_service_external_weighted&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Region Backend Service External Weighted |
| |
| |
| ```hcl |
| 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 |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=region_backend_service_ilb_ring_hash&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Region Backend Service Ilb Ring Hash |
| |
| |
| ```hcl |
| 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 |
| } |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=region_backend_service_balancing_mode&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Region Backend Service Balancing Mode |
| |
| |
| ```hcl |
| 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 |
| } |
| ``` |
| <div class = "oics-button" style="float: right; margin: 0 0 -15px"> |
| <a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=region_backend_service_connection_tracking&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank"> |
| <img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;"> |
| </a> |
| </div> |
| ## Example Usage - Region Backend Service Connection Tracking |
| |
| |
| ```hcl |
| 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: |
| |
| |
| * `name` - |
| (Required) |
| Name of the resource. Provided by the client when the resource is |
| created. The name must be 1-63 characters long, and comply with |
| RFC1035. Specifically, the name must be 1-63 characters long and match |
| the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the |
| first character must be a lowercase letter, and all following |
| characters must be a dash, lowercase letter, or digit, except the last |
| character, which cannot be a dash. |
| |
| |
| - - - |
| |
| |
| * `affinity_cookie_ttl_sec` - |
| (Optional) |
| Lifetime of cookies in seconds if session_affinity is |
| GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts |
| only until the end of the browser session (or equivalent). The |
| maximum allowed value for TTL is one day. |
| When the load balancing scheme is INTERNAL, this field is not used. |
| |
| * `backend` - |
| (Optional) |
| The set of backends that serve this RegionBackendService. |
| Structure is [documented below](#nested_backend). |
| |
| * `circuit_breakers` - |
| (Optional) |
| Settings controlling the volume of connections to a backend service. This field |
| is applicable only when the `load_balancing_scheme` is set to INTERNAL_MANAGED |
| and the `protocol` is set to HTTP, HTTPS, or HTTP2. |
| Structure is [documented below](#nested_circuit_breakers). |
| |
| * `consistent_hash` - |
| (Optional) |
| Consistent Hash-based load balancing can be used to provide soft session |
| affinity based on HTTP headers, cookies or other properties. This load balancing |
| policy is applicable only for HTTP connections. The affinity to a particular |
| destination host will be lost when one or more hosts are added/removed from the |
| destination service. This field specifies parameters that control consistent |
| hashing. |
| This field only applies when all of the following are true - |
| * `load_balancing_scheme` is set to INTERNAL_MANAGED |
| * `protocol` is set to HTTP, HTTPS, or HTTP2 |
| * `locality_lb_policy` is set to MAGLEV or RING_HASH |
| Structure is [documented below](#nested_consistent_hash). |
| |
| * `cdn_policy` - |
| (Optional) |
| Cloud CDN configuration for this BackendService. |
| Structure is [documented below](#nested_cdn_policy). |
| |
| * `connection_draining_timeout_sec` - |
| (Optional) |
| Time for which instance will be drained (not accept new |
| connections, but still work to finish started). |
| |
| * `description` - |
| (Optional) |
| An optional description of this resource. |
| |
| * `failover_policy` - |
| (Optional) |
| Policy for failovers. |
| Structure is [documented below](#nested_failover_policy). |
| |
| * `enable_cdn` - |
| (Optional) |
| If true, enable Cloud CDN for this RegionBackendService. |
| |
| * `health_checks` - |
| (Optional) |
| The set of URLs to HealthCheck resources for health checking |
| this RegionBackendService. Currently at most one health |
| check can be specified. |
| A health check must be specified unless the backend service uses an internet |
| or serverless NEG as a backend. |
| |
| * `iap` - |
| (Optional) |
| Settings for enabling Cloud Identity Aware Proxy |
| Structure is [documented below](#nested_iap). |
| |
| * `load_balancing_scheme` - |
| (Optional) |
| Indicates what kind of load balancing this regional backend service |
| will be used for. A backend service created for one type of load |
| balancing cannot be used with the other(s). For more information, refer to |
| [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service). |
| Default value is `INTERNAL`. |
| Possible values are: `EXTERNAL`, `EXTERNAL_MANAGED`, `INTERNAL`, `INTERNAL_MANAGED`. |
| |
| * `locality_lb_policy` - |
| (Optional) |
| The load balancing algorithm used within the scope of the locality. |
| The possible values are: |
| * `ROUND_ROBIN`: This is a simple policy in which each healthy backend |
| is selected in round robin order. |
| * `LEAST_REQUEST`: An O(1) algorithm which selects two random healthy |
| hosts and picks the host which has fewer active requests. |
| * `RING_HASH`: The ring/modulo hash load balancer implements consistent |
| hashing to backends. The algorithm has the property that the |
| addition/removal of a host from a set of N hosts only affects |
| 1/N of the requests. |
| * `RANDOM`: The load balancer selects a random healthy host. |
| * `ORIGINAL_DESTINATION`: Backend host is selected based on the client |
| connection metadata, i.e., connections are opened |
| to the same address as the destination address of |
| the incoming connection before the connection |
| was redirected to the load balancer. |
| * `MAGLEV`: used as a drop in replacement for the ring hash load balancer. |
| Maglev is not as stable as ring hash but has faster table lookup |
| build times and host selection times. For more information about |
| Maglev, refer to https://ai.google/research/pubs/pub44824 |
| * `WEIGHTED_MAGLEV`: Per-instance weighted Load Balancing via health check |
| reported weights. If set, the Backend Service must |
| configure a non legacy HTTP-based Health Check, and |
| health check replies are expected to contain |
| non-standard HTTP response header field |
| X-Load-Balancing-Endpoint-Weight to specify the |
| per-instance weights. If set, Load Balancing is weight |
| based on the per-instance weights reported in the last |
| processed health check replies, as long as every |
| instance either reported a valid weight or had |
| UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains |
| equal-weight. |
| |
| This field is applicable to either: |
| * A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, |
| and loadBalancingScheme set to INTERNAL_MANAGED. |
| * A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. |
| * A regional backend service with loadBalancingScheme set to EXTERNAL (External Network |
| Load Balancing). Only MAGLEV and WEIGHTED_MAGLEV values are possible for External |
| Network Load Balancing. The default is MAGLEV. |
| |
| If session_affinity is not NONE, and this field is not set to MAGLEV, WEIGHTED_MAGLEV, |
| or RING_HASH, session affinity settings will not take effect. |
| Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced |
| by a URL map that is bound to target gRPC proxy that has validate_for_proxyless |
| field set to true. |
| Possible values are: `ROUND_ROBIN`, `LEAST_REQUEST`, `RING_HASH`, `RANDOM`, `ORIGINAL_DESTINATION`, `MAGLEV`, `WEIGHTED_MAGLEV`. |
| |
| * `outlier_detection` - |
| (Optional) |
| Settings controlling eviction of unhealthy hosts from the load balancing pool. |
| This field is applicable only when the `load_balancing_scheme` is set |
| to INTERNAL_MANAGED and the `protocol` is set to HTTP, HTTPS, or HTTP2. |
| Structure is [documented below](#nested_outlier_detection). |
| |
| * `port_name` - |
| (Optional) |
| A named port on a backend instance group representing the port for |
| communication to the backend VMs in that group. Required when the |
| loadBalancingScheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED, or INTERNAL_SELF_MANAGED |
| and the backends are instance groups. The named port must be defined on each |
| backend instance group. This parameter has no meaning if the backends are NEGs. API sets a |
| default of "http" if not given. |
| Must be omitted when the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing). |
| |
| * `protocol` - |
| (Optional) |
| The protocol this RegionBackendService uses to communicate with backends. |
| The default is HTTP. **NOTE**: HTTP2 is only valid for beta HTTP/2 load balancer |
| types and may result in errors if used with the GA API. |
| Possible values are: `HTTP`, `HTTPS`, `HTTP2`, `SSL`, `TCP`, `UDP`, `GRPC`, `UNSPECIFIED`. |
| |
| * `security_policy` - |
| (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html)) |
| The security policy associated with this backend service. |
| |
| * `session_affinity` - |
| (Optional) |
| Type of session affinity to use. The default is NONE. Session affinity is |
| not applicable if the protocol is UDP. |
| Possible values are: `NONE`, `CLIENT_IP`, `CLIENT_IP_PORT_PROTO`, `CLIENT_IP_PROTO`, `GENERATED_COOKIE`, `HEADER_FIELD`, `HTTP_COOKIE`, `CLIENT_IP_NO_DESTINATION`. |
| |
| * `connection_tracking_policy` - |
| (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html)) |
| Connection Tracking configuration for this BackendService. |
| This is available only for Layer 4 Internal Load Balancing and |
| Network Load Balancing. |
| Structure is [documented below](#nested_connection_tracking_policy). |
| |
| * `timeout_sec` - |
| (Optional) |
| How many seconds to wait for the backend before considering it a |
| failed request. Default is 30 seconds. Valid range is [1, 86400]. |
| |
| * `log_config` - |
| (Optional) |
| This field denotes the logging options for the load balancer traffic served by this backend service. |
| If logging is enabled, logs will be exported to Stackdriver. |
| Structure is [documented below](#nested_log_config). |
| |
| * `network` - |
| (Optional) |
| The URL of the network to which this backend service belongs. |
| This field can only be specified when the load balancing scheme is set to INTERNAL. |
| |
| * `subsetting` - |
| (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html)) |
| Subsetting configuration for this BackendService. Currently this is applicable only for Internal TCP/UDP load balancing and Internal HTTP(S) load balancing. |
| Structure is [documented below](#nested_subsetting). |
| |
| * `region` - |
| (Optional) |
| The Region in which the created backend service should reside. |
| If it is not provided, the provider region is used. |
| |
| * `project` - (Optional) The ID of the project in which the resource belongs. |
| If it is not provided, the provider project is used. |
| |
| |
| <a name="nested_backend"></a>The `backend` block supports: |
| |
| * `balancing_mode` - |
| (Optional) |
| Specifies the balancing mode for this backend. |
| See the [Backend Services Overview](https://cloud.google.com/load-balancing/docs/backend-service#balancing-mode) |
| for an explanation of load balancing modes. |
| Default value is `CONNECTION`. |
| Possible values are: `UTILIZATION`, `RATE`, `CONNECTION`. |
| |
| * `capacity_scaler` - |
| (Optional) |
| A multiplier applied to the group's maximum servicing capacity |
| (based on UTILIZATION, RATE or CONNECTION). |
| ~>**NOTE**: This field cannot be set for |
| INTERNAL region backend services (default loadBalancingScheme), |
| but is required for non-INTERNAL backend service. The total |
| capacity_scaler for all backends must be non-zero. |
| A setting of 0 means the group is completely drained, offering |
| 0% of its available Capacity. Valid range is [0.0,1.0]. |
| |
| * `description` - |
| (Optional) |
| An optional description of this resource. |
| Provide this property when you create the resource. |
| |
| * `failover` - |
| (Optional) |
| This field designates whether this is a failover backend. More |
| than one failover backend can be configured for a given RegionBackendService. |
| |
| * `group` - |
| (Required) |
| The fully-qualified URL of an Instance Group or Network Endpoint |
| Group resource. In case of instance group this defines the list |
| of instances that serve traffic. Member virtual machine |
| instances from each instance group must live in the same zone as |
| the instance group itself. No two backends in a backend service |
| are allowed to use same Instance Group resource. |
| For Network Endpoint Groups this defines list of endpoints. All |
| endpoints of Network Endpoint Group must be hosted on instances |
| located in the same zone as the Network Endpoint Group. |
| Backend services cannot mix Instance Group and |
| Network Endpoint Group backends. |
| When the `load_balancing_scheme` is INTERNAL, only instance groups |
| are supported. |
| Note that you must specify an Instance Group or Network Endpoint |
| Group resource using the fully-qualified URL, rather than a |
| partial URL. |
| |
| * `max_connections` - |
| (Optional) |
| The max number of simultaneous connections for the group. Can |
| be used with either CONNECTION or UTILIZATION balancing modes. |
| Cannot be set for INTERNAL backend services. |
| For CONNECTION mode, either maxConnections or one |
| of maxConnectionsPerInstance or maxConnectionsPerEndpoint, |
| as appropriate for group type, must be set. |
| |
| * `max_connections_per_instance` - |
| (Optional) |
| The max number of simultaneous connections that a single |
| backend instance can handle. Cannot be set for INTERNAL backend |
| services. |
| This is used to calculate the capacity of the group. |
| Can be used in either CONNECTION or UTILIZATION balancing modes. |
| For CONNECTION mode, either maxConnections or |
| maxConnectionsPerInstance must be set. |
| |
| * `max_connections_per_endpoint` - |
| (Optional) |
| The max number of simultaneous connections that a single backend |
| network endpoint can handle. Cannot be set |
| for INTERNAL backend services. |
| This is used to calculate the capacity of the group. Can be |
| used in either CONNECTION or UTILIZATION balancing modes. For |
| CONNECTION mode, either maxConnections or |
| maxConnectionsPerEndpoint must be set. |
| |
| * `max_rate` - |
| (Optional) |
| The max requests per second (RPS) of the group. Cannot be set |
| for INTERNAL backend services. |
| Can be used with either RATE or UTILIZATION balancing modes, |
| but required if RATE mode. Either maxRate or one |
| of maxRatePerInstance or maxRatePerEndpoint, as appropriate for |
| group type, must be set. |
| |
| * `max_rate_per_instance` - |
| (Optional) |
| The max requests per second (RPS) that a single backend |
| instance can handle. This is used to calculate the capacity of |
| the group. Can be used in either balancing mode. For RATE mode, |
| either maxRate or maxRatePerInstance must be set. Cannot be set |
| for INTERNAL backend services. |
| |
| * `max_rate_per_endpoint` - |
| (Optional) |
| The max requests per second (RPS) that a single backend network |
| endpoint can handle. This is used to calculate the capacity of |
| the group. Can be used in either balancing mode. For RATE mode, |
| either maxRate or maxRatePerEndpoint must be set. Cannot be set |
| for INTERNAL backend services. |
| |
| * `max_utilization` - |
| (Optional) |
| Used when balancingMode is UTILIZATION. This ratio defines the |
| CPU utilization target for the group. Valid range is [0.0, 1.0]. |
| Cannot be set for INTERNAL backend services. |
| |
| <a name="nested_circuit_breakers"></a>The `circuit_breakers` block supports: |
| |
| * `connect_timeout` - |
| (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html)) |
| The timeout for new network connections to hosts. |
| Structure is [documented below](#nested_connect_timeout). |
| |
| * `max_requests_per_connection` - |
| (Optional) |
| Maximum requests for a single backend connection. This parameter |
| is respected by both the HTTP/1.1 and HTTP/2 implementations. If |
| not specified, there is no limit. Setting this parameter to 1 |
| will effectively disable keep alive. |
| |
| * `max_connections` - |
| (Optional) |
| The maximum number of connections to the backend cluster. |
| Defaults to 1024. |
| |
| * `max_pending_requests` - |
| (Optional) |
| The maximum number of pending requests to the backend cluster. |
| Defaults to 1024. |
| |
| * `max_requests` - |
| (Optional) |
| The maximum number of parallel requests to the backend cluster. |
| Defaults to 1024. |
| |
| * `max_retries` - |
| (Optional) |
| The maximum number of parallel retries to the backend cluster. |
| Defaults to 3. |
| |
| |
| <a name="nested_connect_timeout"></a>The `connect_timeout` block supports: |
| |
| * `seconds` - |
| (Required) |
| Span of time at a resolution of a second. |
| Must be from 0 to 315,576,000,000 inclusive. |
| |
| * `nanos` - |
| (Optional) |
| Span of time that's a fraction of a second at nanosecond |
| resolution. Durations less than one second are represented |
| with a 0 seconds field and a positive nanos field. Must |
| be from 0 to 999,999,999 inclusive. |
| |
| <a name="nested_consistent_hash"></a>The `consistent_hash` block supports: |
| |
| * `http_cookie` - |
| (Optional) |
| Hash is based on HTTP Cookie. This field describes a HTTP cookie |
| that will be used as the hash key for the consistent hash load |
| balancer. If the cookie is not present, it will be generated. |
| This field is applicable if the sessionAffinity is set to HTTP_COOKIE. |
| Structure is [documented below](#nested_http_cookie). |
| |
| * `http_header_name` - |
| (Optional) |
| The hash based on the value of the specified header field. |
| This field is applicable if the sessionAffinity is set to HEADER_FIELD. |
| |
| * `minimum_ring_size` - |
| (Optional) |
| The minimum number of virtual nodes to use for the hash ring. |
| Larger ring sizes result in more granular load |
| distributions. If the number of hosts in the load balancing pool |
| is larger than the ring size, each host will be assigned a single |
| virtual node. |
| Defaults to 1024. |
| |
| |
| <a name="nested_http_cookie"></a>The `http_cookie` block supports: |
| |
| * `ttl` - |
| (Optional) |
| Lifetime of the cookie. |
| Structure is [documented below](#nested_ttl). |
| |
| * `name` - |
| (Optional) |
| Name of the cookie. |
| |
| * `path` - |
| (Optional) |
| Path to set for the cookie. |
| |
| |
| <a name="nested_ttl"></a>The `ttl` block supports: |
| |
| * `seconds` - |
| (Required) |
| Span of time at a resolution of a second. |
| Must be from 0 to 315,576,000,000 inclusive. |
| |
| * `nanos` - |
| (Optional) |
| Span of time that's a fraction of a second at nanosecond |
| resolution. Durations less than one second are represented |
| with a 0 seconds field and a positive nanos field. Must |
| be from 0 to 999,999,999 inclusive. |
| |
| <a name="nested_cdn_policy"></a>The `cdn_policy` block supports: |
| |
| * `cache_key_policy` - |
| (Optional) |
| The CacheKeyPolicy for this CdnPolicy. |
| Structure is [documented below](#nested_cache_key_policy). |
| |
| * `signed_url_cache_max_age_sec` - |
| (Optional) |
| Maximum number of seconds the response to a signed URL request |
| will be considered fresh, defaults to 1hr (3600s). After this |
| time period, the response will be revalidated before |
| being served. |
| When serving responses to signed URL requests, Cloud CDN will |
| internally behave as though all responses from this backend had a |
| "Cache-Control: public, max-age=[TTL]" header, regardless of any |
| existing Cache-Control header. The actual headers served in |
| responses will not be altered. |
| |
| * `default_ttl` - |
| (Optional) |
| Specifies the default TTL for cached content served by this origin for responses |
| that do not have an existing valid TTL (max-age or s-max-age). |
| |
| * `max_ttl` - |
| (Optional) |
| Specifies the maximum allowed TTL for cached content served by this origin. |
| |
| * `client_ttl` - |
| (Optional) |
| Specifies the maximum allowed TTL for cached content served by this origin. |
| |
| * `negative_caching` - |
| (Optional) |
| Negative caching allows per-status code TTLs to be set, in order to apply fine-grained caching for common errors or redirects. |
| |
| * `negative_caching_policy` - |
| (Optional) |
| Sets a cache TTL for the specified HTTP status code. negativeCaching must be enabled to configure negativeCachingPolicy. |
| Omitting the policy and leaving negativeCaching enabled will use Cloud CDN's default cache TTLs. |
| Structure is [documented below](#nested_negative_caching_policy). |
| |
| * `cache_mode` - |
| (Optional) |
| Specifies the cache setting for all responses from this backend. |
| The possible values are: USE_ORIGIN_HEADERS, FORCE_CACHE_ALL and CACHE_ALL_STATIC |
| Possible values are: `USE_ORIGIN_HEADERS`, `FORCE_CACHE_ALL`, `CACHE_ALL_STATIC`. |
| |
| * `serve_while_stale` - |
| (Optional) |
| Serve existing content from the cache (if available) when revalidating content with the origin, or when an error is encountered when refreshing the cache. |
| |
| |
| <a name="nested_cache_key_policy"></a>The `cache_key_policy` block supports: |
| |
| * `include_host` - |
| (Optional) |
| If true requests to different hosts will be cached separately. |
| |
| * `include_protocol` - |
| (Optional) |
| If true, http and https requests will be cached separately. |
| |
| * `include_query_string` - |
| (Optional) |
| If true, include query string parameters in the cache key |
| according to query_string_whitelist and |
| query_string_blacklist. If neither is set, the entire query |
| string will be included. |
| If false, the query string will be excluded from the cache |
| key entirely. |
| |
| * `query_string_blacklist` - |
| (Optional) |
| Names of query string parameters to exclude in cache keys. |
| All other parameters will be included. Either specify |
| query_string_whitelist or query_string_blacklist, not both. |
| '&' and '=' will be percent encoded and not treated as |
| delimiters. |
| |
| * `query_string_whitelist` - |
| (Optional) |
| Names of query string parameters to include in cache keys. |
| All other parameters will be excluded. Either specify |
| query_string_whitelist or query_string_blacklist, not both. |
| '&' and '=' will be percent encoded and not treated as |
| delimiters. |
| |
| * `include_named_cookies` - |
| (Optional) |
| Names of cookies to include in cache keys. |
| |
| <a name="nested_negative_caching_policy"></a>The `negative_caching_policy` block supports: |
| |
| * `code` - |
| (Optional) |
| The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 308, 404, 405, 410, 421, 451 and 501 |
| can be specified as values, and you cannot specify a status code more than once. |
| |
| * `ttl` - |
| (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html)) |
| The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s |
| (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL. |
| |
| <a name="nested_failover_policy"></a>The `failover_policy` block supports: |
| |
| * `disable_connection_drain_on_failover` - |
| (Optional) |
| On failover or failback, this field indicates whether connection drain |
| will be honored. Setting this to true has the following effect: connections |
| to the old active pool are not drained. Connections to the new active pool |
| use the timeout of 10 min (currently fixed). Setting to false has the |
| following effect: both old and new connections will have a drain timeout |
| of 10 min. |
| This can be set to true only if the protocol is TCP. |
| The default is false. |
| |
| * `drop_traffic_if_unhealthy` - |
| (Optional) |
| This option is used only when no healthy VMs are detected in the primary |
| and backup instance groups. When set to true, traffic is dropped. When |
| set to false, new connections are sent across all VMs in the primary group. |
| The default is false. |
| |
| * `failover_ratio` - |
| (Optional) |
| The value of the field must be in [0, 1]. If the ratio of the healthy |
| VMs in the primary backend is at or below this number, traffic arriving |
| at the load-balanced IP will be directed to the failover backend. |
| In case where 'failoverRatio' is not set or all the VMs in the backup |
| backend are unhealthy, the traffic will be directed back to the primary |
| backend in the "force" mode, where traffic will be spread to the healthy |
| VMs with the best effort, or to all VMs when no VM is healthy. |
| This field is only used with l4 load balancing. |
| |
| <a name="nested_iap"></a>The `iap` block supports: |
| |
| * `oauth2_client_id` - |
| (Required) |
| OAuth2 Client ID for IAP |
| |
| * `oauth2_client_secret` - |
| (Required) |
| OAuth2 Client Secret for IAP |
| **Note**: This property is sensitive and will not be displayed in the plan. |
| |
| * `oauth2_client_secret_sha256` - |
| (Output) |
| OAuth2 Client Secret SHA-256 for IAP |
| **Note**: This property is sensitive and will not be displayed in the plan. |
| |
| <a name="nested_outlier_detection"></a>The `outlier_detection` block supports: |
| |
| * `base_ejection_time` - |
| (Optional) |
| The base time that a host is ejected for. The real time is equal to the base |
| time multiplied by the number of times the host has been ejected. Defaults to |
| 30000ms or 30s. |
| Structure is [documented below](#nested_base_ejection_time). |
| |
| * `consecutive_errors` - |
| (Optional) |
| Number of errors before a host is ejected from the connection pool. When the |
| backend host is accessed over HTTP, a 5xx return code qualifies as an error. |
| Defaults to 5. |
| |
| * `consecutive_gateway_failure` - |
| (Optional) |
| The number of consecutive gateway failures (502, 503, 504 status or connection |
| errors that are mapped to one of those status codes) before a consecutive |
| gateway failure ejection occurs. Defaults to 5. |
| |
| * `enforcing_consecutive_errors` - |
| (Optional) |
| The percentage chance that a host will be actually ejected when an outlier |
| status is detected through consecutive 5xx. This setting can be used to disable |
| ejection or to ramp it up slowly. Defaults to 100. |
| |
| * `enforcing_consecutive_gateway_failure` - |
| (Optional) |
| The percentage chance that a host will be actually ejected when an outlier |
| status is detected through consecutive gateway failures. This setting can be |
| used to disable ejection or to ramp it up slowly. Defaults to 0. |
| |
| * `enforcing_success_rate` - |
| (Optional) |
| The percentage chance that a host will be actually ejected when an outlier |
| status is detected through success rate statistics. This setting can be used to |
| disable ejection or to ramp it up slowly. Defaults to 100. |
| |
| * `interval` - |
| (Optional) |
| Time interval between ejection sweep analysis. This can result in both new |
| ejections as well as hosts being returned to service. Defaults to 10 seconds. |
| Structure is [documented below](#nested_interval). |
| |
| * `max_ejection_percent` - |
| (Optional) |
| Maximum percentage of hosts in the load balancing pool for the backend service |
| that can be ejected. Defaults to 10%. |
| |
| * `success_rate_minimum_hosts` - |
| (Optional) |
| The number of hosts in a cluster that must have enough request volume to detect |
| success rate outliers. If the number of hosts is less than this setting, outlier |
| detection via success rate statistics is not performed for any host in the |
| cluster. Defaults to 5. |
| |
| * `success_rate_request_volume` - |
| (Optional) |
| The minimum number of total requests that must be collected in one interval (as |
| defined by the interval duration above) to include this host in success rate |
| based outlier detection. If the volume is lower than this setting, outlier |
| detection via success rate statistics is not performed for that host. Defaults |
| to 100. |
| |
| * `success_rate_stdev_factor` - |
| (Optional) |
| This factor is used to determine the ejection threshold for success rate outlier |
| ejection. The ejection threshold is the difference between the mean success |
| rate, and the product of this factor and the standard deviation of the mean |
| success rate: mean - (stdev * success_rate_stdev_factor). This factor is divided |
| by a thousand to get a double. That is, if the desired factor is 1.9, the |
| runtime value should be 1900. Defaults to 1900. |
| |
| |
| <a name="nested_base_ejection_time"></a>The `base_ejection_time` block supports: |
| |
| * `seconds` - |
| (Required) |
| Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 |
| inclusive. |
| |
| * `nanos` - |
| (Optional) |
| Span of time that's a fraction of a second at nanosecond resolution. Durations |
| less than one second are represented with a 0 `seconds` field and a positive |
| `nanos` field. Must be from 0 to 999,999,999 inclusive. |
| |
| <a name="nested_interval"></a>The `interval` block supports: |
| |
| * `seconds` - |
| (Required) |
| Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 |
| inclusive. |
| |
| * `nanos` - |
| (Optional) |
| Span of time that's a fraction of a second at nanosecond resolution. Durations |
| less than one second are represented with a 0 `seconds` field and a positive |
| `nanos` field. Must be from 0 to 999,999,999 inclusive. |
| |
| <a name="nested_connection_tracking_policy"></a>The `connection_tracking_policy` block supports: |
| |
| * `idle_timeout_sec` - |
| (Optional) |
| Specifies how long to keep a Connection Tracking entry while there is |
| no matching traffic (in seconds). |
| For L4 ILB the minimum(default) is 10 minutes and maximum is 16 hours. |
| For NLB the minimum(default) is 60 seconds and the maximum is 16 hours. |
| |
| * `tracking_mode` - |
| (Optional) |
| Specifies the key used for connection tracking. There are two options: |
| `PER_CONNECTION`: The Connection Tracking is performed as per the |
| Connection Key (default Hash Method) for the specific protocol. |
| `PER_SESSION`: The Connection Tracking is performed as per the |
| configured Session Affinity. It matches the configured Session Affinity. |
| Default value is `PER_CONNECTION`. |
| Possible values are: `PER_CONNECTION`, `PER_SESSION`. |
| |
| * `connection_persistence_on_unhealthy_backends` - |
| (Optional) |
| Specifies connection persistence when backends are unhealthy. |
| If set to `DEFAULT_FOR_PROTOCOL`, the existing connections persist on |
| unhealthy backends only for connection-oriented protocols (TCP and SCTP) |
| and only if the Tracking Mode is PER_CONNECTION (default tracking mode) |
| or the Session Affinity is configured for 5-tuple. They do not persist |
| for UDP. |
| If set to `NEVER_PERSIST`, after a backend becomes unhealthy, the existing |
| connections on the unhealthy backend are never persisted on the unhealthy |
| backend. They are always diverted to newly selected healthy backends |
| (unless all backends are unhealthy). |
| If set to `ALWAYS_PERSIST`, existing connections always persist on |
| unhealthy backends regardless of protocol and session affinity. It is |
| generally not recommended to use this mode overriding the default. |
| Default value is `DEFAULT_FOR_PROTOCOL`. |
| Possible values are: `DEFAULT_FOR_PROTOCOL`, `NEVER_PERSIST`, `ALWAYS_PERSIST`. |
| |
| * `enable_strong_affinity` - |
| (Optional) |
| Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly. |
| |
| <a name="nested_log_config"></a>The `log_config` block supports: |
| |
| * `enable` - |
| (Optional) |
| Whether to enable logging for the load balancer traffic served by this backend service. |
| |
| * `sample_rate` - |
| (Optional) |
| This field can only be specified if logging is enabled for this backend service. The value of |
| the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer |
| where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. |
| The default value is 1.0. |
| |
| <a name="nested_subsetting"></a>The `subsetting` block supports: |
| |
| * `policy` - |
| (Required) |
| The algorithm used for subsetting. |
| Possible values are: `CONSISTENT_HASH_SUBSETTING`. |
| |
| ## Attributes Reference |
| |
| In addition to the arguments listed above, the following computed attributes are exported: |
| |
| * `id` - an identifier for the resource with format `projects/{{project}}/regions/{{region}}/backendServices/{{name}}` |
| |
| * `creation_timestamp` - |
| Creation timestamp in RFC3339 text format. |
| |
| * `fingerprint` - |
| Fingerprint of this resource. A hash of the contents stored in this |
| object. This field is used in optimistic locking. |
| * `self_link` - The URI of the created resource. |
| |
| |
| ## Timeouts |
| |
| This resource provides the following |
| [Timeouts](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/retries-and-customizable-timeouts) configuration options: |
| |
| - `create` - Default is 20 minutes. |
| - `update` - Default is 20 minutes. |
| - `delete` - Default is 20 minutes. |
| |
| ## Import |
| |
| |
| RegionBackendService can be imported using any of these accepted formats: |
| |
| * `projects/{{project}}/regions/{{region}}/backendServices/{{name}}` |
| * `{{project}}/{{region}}/{{name}}` |
| * `{{region}}/{{name}}` |
| * `{{name}}` |
| |
| |
| In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import RegionBackendService using one of the formats above. For example: |
| |
| ```tf |
| import { |
| id = "projects/{{project}}/regions/{{region}}/backendServices/{{name}}" |
| to = google_compute_region_backend_service.default |
| } |
| ``` |
| |
| When using the [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import), 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](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference#user_project_override). |