Skip to content
This repository was archived by the owner on Mar 1, 2022. It is now read-only.

solana-labs/cluster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c0262d0 · Feb 27, 2022
Feb 27, 2022
Feb 27, 2022
Mar 11, 2020
Aug 29, 2020
Mar 12, 2020
Dec 8, 2019
Aug 31, 2020
Dec 3, 2019
Feb 27, 2022
Mar 14, 2020
Mar 27, 2020
Mar 27, 2020
Feb 27, 2022
Aug 10, 2020
Sep 2, 2020
Mar 13, 2020
Feb 27, 2022
Feb 27, 2022
Feb 27, 2022
Feb 27, 2022
Feb 27, 2022
Feb 27, 2022
Feb 27, 2022

Repository files navigation

WARNING: THIS README IS OUTDATED

Machine Overview

Each machine is configured as similarly as possible. The solana sofware runs under the user sol as a systemd service. The name of the systemd service is the same across all nodes, sol.

The ledger is stored in /home/sol/ledger

Cluster Entrypoint Node

  • DNS: cluster.solana.com
  • Static IP: 35.227.139.150
  • GCE Instance Name: cluster-entrypoint
  • OS Image: Ubuntu 20.04 LTS Minimal
  • Boot disk: Standard disk, 200GB
  • Machine type: n1-standard-1
  • Region: us-west-1
  • ssh: gcloud --project solana-cluster compute ssh cluster-entrypoint

Bootstrap Validator Node

  • DNS: none
  • Static IP: none
  • GCE Instance Name: cluster-bootstrap-validator
  • OS Image: Ubuntu 20.04 LTS Minimal
  • Boot disk: Standard disk, 2TB
  • Machine type: n1-standard-16
  • Region: us-west-1
  • ssh: gcloud --project solana-cluster compute ssh cluster-bootstrap-validator

RPC Node

  • DNS: api.cluster.solana.com
  • Static IP: 35.197.59.229
  • GCE Resource Name: cluster-api
  • OS Image: Ubuntu 20.04 LTS Minimal
  • Boot disk: Standard disk, 2TB
  • Machine type: n1-standard-16
  • Region: us-west-1
  • ssh: gcloud --project solana-cluster compute ssh cluster-api

Warehouse Node

  • DNS: none
  • Static IP: none
  • GCE Instance Name: cluster-warehouse
  • OS Image: Ubuntu 20.04 LTS Minimal
  • Boot disk: Standard disk, 2TB
  • Machine type: n1-standard-16
  • Region: us-west-1
  • ssh: gcloud --project solana-cluster compute ssh cluster-warehouse

Watchtower Node

  • DNS: none
  • Static IP: none
  • GCE Instance Name: cluster-watchtower
  • OS Image: Ubuntu 20.04 LTS Minimal
  • Boot disk: Standard disk, 200GB
  • Machine type: n1-standard-1
  • Region: us-west-1
  • ssh: gcloud --project solana-cluster compute ssh cluster-watchtower

Metrics

The following metrics configuration is used in production:

# These public credentials are a known risk
SOLANA_METRICS_CONFIG="host=https://metrics.solana.com:8086,db=cluster,u=cluster_write,p=2aQdShmtsPSAgABLQiK2FpSCJGLtG8h3vMEVz1jE7Smf"

Production metrics dashboard

Internal Workflows

Changing the deployed Solana software version

There are two places to be modified to update the Solana software version to deploy:

  1. On your machine as genesis will be build on your local machine. Run solana-install init <desired version>.
  2. Modify the RELEASE_CHANNEL_OR_TAG= variable in launch-cluster.sh.

Launch a development cluster

A development cluster can be created at any time by anybody. The instances will be created in the standard GCE development project, scoped by your username.

Procedure:

  1. Ensure the desired Solana release is installed on your machine
  2. Run ./genesis.sh to produce the genesis configuration. To override the default cluster creation time of now, include the --creation-time argument (eg ./genesis.sh --creation-time '2020-01-01T12:00:00-08:00')
  3. If metrics are desired set SOLANA_METRICS_CONFIG in your environment
  4. Run ./launch-cluster.sh to create the development cluster instances

When done run ./delete-cluster.sh to delete the instances.

Launch THE cluster

Same as launching a development cluster except:

  1. You need access to the solana-cluster GCE project
  2. SOLANA_METRICS_CONFIG is automatically configured
  3. export CLUSTER=cluster before running ./launch-cluster.sh

The ./launch-cluster.sh script programmatically creates and configures the cluster instances.

Manipulating the systemd service

The file /etc/systemd/system/sol.service describes the systemd service for each of the instances.

From a shell on the instance, view the current status of the services with

$ sudo systemctl status sol

Follow logs with:

$ journalctl -u sol -f

If /etc/systemd/system/sol.service is modified, apply the changes with:

$ sudo systemctl daemon-reload
$ sudo systemctl restart sol

Updating the solana software

From a shell on the instance run:

$ /solana-update.sh 0.22.0

There's no mechanism to automatically update the software across all the nodes at once.

Delegating Stake to a Validator

As external validators boot they receive 1m SOL in equal stake.

To locate the online validators run:

$ solana show-validators

The solana catchup command can be used to block until a given validator has caught up to the cluster.

Then use the solana delegate-stake command for each validator using a TBD stake account.

Fetching a ledger snapshot

To view the available ledger snapshots, run:

$ ./fetch-ledger-snapshot.sh

Downloading a snapshot can be accomplished with:

$ ./fetch-ledger-snapshot.sh 2019-12-03T22:54:59Z  # <-- replace with the desired snapshot timestamp

Boot a validator from the downloaded snapshot with:

$ solana-validator \
  --ledger ledger-snapshot \
  --no-genesis-fetch \
  --no-snapshot-fetch ...

Validator Workflow

The minimal steps required of a validator participating in the initial boot of the cluster are:

Installing the software

$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v0.21.1/install/solana-install-init.sh | sh -s - 0.21.2

then configure the command-line tool's RPC endpoint URL:

$ solana set --url http://34.82.79.31/

Starting your validator:

Assuming that ~/validator-keypair.json and ~/validator-vote-keypair.json contain the validator identity and vote keypairs that were registered in the genesis configuration, run:

# These public credentials are a known risk
$ export SOLANA_METRICS_CONFIG="host=https://metrics.solana.com:8086,db=cluster,u=cluster_write,p=2aQdShmtsPSAgABLQiK2FpSCJGLtG8h3vMEVz1jE7Smf"
$ export EXPECTED_GENESIS_HASH=##### <--- To be communicated by Solana
$ solana-validator \
  --identity-keypair ~/validator-keypair.json \
  --voting-keypair ~/validator-vote-keypair.json \
  --ledger ~/validator-ledger \
  --rpc-port 8899 \
  --entrypoint 34.83.130.52:8001
  --limit-ledger-size \
  --expected-genesis-hash $EXPECTED_GENESIS_HASH \
  --expected-shred-version ${EXPECTED_SHRED_VERSION} \

About

Cluster Infrastructure

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages