Class: Google::Cloud::Compute::V1::BackendService

Inherits:
Object
  • Object
show all
Extended by:
Protobuf::MessageExts::ClassMethods
Includes:
Protobuf::MessageExts
Defined in:
proto_docs/google/cloud/compute/v1/compute.rb

Overview

Represents a Backend Service resource.

A backend service defines how Google Cloud load balancers distribute traffic. The backend service configuration contains a set of values, such as the protocol used to connect to backends, various distribution and session settings, health checks, and timeouts. These settings provide fine-grained control over how your load balancer behaves. Most of the settings have default values that allow for easy configuration if you need to get started quickly.

Backend services in Google Compute Engine can be either regionally or globally scoped.

For more information, seeBackend Services.

Defined Under Namespace

Modules: CompressionMode, ExternalManagedMigrationState, IpAddressSelectionPolicy, LoadBalancingScheme, LocalityLbPolicy, Protocol, SessionAffinity Classes: MetadatasEntry

Instance Attribute Summary collapse

Instance Attribute Details

Returns Lifetime of cookies in seconds. This setting is applicable to Application Load Balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity.

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 is two weeks (1,209,600).

Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.

Returns:

  • (::Integer)

    Lifetime of cookies in seconds. This setting is applicable to Application Load Balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity.

    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 is two weeks (1,209,600).

    Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#backends::Array<::Google::Cloud::Compute::V1::Backend>

Returns The list of backends that serve this BackendService.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#cdn_policy::Google::Cloud::Compute::V1::BackendServiceCdnPolicy

Returns Cloud CDN configuration for this BackendService. Only available for specified load balancer types.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#circuit_breakers::Google::Cloud::Compute::V1::CircuitBreakers



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#compression_mode::String

Returns Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header. Check the CompressionMode enum for the list of possible values.

Returns:

  • (::String)

    Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header. Check the CompressionMode enum for the list of possible values.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#connection_draining::Google::Cloud::Compute::V1::ConnectionDraining

Returns connectionDraining cannot be specified with haPolicy.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#connection_tracking_policy::Google::Cloud::Compute::V1::BackendServiceConnectionTrackingPolicy

Returns Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for external passthrough Network Load Balancers and internal passthrough Network Load Balancers.

connectionTrackingPolicy cannot be specified with haPolicy.

Returns:

  • (::Google::Cloud::Compute::V1::BackendServiceConnectionTrackingPolicy)

    Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for external passthrough Network Load Balancers and internal passthrough Network Load Balancers.

    connectionTrackingPolicy cannot be specified with haPolicy.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#consistent_hash::Google::Cloud::Compute::V1::ConsistentHashLoadBalancerSettings

Returns 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 is only applicable whenlocalityLbPolicy is set to MAGLEV orRING_HASH.

This field is applicable to either:

  • A regional backend service with the service protocol set to HTTP, HTTPS, HTTP2 or H2C, and load_balancing_scheme set to INTERNAL_MANAGED.
  • A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.

Returns:

  • (::Google::Cloud::Compute::V1::ConsistentHashLoadBalancerSettings)

    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 is only applicable whenlocalityLbPolicy is set to MAGLEV orRING_HASH.

    This field is applicable to either:

    • A regional backend service with the service protocol set to HTTP, HTTPS, HTTP2 or H2C, and load_balancing_scheme set to INTERNAL_MANAGED.
    • A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.


10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#creation_timestamp::String

Returns Output only. [Output Only] Creation timestamp inRFC3339 text format.

Returns:

  • (::String)

    Output only. [Output Only] Creation timestamp inRFC3339 text format.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#custom_metrics::Array<::Google::Cloud::Compute::V1::BackendServiceCustomMetric>

Returns List of custom metrics that are used for theWEIGHTED_ROUND_ROBIN locality_lb_policy.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#custom_request_headers::Array<::String>

Returns Headers that the load balancer adds to proxied requests. See Creating custom headers.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#custom_response_headers::Array<::String>

Returns Headers that the load balancer adds to proxied responses. See Creating custom headers.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#description::String

Returns An optional description of this resource. Provide this property when you create the resource.

Returns:

  • (::String)

    An optional description of this resource. Provide this property when you create the resource.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#edge_security_policy::String

Returns [Output Only] The resource URL for the edge security policy associated with this backend service.

Returns:

  • (::String)

    [Output Only] The resource URL for the edge security policy associated with this backend service.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#enable_c_d_n::Boolean

Returns If true, enables Cloud CDN for the backend service of a global external Application Load Balancer.

Returns:

  • (::Boolean)

    If true, enables Cloud CDN for the backend service of a global external Application Load Balancer.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#external_managed_migration_state::String

Returns Specifies the canary migration state. Possible values are PREPARE, TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.

To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using externalManagedMigrationTestingPercentage.

Rolling back a migration requires the states to be set in reverse order. So changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to be set to TEST_ALL_TRAFFIC at the same time. Optionally, the TEST_BY_PERCENTAGE state can be used to migrate some traffic back to EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL. Check the ExternalManagedMigrationState enum for the list of possible values.

Returns:

  • (::String)

    Specifies the canary migration state. Possible values are PREPARE, TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.

    To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using externalManagedMigrationTestingPercentage.

    Rolling back a migration requires the states to be set in reverse order. So changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to be set to TEST_ALL_TRAFFIC at the same time. Optionally, the TEST_BY_PERCENTAGE state can be used to migrate some traffic back to EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL. Check the ExternalManagedMigrationState enum for the list of possible values.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#external_managed_migration_testing_percentage::Float

Returns Determines the fraction of requests that should be processed by the Global external Application Load Balancer.

The value of this field must be in the range [0, 100].

Session affinity options will slightly affect this routing behavior, for more details, see:Session Affinity.

This value can only be set if the loadBalancingScheme in the BackendService is set to EXTERNAL (when using the classic Application Load Balancer) and the migration state is TEST_BY_PERCENTAGE.

Returns:

  • (::Float)

    Determines the fraction of requests that should be processed by the Global external Application Load Balancer.

    The value of this field must be in the range [0, 100].

    Session affinity options will slightly affect this routing behavior, for more details, see:Session Affinity.

    This value can only be set if the loadBalancingScheme in the BackendService is set to EXTERNAL (when using the classic Application Load Balancer) and the migration state is TEST_BY_PERCENTAGE.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#failover_policy::Google::Cloud::Compute::V1::BackendServiceFailoverPolicy

Returns Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: Internal passthrough Network Load Balancers and external passthrough Network Load Balancers.

failoverPolicy cannot be specified with haPolicy.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#fingerprint::String

Returns Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet.

To see the latest fingerprint, make a get() request to retrieve a BackendService.

Returns:

  • (::String)

    Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet.

    To see the latest fingerprint, make a get() request to retrieve a BackendService.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#ha_policy::Google::Cloud::Compute::V1::BackendServiceHAPolicy

Returns Configures self-managed High Availability (HA) for External and Internal Protocol Forwarding.

The backends of this regional backend service must only specify zonal network endpoint groups (NEGs) of type GCE_VM_IP.

When haPolicy is set for an Internal Passthrough Network Load Balancer, the regional backend service must set the network field. All zonal NEGs must belong to the same network. However, individual NEGs can belong to different subnetworks of that network.

When haPolicy is specified, the set of attached network endpoints across all backends comprise an High Availability domain from which one endpoint is selected as the active endpoint (the leader) that receives all traffic.

haPolicy can be added only at backend service creation time. Once set up, it cannot be deleted.

Note that haPolicy is not for load balancing, and therefore cannot be specified with sessionAffinity, connectionTrackingPolicy, and failoverPolicy.

haPolicy requires customers to be responsible for tracking backend endpoint health and electing a leader among the healthy endpoints. Therefore, haPolicy cannot be specified with healthChecks.

haPolicy can only be specified for External Passthrough Network Load Balancers and Internal Passthrough Network Load Balancers.

Returns:

  • (::Google::Cloud::Compute::V1::BackendServiceHAPolicy)

    Configures self-managed High Availability (HA) for External and Internal Protocol Forwarding.

    The backends of this regional backend service must only specify zonal network endpoint groups (NEGs) of type GCE_VM_IP.

    When haPolicy is set for an Internal Passthrough Network Load Balancer, the regional backend service must set the network field. All zonal NEGs must belong to the same network. However, individual NEGs can belong to different subnetworks of that network.

    When haPolicy is specified, the set of attached network endpoints across all backends comprise an High Availability domain from which one endpoint is selected as the active endpoint (the leader) that receives all traffic.

    haPolicy can be added only at backend service creation time. Once set up, it cannot be deleted.

    Note that haPolicy is not for load balancing, and therefore cannot be specified with sessionAffinity, connectionTrackingPolicy, and failoverPolicy.

    haPolicy requires customers to be responsible for tracking backend endpoint health and electing a leader among the healthy endpoints. Therefore, haPolicy cannot be specified with healthChecks.

    haPolicy can only be specified for External Passthrough Network Load Balancers and Internal Passthrough Network Load Balancers.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#health_checks::Array<::String>

Returns The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check unless haPolicy is specified. Backend services with internet or serverless NEG backends must not have a health check.

healthChecks[] cannot be specified with haPolicy.

Returns:

  • (::Array<::String>)

    The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check unless haPolicy is specified. Backend services with internet or serverless NEG backends must not have a health check.

    healthChecks[] cannot be specified with haPolicy.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#iap::Google::Cloud::Compute::V1::BackendServiceIAP

Returns The configurations for Identity-Aware Proxy on this resource. Not available for internal passthrough Network Load Balancers and external passthrough Network Load Balancers.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#id::Integer

Returns [Output Only] The unique identifier for the resource. This identifier is defined by the server.

Returns:

  • (::Integer)

    [Output Only] The unique identifier for the resource. This identifier is defined by the server.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#ip_address_selection_policy::String

Returns Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are:

  • IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting.
  • PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address).
  • IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends.

This field is applicable to either:

  • Advanced global external Application Load Balancer (load balancing scheme EXTERNAL_MANAGED),
  • Regional external Application Load Balancer,
  • Internal proxy Network Load Balancer (load balancing scheme INTERNAL_MANAGED),
  • Regional internal Application Load Balancer (load balancing scheme INTERNAL_MANAGED),
  • Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). Check the IpAddressSelectionPolicy enum for the list of possible values.

Returns:

  • (::String)

    Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are:

    • IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting.
    • PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address).
    • IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends.

    This field is applicable to either:

    • Advanced global external Application Load Balancer (load balancing scheme EXTERNAL_MANAGED),
    • Regional external Application Load Balancer,
    • Internal proxy Network Load Balancer (load balancing scheme INTERNAL_MANAGED),
    • Regional internal Application Load Balancer (load balancing scheme INTERNAL_MANAGED),
    • Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). Check the IpAddressSelectionPolicy enum for the list of possible values.


10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#kind::String

Returns Output only. [Output Only] Type of resource. Always compute#backendService for backend services.

Returns:

  • (::String)

    Output only. [Output Only] Type of resource. Always compute#backendService for backend services.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#load_balancing_scheme::String

Returns Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer toChoosing a load balancer. Check the LoadBalancingScheme enum for the list of possible values.

Returns:

  • (::String)

    Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer toChoosing a load balancer. Check the LoadBalancingScheme enum for the list of possible values.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#locality_lb_policies::Array<::Google::Cloud::Compute::V1::BackendServiceLocalityLoadBalancingPolicyConfig>

Returns A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field.

For an example of how to use this field, seeDefine a list of preferred policies.

Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration.

Returns:

  • (::Array<::Google::Cloud::Compute::V1::BackendServiceLocalityLoadBalancingPolicyConfig>)

    A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field.

    For an example of how to use this field, seeDefine a list of preferred policies.

    Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#locality_lb_policy::String

Returns 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. This is the default.
  • 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, see Maglev: A Fast and Reliable Software Network Load Balancer.
  • WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin Load Balancing using weights computed from Backend reported Custom Metrics. If set, the Backend Service responses are expected to contain non-standard HTTP response header field Endpoint-Load-Metrics. The reported metrics to use for computing the weights are specified via thecustomMetrics field.

This field is applicable to either: - A regional backend service with the service protocol set to HTTP, HTTPS, HTTP2 or H2C, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED.

If sessionAffinity is not configured—that is, if session affinity remains at the default value of NONE—then the default value for localityLbPolicy is ROUND_ROBIN. If session affinity is set to a value other than NONE, then the default value for localityLbPolicy isMAGLEV.

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 validateForProxyless field set to true.

localityLbPolicy cannot be specified with haPolicy. Check the LocalityLbPolicy enum for the list of possible values.

Returns:

  • (::String)

    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. This is the default.
    • 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, see Maglev: A Fast and Reliable Software Network Load Balancer.
    • WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin Load Balancing using weights computed from Backend reported Custom Metrics. If set, the Backend Service responses are expected to contain non-standard HTTP response header field Endpoint-Load-Metrics. The reported metrics to use for computing the weights are specified via thecustomMetrics field.

    This field is applicable to either: - A regional backend service with the service protocol set to HTTP, HTTPS, HTTP2 or H2C, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED.

    If sessionAffinity is not configured—that is, if session affinity remains at the default value of NONE—then the default value for localityLbPolicy is ROUND_ROBIN. If session affinity is set to a value other than NONE, then the default value for localityLbPolicy isMAGLEV.

    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 validateForProxyless field set to true.

    localityLbPolicy cannot be specified with haPolicy. Check the LocalityLbPolicy enum for the list of possible values.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#log_config::Google::Cloud::Compute::V1::BackendServiceLogConfig

Returns 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.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#max_stream_duration::Google::Cloud::Compute::V1::Duration

Returns Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.

If not specified, there will be no timeout limit, i.e. the maximum duration is infinite.

This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service.

This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED.

Returns:

  • (::Google::Cloud::Compute::V1::Duration)

    Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed.

    If not specified, there will be no timeout limit, i.e. the maximum duration is infinite.

    This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service.

    This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#metadatas::Google::Protobuf::Map{::String => ::String}

Returns Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH.

Returns:

  • (::Google::Protobuf::Map{::String => ::String})

    Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#name::String

Returns Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply withRFC1035. 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.

Returns:

  • (::String)

    Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply withRFC1035. 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.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#network::String

Returns The URL of the network to which this backend service belongs.

This field must be set for Internal Passthrough Network Load Balancers when the haPolicy is enabled, and for External Passthrough Network Load Balancers when the haPolicy fastIpMove is enabled.

This field can only be specified when the load balancing scheme is set toINTERNAL, or when the load balancing scheme is set toEXTERNAL and haPolicy fastIpMove is enabled.

Returns:

  • (::String)

    The URL of the network to which this backend service belongs.

    This field must be set for Internal Passthrough Network Load Balancers when the haPolicy is enabled, and for External Passthrough Network Load Balancers when the haPolicy fastIpMove is enabled.

    This field can only be specified when the load balancing scheme is set toINTERNAL, or when the load balancing scheme is set toEXTERNAL and haPolicy fastIpMove is enabled.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#network_pass_through_lb_traffic_policy::Google::Cloud::Compute::V1::BackendServiceNetworkPassThroughLbTrafficPolicy

Returns Configures traffic steering properties of internal passthrough Network Load Balancers.

networkPassThroughLbTrafficPolicy cannot be specified with haPolicy.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#orchestration_info::Google::Cloud::Compute::V1::BackendServiceOrchestrationInfo

Returns Information about the resource or system that manages the backend service.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#outlier_detection::Google::Cloud::Compute::V1::OutlierDetection

Returns Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled.

Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint.

Applicable backend endpoints can be:

  • VM instances in an Instance Group
  • Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT)
  • Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT)
  • Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services
  • Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect

Applicable backend service types can be:

  • A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED.
  • A regional backend service with the service protocol set to HTTP, HTTPS, HTTP2 or H2C, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs.

Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.

Returns:

  • (::Google::Cloud::Compute::V1::OutlierDetection)

    Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled.

    Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint.

    Applicable backend endpoints can be:

    • VM instances in an Instance Group
    • Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT)
    • Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT)
    • Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services
    • Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect

    Applicable backend service types can be:

    • A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED.
    • A regional backend service with the service protocol set to HTTP, HTTPS, HTTP2 or H2C, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs.

    Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#params::Google::Cloud::Compute::V1::BackendServiceParams

Returns Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#port::Integer

Returns Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For internal passthrough Network Load Balancers and external passthrough Network Load Balancers, omit port.

Returns:

  • (::Integer)

    Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For internal passthrough Network Load Balancers and external passthrough Network Load Balancers, omit port.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#port_name::String

Returns A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be defined on each backend instance group. This parameter has no meaning if the backends are NEGs. For internal passthrough Network Load Balancers and external passthrough Network Load Balancers, omit port_name.

Returns:

  • (::String)

    A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be defined on each backend instance group. This parameter has no meaning if the backends are NEGs. For internal passthrough Network Load Balancers and external passthrough Network Load Balancers, omit port_name.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#protocol::String

Returns The protocol this BackendService uses to communicate with backends.

Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information.

Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy. Check the Protocol enum for the list of possible values.

Returns:

  • (::String)

    The protocol this BackendService uses to communicate with backends.

    Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information.

    Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy. Check the Protocol enum for the list of possible values.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#region::String

Returns Output only. [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.

Returns:

  • (::String)

    Output only. [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#security_policy::String

Returns [Output Only] The resource URL for the security policy associated with this backend service.

Returns:

  • (::String)

    [Output Only] The resource URL for the security policy associated with this backend service.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#security_settings::Google::Cloud::Compute::V1::SecuritySettings

Returns This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.

Returns:

  • (::Google::Cloud::Compute::V1::SecuritySettings)

    This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

Returns [Output Only] Server-defined URL for the resource.

Returns:

  • (::String)

    [Output Only] Server-defined URL for the resource.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#service_bindings::Array<::String>

Returns URLs of networkservices.ServiceBinding resources.

Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty.

Returns:

  • (::Array<::String>)

    URLs of networkservices.ServiceBinding resources.

    Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#service_lb_policy::String

Returns URL to networkservices.ServiceLbPolicy resource.

Can only be set if load balancing scheme is EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global.

Returns:

  • (::String)

    URL to networkservices.ServiceLbPolicy resource.

    Can only be set if load balancing scheme is EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#session_affinity::String

Returns Type of session affinity to use. The default is NONE.

Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.

For more details, see: Session Affinity.

sessionAffinity cannot be specified with haPolicy. Check the SessionAffinity enum for the list of possible values.

Returns:

  • (::String)

    Type of session affinity to use. The default is NONE.

    Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.

    For more details, see: Session Affinity.

    sessionAffinity cannot be specified with haPolicy. Check the SessionAffinity enum for the list of possible values.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

Returns Describes the HTTP cookie used for stateful session affinity. This field is applicable and required if the sessionAffinity is set toSTRONG_COOKIE_AFFINITY.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#subsetting::Google::Cloud::Compute::V1::Subsetting

Returns subsetting cannot be specified with haPolicy.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#timeout_sec::Integer

Returns The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds.

This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service.

Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration.

Returns:

  • (::Integer)

    The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds.

    This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service.

    Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration.



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#tls_settings::Google::Cloud::Compute::V1::BackendServiceTlsSettings

Returns Configuration for Backend Authenticated TLS and mTLS. May only be specified when the backend protocol is SSL, HTTPS or HTTP2.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end

#used_by::Array<::Google::Cloud::Compute::V1::BackendServiceUsedBy>

Returns Output only. [Output Only] List of resources referencing given backend service.

Returns:



10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
# File 'proto_docs/google/cloud/compute/v1/compute.rb', line 10713

class BackendService
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # @!attribute [rw] key
  #   @return [::String]
  # @!attribute [rw] value
  #   @return [::String]
  class MetadatasEntry
    include ::Google::Protobuf::MessageExts
    extend ::Google::Protobuf::MessageExts::ClassMethods
  end

  # Compress text responses using Brotli or gzip compression, based on
  # the client's Accept-Encoding header.
  module CompressionMode
    # A value indicating that the enum field is not set.
    UNDEFINED_COMPRESSION_MODE = 0

    # Automatically uses the best compression based on the Accept-Encoding
    # header sent by the client.
    AUTOMATIC = 165_298_699

    # Disables compression. Existing compressed responses cached by
    # Cloud CDN will not be served to clients.
    DISABLED = 516_696_700
  end

  # Specifies the canary migration state. Possible values are PREPARE,
  # TEST_BY_PERCENTAGE, and TEST_ALL_TRAFFIC.
  #
  # To begin the migration from EXTERNAL to EXTERNAL_MANAGED, the state must be
  # changed to PREPARE. The state must be changed to TEST_ALL_TRAFFIC before
  # the loadBalancingScheme can be changed to EXTERNAL_MANAGED. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate traffic by percentage using
  # externalManagedMigrationTestingPercentage.
  #
  # Rolling back a migration requires the states to be set in reverse order. So
  # changing the scheme from EXTERNAL_MANAGED to EXTERNAL requires the state to
  # be set to TEST_ALL_TRAFFIC at the same time. Optionally, the
  # TEST_BY_PERCENTAGE state can be used to migrate some traffic back to
  # EXTERNAL or PREPARE can be used to migrate all traffic back to EXTERNAL.
  module ExternalManagedMigrationState
    # A value indicating that the enum field is not set.
    UNDEFINED_EXTERNAL_MANAGED_MIGRATION_STATE = 0

    PREPARE = 399_612_135

    TEST_ALL_TRAFFIC = 79_728_882

    TEST_BY_PERCENTAGE = 513_738_389
  end

  # Specifies a preference for traffic sent from the proxy to the backend (or
  # from the client to the backend for proxyless gRPC).
  # The possible values are:
  #
  #    - IPV4_ONLY: Only send IPv4 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv4
  #    health checks are used to check the health of the backends. This is the
  #    default setting.
  #    - PREFER_IPV6: Prioritize the connection to the endpoint's
  #    IPv6 address over its IPv4 address (provided there is a healthy IPv6
  #    address).
  #    - IPV6_ONLY: Only send IPv6 traffic to the backends of the
  #    backend service (Instance Group, Managed Instance Group, Network Endpoint
  #    Group), regardless of traffic from the client to the proxy. Only IPv6
  #    health checks are used to check the health of the backends.
  #
  #
  #
  # This field is applicable to either:
  #
  #    -  Advanced global external Application Load Balancer (load balancing
  #    scheme EXTERNAL_MANAGED),
  #    -  Regional external Application Load
  #    Balancer,
  #    -  Internal proxy Network Load Balancer (load balancing
  #    scheme INTERNAL_MANAGED),
  #    -  Regional internal Application Load
  #    Balancer (load balancing scheme INTERNAL_MANAGED),
  #    -  Traffic
  #    Director with Envoy proxies and proxyless gRPC (load balancing scheme
  #    INTERNAL_SELF_MANAGED).
  module IpAddressSelectionPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_IP_ADDRESS_SELECTION_POLICY = 0

    # Only send IPv4 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy.
    # Only IPv4 health-checks are used to check the health of the backends.
    # This is the default setting.
    IPV4_ONLY = 22_373_798

    # Only send IPv6 traffic to the backends of the Backend Service
    # (Instance Group, Managed Instance Group, Network Endpoint Group)
    # regardless of traffic from the client to the proxy. Only IPv6
    # health-checks are used to check the health of the backends.
    IPV6_ONLY = 79_632_100

    # Unspecified IP address selection policy.
    IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED = 36_210_144

    # Prioritize the connection to the endpoints IPv6 address
    # over its IPv4 address (provided there is a healthy IPv6 address).
    PREFER_IPV6 = 408_601_302
  end

  # Specifies the load balancer type. A backend service
  # created for one type of load balancer cannot be used with another.
  # For more information, refer toChoosing
  # a load balancer.
  module LoadBalancingScheme
    # A value indicating that the enum field is not set.
    UNDEFINED_LOAD_BALANCING_SCHEME = 0

    # Signifies that this will be used for classic Application Load Balancers,
    # global external proxy Network Load Balancers,
    # or external passthrough Network Load Balancers.
    EXTERNAL = 35_607_499

    # Signifies that this will be used for global external Application Load
    # Balancers, regional external Application Load Balancers, or regional
    # external proxy Network Load Balancers.
    EXTERNAL_MANAGED = 512_006_923

    # Signifies that this will be used for internal passthrough Network Load
    # Balancers.
    INTERNAL = 279_295_677

    # Signifies that this will be used for internal Application Load Balancers.
    INTERNAL_MANAGED = 37_350_397

    # Signifies that this will be used by Traffic Director.
    INTERNAL_SELF_MANAGED = 236_211_150

    INVALID_LOAD_BALANCING_SCHEME = 275_352_060
  end

  # 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. This is the default.
  #    - 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, see Maglev:
  #    A Fast and Reliable Software Network Load Balancer.
  #    - WEIGHTED_ROUND_ROBIN: Per-endpoint Weighted Round Robin
  #    Load Balancing using weights computed from Backend reported Custom Metrics.
  #    If set, the Backend Service responses are expected to contain non-standard
  #    HTTP response header field Endpoint-Load-Metrics. The reported
  #    metrics to use for computing the weights are specified via thecustomMetrics field.
  #
  #    This field is applicable to either:
  #       - A regional backend service with the service protocol set to HTTP,
  #       HTTPS, HTTP2 or H2C, and load_balancing_scheme set to
  #       INTERNAL_MANAGED.
  #       - A global backend service with the
  #       load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or
  #       EXTERNAL_MANAGED.
  #
  #
  #    If sessionAffinity is not configured—that is, if session
  #    affinity remains at the default value of NONE—then the
  #    default value for localityLbPolicy
  #    is ROUND_ROBIN. If session affinity is set to a value other
  #    than NONE,
  #    then the default value for localityLbPolicy isMAGLEV.
  #
  #    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 validateForProxyless field set to true.
  #
  #    localityLbPolicy cannot be specified with haPolicy.
  module LocalityLbPolicy
    # A value indicating that the enum field is not set.
    UNDEFINED_LOCALITY_LB_POLICY = 0

    INVALID_LB_POLICY = 323_318_707

    # An O(1) algorithm which selects two random healthy hosts and
    # picks the host which has fewer active requests.
    LEAST_REQUEST = 46_604_921

    # This algorithm implements consistent hashing to backends. Maglev can be
    # 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, seeMaglev:
    # A Fast and Reliable Software Network Load Balancer.
    MAGLEV = 119_180_266

    # 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.
    ORIGINAL_DESTINATION = 166_297_216

    # The load balancer selects a random healthy host.
    RANDOM = 262_527_171

    # 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.
    RING_HASH = 432_795_069

    # This is a simple policy in which each healthy backend is selected
    # in round robin order. This is the default.
    ROUND_ROBIN = 153_895_801

    # Per-instance weighted Load Balancing via health check reported weights.
    # In internal passthrough network load balancing, it is weighted
    # rendezvous hashing.
    # This option is only supported in internal passthrough network load
    # balancing.
    WEIGHTED_GCP_RENDEZVOUS = 82_501_640

    # 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 weighted 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 option is only supported in Network Load Balancing.
    WEIGHTED_MAGLEV = 254_930_962

    # Per-endpoint weighted round-robin Load Balancing using weights computed
    # from Backend reported Custom Metrics. If set, the Backend Service
    # responses are expected to contain non-standard HTTP response header field
    # Endpoint-Load-Metrics. The reported metrics
    # to use for computing the weights are specified via the
    # customMetrics fields.
    WEIGHTED_ROUND_ROBIN = 5_584_977
  end

  # The protocol this BackendService uses to communicate
  # with backends.
  #
  # Possible values are HTTP, HTTPS, HTTP2, H2C, TCP, SSL, UDP or GRPC.
  # depending on the chosen load balancer or Traffic Director configuration.
  # Refer to the documentation for the load balancers or for Traffic Director
  # for more information.
  #
  # Must be set to GRPC when the backend service is referenced by a URL map
  # that is bound to target gRPC proxy.
  module Protocol
    # A value indicating that the enum field is not set.
    UNDEFINED_PROTOCOL = 0

    # gRPC (available for Traffic Director).
    GRPC = 2_196_510

    # HTTP2 over cleartext
    H2C = 70_809

    HTTP = 2_228_360

    # HTTP/2 with SSL.
    HTTP2 = 69_079_210

    HTTPS = 69_079_243

    # TCP proxying with SSL.
    SSL = 82_412

    # TCP proxying or TCP pass-through.
    TCP = 82_881

    # UDP.
    UDP = 83_873

    # If a Backend Service has UNSPECIFIED as its protocol, it can be used with
    # any L3/L4 Forwarding Rules.
    UNSPECIFIED = 526_786_327
  end

  # Type of session affinity to use. The default is NONE.
  #
  # Only NONE and HEADER_FIELD are supported
  # when the backend service is referenced by a URL map that is bound to
  # target gRPC proxy that has validateForProxyless field set to true.
  #
  # For more details, see:
  # [Session
  # Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).
  #
  # sessionAffinity cannot be specified with haPolicy.
  module SessionAffinity
    # A value indicating that the enum field is not set.
    UNDEFINED_SESSION_AFFINITY = 0

    # 2-tuple hash on packet's source and destination IP addresses. Connections
    # from the same source IP address to the same destination IP address will be
    # served by the same backend VM while that VM remains healthy.
    CLIENT_IP = 345_665_051

    # 1-tuple hash only on packet's source IP address. Connections from the
    # same source IP address will be served by the same backend VM while that VM
    # remains healthy. This option can only be used for Internal TCP/UDP
    # Load Balancing.
    CLIENT_IP_NO_DESTINATION = 106_122_516

    # 5-tuple hash on packet's source and destination IP addresses, IP protocol,
    # and source and destination ports. Connections for the same IP protocol
    # from the same source IP address and port to the same destination IP address
    # and port will be served by the same backend VM while that VM remains
    # healthy. This option cannot be used for HTTP(S) load balancing.
    CLIENT_IP_PORT_PROTO = 221_722_926

    # 3-tuple hash on packet's source and destination IP addresses, and IP
    # protocol. Connections for the same IP protocol from the same source IP
    # address to the same destination IP address will be served by the same
    # backend VM while that VM remains healthy. This option cannot be used for
    # HTTP(S) load balancing.
    CLIENT_IP_PROTO = 25_322_148

    # Hash based on a cookie generated by the L7 loadbalancer.
    # Only valid for HTTP(S) load balancing.
    GENERATED_COOKIE = 370_321_204

    # The hash is based on a user specified header field.
    HEADER_FIELD = 200_737_960

    # The hash is based on a user provided cookie.
    HTTP_COOKIE = 494_981_627

    # No session affinity. Connections from the same client IP may go
    # to any instance in the pool.
    NONE = 2_402_104

    # Strong cookie-based affinity. Connections bearing the same cookie will be
    # served by the same backend VM while that VM remains healthy, as long as the
    # cookie has not expired.
    STRONG_COOKIE_AFFINITY = 438_628_091
  end
end