Switch between a target instance and a backend service
Stay organized with collections
Save and categorize content based on your preferences.
This page describes how to switch the target of a forwarding rule between a
target instance and a backend service.
External protocol forwarding
To switch an external forwarding rule's target from a target instance to a
backend service (or the other way around), you need to delete and re-create
the forwarding rule with the new target. This method requires a static IP
address so that you can use the same address with the new forwarding rule.
Deleting and re-creating the forwarding rule is the only way to switch between
external protocol forwarding and a backend service-based external passthrough Network Load Balancer.
Internal protocol forwarding
There are two ways to switch between internal protocol forwarding and an
internal passthrough Network Load Balancer:
You can switch between a target instance and a backend service by updating the
forwarding rule with the gcloud compute forwarding-rules set-target command
as described in
Change the target of an internal forwarding rule.
When switching between
internal protocol forwarding and an internal passthrough Network Load Balancer, you don't need
to delete and re-create the forwarding rule. The forwarding rule continues to
use the same internal IP address (whether static or ephemeral).
You can also switch between a target instance and a backend service by deleting
and re-creating the forwarding rule. However, this method requires a static
IPv4 address in order to use the same address with the new forwarding rule.
You can't use this method for IPv6 addresses because reserving an IPv6 address
is not supported.
A target instance does not specify any protocol—it inherits the protocols and
ports of the forwarding rule. Therefore, when switching a forwarding rule to
reference a backend service, you must ensure that the IP protocol of the
forwarding rule (either TCP or UDP) matches the protocol of the backend
service (either TCP or UDP).
The following diagram shows an example that uses internal protocol forwarding.
Switch between a target instance and a backend service.
Change the target of an internal forwarding rule
To change a forwarding rule from pointing to a target instance to pointing to a
regional backend service, use the following command:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[],[],null,["# Switch between a target instance and a backend service\n\nThis page describes how to switch the target of a forwarding rule between a\ntarget instance and a backend service.\n\nExternal protocol forwarding\n----------------------------\n\nTo switch an external forwarding rule's target from a target instance to a\nbackend service (or the other way around), you need to delete and re-create\nthe forwarding rule with the new target. This method requires a static IP\naddress so that you can use the same address with the new forwarding rule.\n\nDeleting and re-creating the forwarding rule is the only way to switch between\nexternal protocol forwarding and a backend service-based external passthrough Network Load Balancer.\n\nInternal protocol forwarding\n----------------------------\n\nThere are two ways to switch between internal protocol forwarding and an\ninternal passthrough Network Load Balancer:\n\n- You can switch between a target instance and a backend service by updating the\n forwarding rule with the `gcloud compute forwarding-rules set-target` command\n as described in\n [Change the target of an internal forwarding rule](#int-change-target).\n When switching between\n internal protocol forwarding and an internal passthrough Network Load Balancer, you don't need\n to delete and re-create the forwarding rule. The forwarding rule continues to\n use the same internal IP address (whether static or ephemeral).\n\n- You can also switch between a target instance and a backend service by deleting\n and re-creating the forwarding rule. However, this method requires a static\n IPv4 address in order to use the same address with the new forwarding rule.\n You can't use this method for IPv6 addresses because reserving an IPv6 address\n is not supported.\n\nA target instance does not specify any protocol---it inherits the protocols and\nports of the forwarding rule. Therefore, when switching a forwarding rule to\nreference a backend service, you must ensure that the IP protocol of the\nforwarding rule (either TCP or UDP) matches the protocol of the backend\nservice (either TCP or UDP).\n\nThe following diagram shows an example that uses internal protocol forwarding.\n[](/static/load-balancing/images/pf-int-switch-target.svg) Switch between a target instance and a backend service.\n\n### Change the target of an internal forwarding rule\n\nTo change a forwarding rule from pointing to a target instance to pointing to a\nregional backend service, use the following command: \n\n```\ngcloud compute forwarding-rules set-target FORWARDING_RULE \\\n --backend-service=BACKEND_SERVICE \\\n --region=REGION\n```\n\nTo transition back to a target instance, use the following command: \n\n```\ngcloud compute forwarding-rules set-target FORWARDING_RULE \\\n --target-instance=TARGET_INSTANCE \\\n --target-instance-zone=ZONE\n```"]]