Skip to content

Commit

Permalink
Consistent format for hardware requirements for various services (#761)
Browse files Browse the repository at this point in the history
* distributing Horizon hardware requirements

* Validator node hardware requirements

* rpc hardware requirements

* Update docs/data/horizon/admin-guide/prerequisites.mdx

Co-authored-by: Elliot Voris <[email protected]>

* Update docs/data/rpc/admin-guide.mdx

Co-authored-by: Elliot Voris <[email protected]>

* Update docs/validators/admin-guide/prerequisites.mdx

Co-authored-by: Elliot Voris <[email protected]>

* Update Horizon: 1.5 IOPS -> 3k IOPS

---------

Co-authored-by: Elliot Voris <[email protected]>
  • Loading branch information
briwylde08 and ElliotFriend authored Jul 18, 2024
1 parent d8eecec commit c65d646
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 17 deletions.
27 changes: 19 additions & 8 deletions docs/data/horizon/admin-guide/prerequisites.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,25 @@ For a basic setup using the [Single Instance Deployment model](./configuring.mdx
- One for hosting the Horizon service
- Another for hosting the PostgreSQL server

### Hardware requirements

The minimum hardware specifications to effectively run Horizon are as follows:

### Horizon Compute Instance:
#### Horizon Compute Instance:

| Node Type | CPU | RAM | Disk | AWS SKU | Google Cloud SKU |
| --- | --- | --- | --- | --- | --- |
| Horizon API Service | 4 vCPU | 16 GB | 100 GB SSD >= 3K IOPS | [c5d.xlarge] | [n4-standard-4] |

- CPU: 4 cores
- RAM: 16 GB
- Storage: SSD with a capacity of 100 GB capable of handling at least 1.5K IOPS (I/O operations per second)
_\* Assuming a 30-day retention window for data storage._

### PostgreSQL Database Server Compute Instance:
#### PostgreSQL Database Server Compute Instance:

- CPU: 4 cores
- RAM: 32 GB
- Storage: SSD with a capacity of 2 TB (NVMe or Direct Attached Storage) capable of handling at least 7K IOPS (I/O operations per second)
| Node Type | CPU | RAM | Disk | AWS SKU | Google Cloud SKU |
| --- | --- | --- | --- | --- | --- |
| Horizon PostgreSQL | 4 vCPU | 32 GB | 2 TB\* SSD (NVMe or Direct Attached Storage) >= 7K IOPS | [i4g.xlarge] | [c3-highmem-8] |

_\* Assuming a 30-day retention window for data storage._

Please note that a minimum of PostgreSQL version 12 is required.

Expand All @@ -47,3 +53,8 @@ To achieve high availability, redundancy, and high throughput, refer to the [sca
Hardware requirements may increase as the Stellar network grows and/or if you're sharing resources or using custom configs.

:::

[c5d.2xlarge]: https://aws.amazon.com/ec2/instance-types/c5/
[n4-standard-4]: https://cloud.google.com/compute/docs/general-purpose-machines#n4-standard
[i4g.xlarge]: https://aws.amazon.com/ec2/instance-types/i4g/
[c3-highmem-8]: https://cloud.google.com/compute/docs/general-purpose-machines#c3_machine_types
25 changes: 17 additions & 8 deletions docs/data/rpc/admin-guide.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,20 @@ We recommend the following ways to deploy your own RPC instance:
1. Deploy to Kubernetes using [Helm](https://helm.sh/docs/intro/install/)
2. Run the [soroban-rpc docker image](https://hub.docker.com/r/stellar/soroban-rpc) directly

### Hardware Requirements

For deployments expecting up to 1000 requests per second to Soroban RPC, we recommend at least 4GB of RAM and at least a dual core CPU with a 2.4GHz clock speed.

For deployments expecting 1000-10000+ requests per second to Soroban RPC, we recommend at least 8GB of RAM and at least a quad core CPU with a 2.4GHz clock speed.

For all deployments, we recommend at least 10GB of disk/storage space.

| Node Type | CPU | RAM | Disk | AWS SKU | Google Cloud SKU |
| --- | --- | --- | --- | --- | --- |
| Soroban RPC | 2 vCPU | 4-8 GB | 30 GB persistent volume >= 3K IOPS | [c5.large] | [n4-highcpu-2] |

_\* Assuming a 30-day retention window for data storage._

### Kubernetes With Helm

If your deployment environment includes Kubernetes infrastructure, this is the preferred way to deploy your RPC instance. Here’s what you need to do:
Expand Down Expand Up @@ -482,14 +496,6 @@ Note that the above generated configuration contains the default values and you

Instructions for building Soroban RPC from source can be found [here](https://github.com/stellar/soroban-rpc/blob/main/cmd/soroban-rpc/README.md).

### Hardware Requirements

For deployments expecting up to 1000 requests per second to Soroban RPC, we recommend at least 4GB of RAM and at least a dual core CPU with a 2.4GHz clock speed.

For deployments expecting 1000-10000+ requests per second to Soroban RPC, we recommend at least 8GB of RAM and at least a quad core CPU with a 2.4GHz clock speed.

For all deployments, we recommend at least 10GB of disk/storage space.

## Use the RPC Instance

You can configure Stellar CLI to use a remote RPC endpoint:
Expand Down Expand Up @@ -607,3 +613,6 @@ The logs have the format:
```
time=<timestamp in YYYY-MM-DDTHH:MM:SS.000Z format> level=<debug|info|error> msg=<Actual message> pid=<process ID> subservice=<optional if coming from subservice>
```

[c5.large]: https://aws.amazon.com/ec2/instance-types/c5/
[n4-highcpu-2]: https://cloud.google.com/compute/docs/general-purpose-machines#n4-highcpu
10 changes: 9 additions & 1 deletion docs/validators/admin-guide/prerequisites.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar_position: 20

You can install Stellar Core a [number of different ways](./installation.mdx), and once you do, you can [configure](./configuring.mdx) it to participate in the network on a several [different levels](../README.mdx#types-of-nodes): it can be either a Basic Validator or a Full Validator. No matter how you install Stellar Core or what kind of node you run, however, you need to set up and connect to the peer-to-peer network and store the state of the ledger in a SQL [database](./configuring.mdx#database).

## Compute Requirements
## Hardware Requirements

:::info

Expand All @@ -17,6 +17,12 @@ At the time of writing (April 2024), Stellar Core with PostgreSQL running on the

Stellar Core is designed to run on relatively modest hardware so that a whole range of individuals and organizations can participate in the network, and basic nodes should be able to function pretty well without tremendous overhead. That said, the more you ask of your node, the greater the requirements.

| Node Type | CPU | RAM | Disk | AWS SKU | Google Cloud SKU |
| --- | --- | --- | --- | --- | --- |
| Core Validator Node | 8x Intel Xeon @ 3.4 GHz | 16 GB | 100 GB NVMe SSD | [c5d.2xlarge] | [n4-highcpu-8] |

_\* Assuming a 30-day retention window for data storage._

## Network Access

Stellar Core interacts with the peer-to-peer network to keep a distributed ledger in sync, which means that your node needs to make certain [TCP ports](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_ports) available for inbound and outbound communication.
Expand Down Expand Up @@ -79,3 +85,5 @@ In addition to the SQL database, Stellar Core stores a duplicate copy of the led
Buckets should be stored on a fast, local disk with sufficient space to store several times the size of the current ledger. Current ledger size is approximately 10 GB (as of April 2024), so please plan accordingly.

[configure]: ./configuring.mdx
[c5d.2xlarge]: https://aws.amazon.com/ec2/instance-types/c5/
[n4-highcpu-8]: https://cloud.google.com/compute/docs/general-purpose-machines#n4-highcpu

0 comments on commit c65d646

Please sign in to comment.