Skip to content
This repository was archived by the owner on Nov 12, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/deploy/deploy.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ This page describes how to deploy Restate and Restate services.
The Restate Server is a single binary that contains everything you need to host an environment. See the [Installation page](/develop/local_dev) for various ways of obtaining it.

There are a few options for deploying the Restate Server:
- [Cluster deployment](/deploy/server/cluster/deployment)
- [Cluster deployment](/deploy/server/cluster)
- [Self-host a single-node Restate server on AWS](/deploy/server/self-hosted)
- [Self-host a single-pod Restate server on Kubernetes](/deploy/server/kubernetes)
- [Use Restate Cloud](/deploy/server/cloud)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Cluster Deployment"
title: "Cluster"
sidebar_position: 1
description: "Learn how to deploy a distributed Restate cluster."
---
Expand Down Expand Up @@ -92,38 +92,12 @@ Every Restate node that runs the `worker` role will also run the ingress server

For those nodes that run on the same machine, make sure that the ports do not conflict.

## Controlling Clusters

Restate includes a command line utility tool to connect to and control running Restate servers called [`restatectl`](/references/restatectl#getting-restatectl).
This tool is specifically designed for system operators to manage Restate servers and is particularly useful in a cluster environment.
It is distinct from the application developer-focused `restate` CLI tool, which is used to manage service deployments and invocations.

### Using `restatectl`
The `restatectl` tool communicates with Restate at the advertised address specified in the [server configuration](/operate/configuration/server) - by default TCP port 5122. To get an overview of a running server or cluster, use the `status` command:

```shell
restatectl status --addresses http://localhost:5122/
```

<details className={"grey-details"}>
<summary>Sample output</summary>

```
Node Configuration (v3)
NODE GEN NAME ADDRESS ROLES
N1 2 n1 http://127.0.0.1:5122/ admin | log-server | metadata-server | worker

Log Configuration (v2)
Default Provider Config: Local
L-ID FROM-LSN KIND LOGLET-ID REPLICATION SEQUENCER NODESET
0 1 Local N/A N/A N/A N/A

Alive partition processors (nodes config v3, partition table v2)
P-ID NODE MODE STATUS LEADER EPOCH SEQUENCER APPLIED-LSN ARCHIVED-LSN LAST-UPDATE
0 N1:2 Leader Active N1:2 e1 1 - 615 ms ago
```
<Admonition type="note" title="Growing the cluster in the future">
If you plan to scale your cluster over time, we strongly recommend enabling snapshotting.
Without it, newly added nodes may not be fully utilized by the system.
See the [snapshotting documentation](/operate/snapshots) for more details.
</Admonition>

</details>

## Cluster provisioning

Expand Down
7 changes: 0 additions & 7 deletions docs/deploy/server/cluster/_category_.json

This file was deleted.

104 changes: 0 additions & 104 deletions docs/deploy/server/cluster/growing-cluster.mdx

This file was deleted.

2 changes: 1 addition & 1 deletion docs/get_started/tour.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -1509,7 +1509,7 @@ The code would fast-forward to the point where it crashed, and continue executin
You see the retries taking place. And you see that only the first time the call to the `TicketObject` was made.
The other times, the call was skipped and the journaled response was replayed.

[By default](/operate/configuration/server#default-configuration), Restate will keep retrying failed invocations until they succeed.
[By default](/references/server_config#default-configuration), Restate will keep retrying failed invocations until they succeed.
If you want to cancel an invocation in a retry loop, you can use the CLI to do this. Let's have a look at that next.

<Admonition type={"note"} title={"Error handling in Restate"}>
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/cluster.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ By default, partition state is replicated to all workers (though each partition
The `replicated` metadata cluster consists of all nodes since they all run the `metadata-server` role.
Since the `replicated` metadata cluster requires a majority quorum to operate, the cluster can tolerate 1 node failure without becoming unavailable.

Take a look at the [cluster deployment documentation](/deploy/server/cluster/deployment) for more information on how to configure and deploy a distributed Restate cluster.
Take a look at the [cluster deployment documentation](/deploy/server/cluster) for more information on how to configure and deploy a distributed Restate cluster.
In this example we also deployed a Minio server to host the cluster snapshots bucket. Visit [Snapshots](/operate/snapshots) to learn more about whis is strongly recommended for all clusters.
</Step>

Expand Down
7 changes: 3 additions & 4 deletions docs/guides/local-to-replicated.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@ pagination_next: null
pagination_prev: null
---

import Admonition from '@theme/Admonition';
import {Step} from "../../src/components/Stepper";

# Migrating a single-node to a multi-node deployment

By default when starting a Restate server ({'<='} v1.2), it uses the local loglet and local metadata server.
By default, when starting a Restate server ({'<='} v1.2), it uses the local loglet and local metadata server.
The local loglet and local metadata server are suitable for development and single-node deployments.
However, for production deployments, it is recommended to use the replicated loglet and replicated metadata server to ensure high availability and durability.
This guide shows how to migrate an existing single-node deployment to use the replicated loglet and replicated metadata server without losing any data.
Expand Down Expand Up @@ -52,7 +51,7 @@ roles = [
```

To use the replicated loglet, you need to reconfigure the cluster configuration to use the replicated loglet as the default log provider.
You can do this by using [`restatectl`](/references/restatectl#getting-restatectl).
You can do this by using [`restatectl`](/operate/clusters#controlling-clusters-with-restatectl).

```shell
restatectl config set --log-provider replicated --log-replication 1
Expand Down Expand Up @@ -117,4 +116,4 @@ restatectl status

Here are some next step for you to try:

- Try [growing your cluster](/deploy/server/cluster/growing-cluster) to tolerate node failures
- Try [growing your cluster](/operate/clusters#growing-the-cluster) to tolerate node failures
1 change: 1 addition & 0 deletions docs/guides/sagas.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ It is for example possible to reset the state of the service, call other service

## Related resources

- [Error Handling guide](/guides/error-handling)
- Terminal errors: [Java](/develop/java/error-handling) / [TS](/develop/ts/error-handling) / [Go](/develop/go/error-handling) / [Python](/develop/python/error-handling) / [Rust](https://docs.rs/restate-sdk/latest/restate_sdk/errors/index.html)
- [Cancellation of invocations](/operate/invocation#cancelling-invocations)
- [Blog post: Graceful cancellations: How to keep your application and workflow state consistent 💪](https://restate.dev/blog/graceful-cancellations-how-to-keep-your-application-and-workflow-state-consistent/)
Expand Down
Loading
Loading