You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
:::tip Namespaces with High Availability features and private connectivity
11
+
A Namespace with High Availability features spans two regions, and the endpoint your Workers and Clients connect through determines how they behave before, during, and after a failover.
12
+
This page covers:
12
13
13
-
Proper networking configuration is required for failover to be transparent to clients and Workers when using AWS PrivateLink or GCP Private Service Connect.
14
+
- How to choose between the Namespace Endpoint and a Regional Endpoint for a Namespace with High Availability features.
15
+
- How to configure PrivateLink so that failover remains transparent to Workers on private networks.
14
16
15
-
This page covers single-cloud HA (both replicas on AWS, or both on GCP) and multi-cloud HA (one replica on AWS, one on GCP).
17
+
## How to choose an endpoint for a Namespace with High Availability features
18
+
19
+
Temporal Cloud exposes two kinds of gRPC endpoints for a Namespace.
20
+
See [How to access a Namespace](/cloud/namespaces#access-namespaces) for the general definitions; this section focuses on how each behaves with replication and failover.
21
+
22
+
### Namespace Endpoint (recommended)
23
+
24
+
Format: `<namespace>.<account>.tmprl.cloud:7233`
25
+
26
+
The Namespace Endpoint always connects to whichever region is currently active.
27
+
Under the hood, it is a CNAME that points at the active region's Regional Endpoint.
28
+
When Temporal Cloud fails the Namespace over, it updates the CNAME to point at the new active region.
29
+
The DNS <ahref="https://en.wikipedia.org/wiki/Time_to_live">TTL</a> is 15 seconds, so Clients converge within about 30 seconds with no configuration change on your side.
30
+
31
+
Use the Namespace Endpoint unless you have a specific reason to pin traffic to a region.
32
+
33
+
### Regional Endpoint
34
+
35
+
Format: `<cloud>-<region>.region.tmprl.cloud:7233` (for example, `aws-us-west-2.region.tmprl.cloud` or `gcp-us-central1.region.tmprl.cloud`).
36
+
See [regions](/cloud/regions) for the full list.
37
+
38
+
A Regional Endpoint is shared across every Namespace that is active or replicated in that region.
39
+
Unlike the Namespace Endpoint, a Regional Endpoint stays pinned to the region in its name — if that region holds the passive replica of your Namespace, the Regional Endpoint connects to the passive replica.
40
+
41
+
Use a Regional Endpoint only when you need explicit control over which replica a Client or Worker reaches.
42
+
43
+
Trade-offs to consider:
44
+
45
+
-**Faster recovery.** A Worker connecting through a Regional Endpoint skips the DNS step that Clients on the Namespace Endpoint wait for during a failover. This removes the ~30-second DNS convergence window from the recovery path, which is useful for Workloads that must minimize [Recovery Time](/cloud/rpo-rto) at all costs.
46
+
-**You are responsible for regional coverage.** A Worker using the Regional Endpoint of a region cannot reach the Namespace if that region is in an outage. To stay available through a failover, you must run Workers that use the **replica** region's Regional Endpoint — Workers pointed only at the outage region's Regional Endpoint will not reconnect automatically.
47
+
48
+
When authenticating with mTLS, set the Client's `server_name` / `serverNameOverride` config equal to the Namespace Endpoint.
49
+
This overrides the SNI that the Client will expect during the TLS Handshake with Temporal Cloud.
50
+
The Regional Endpoint forwards the request to your Namespace, so the Client must expect the Namespace's certificate during the TLS handshake.
51
+
52
+
For example, in Typescript, the Client's config would be set like this:
In AWS, use a Route 53 private hosted zone for `region.tmprl.cloud` to override resolution per region:
68
136
@@ -114,24 +182,18 @@ If you run Workers on Alpine and use multi-cloud HA, either:
114
182
115
183
:::
116
184
117
-
## Test failover before you depend on it
118
-
119
-
Failover is the only thing High Availability features exist to do — and DNS, cross-region or cross-cloud reachability, and Connectivity Rule coverage are exactly the kinds of configuration that look correct on paper and break under failover. Test it in a non-production Namespace first.
185
+
To set up the DNS override, configure specific regions to target the internal VPC Endpoint IP addresses.
186
+
For example, you might set `aws-us-west-1.region.tmprl.cloud` to target `192.168.1.2`.
187
+
In AWS, this can be done using a Route 53 private hosted zone for `region.tmprl.cloud`.
188
+
Link that private zone to the VPCs you use for Workers.
120
189
121
190
A reasonable validation plan:
122
191
123
-
1. Set up the HA Namespace and the private connectivity for both regions, including all DNS overrides.
124
-
2. Run Workers continuously in **both** regions (or arrange cross-region connectivity).
125
-
3. Trigger a manual failover from the Web UI or `tcld` and verify:
126
-
- DNS for `<ns>.<account>.tmprl.cloud` resolves to the new region within ~30 seconds.
127
-
- Workers in both regions are picking up tasks.
128
-
- SDK clients connect successfully (no `Name resolution failed`, `connection reset by peer`, or `context deadline exceeded` errors).
129
-
4. Trigger a failback to the original region and verify the same.
130
-
5. For multi-cloud HA, repeat with each cloud as the active replica, including from base images (Alpine, distroless) you actually use in production.
131
-
132
-
If a real failover finds a configuration gap that wasn't tested, recovery typically requires changes on the client side that are hard to make under pressure.
192
+
Consider how you'll configure Workers for this setup.
193
+
You can either have Workers run in both regions continuously or establish connectivity between regions using Transit Gateway or VPC Peering.
194
+
Either approach ensures Workers can access the newly activated region once failover occurs.
133
195
134
-
## Available regions, PrivateLink endpoints, and DNS record overrides
196
+
###Available regions, PrivateLink endpoints, and DNS record overrides
Copy file name to clipboardExpand all lines: docs/develop/go/best-practices/data-handling/external-storage.mdx
+5-2Lines changed: 5 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,8 +13,8 @@ description: Offload large payloads to external storage using the claim check pa
13
13
14
14
:::info Release, stability, and dependency info
15
15
16
-
External Storage is in [Pre-Release](/evaluate/development-production-features/release-stages#pre-release). APIs and
17
-
configuration may change before the stable release. Join the
16
+
External Storage is in [Public Preview](/evaluate/development-production-features/release-stages#public-preview). APIs and
17
+
configuration may change before General Availability. Join the
18
18
[#large-payloads Slack channel](https://temporalio.slack.com/archives/C09VA2DE15Y) to provide feedback or ask for help.
19
19
20
20
:::
@@ -34,6 +34,7 @@ The Go SDK includes an S3 storage driver. Follow these steps to set it up:
34
34
35
35
- An Amazon S3 bucket that you have read and write access to. Refer to [lifecycle management](/external-storage#lifecycle)
36
36
to ensure that your payloads remain available for the entire lifetime of the Workflow.
37
+
- The S3 driver has been validated with single-region buckets. Multi-region configurations such as AWS Multi-Region Access Points (MRAP) have not been validated.
37
38
- Install the S3 driver module and its dependencies: `go get go.temporal.io/sdk/contrib/aws/s3driver go.temporal.io/sdk/contrib/aws/s3driver/awssdkv2 github.com/aws/aws-sdk-go-v2/config github.com/aws/aws-sdk-go-v2/service/s3`
38
39
39
40
### Procedure
@@ -87,6 +88,8 @@ w := worker.New(c, "my-task-queue", worker.Options{})
0 commit comments