How To Build a scalable Solana RPC cluster on Akash

Project Title: Build a scalable Solana RPC cluster on Akash.

Hello everyone! I’m attempting the following bounty: Solana on Akash (1000 AKT) | ovrclk Funded Issue Detail | Gitcoin | Gitcoin and am requesting some funding so I can deploy a docker image that runs a Solana RPC cluster on Akash!

Problem Statement: What is the problem you will solve?

The problem is the absence of a meta package of Solana SDK based docker images that allows Solana Decs to Have a (dedicated) Solana RPC clusters running on Akash network that’s local to developer’s app .

By running Deidicated Solana RPC cluster on Akash it will allow Devs at 1/3 of the costs relative to AWS, to autoscale based on user demand, relax rate limits according to their application, and have peace of mind that other applications’ users won’t crowd their’s out.

Goals: What are you aiming to accomplish?

A meta package of Solana SDK-based docker images and configuration meant to make deploying onto Akash easy and standardized for Solana.

Milestones To Achieve:

  • Fully Load Balanced RPC cluster
  • Code sample in a public repository (GitHub)
  • Detailed guide for users to deploy the cluster
  • Git-based deploy flow to updates to RPC server
  • Multi-sig for Deploy Keys

Impact: What impact will this project have?

Impact will be, to have a simple way to launch Solana RPC clusters on Akash network, with a variety of different bootstrapping options

Budget: How much funding will this require?

$100 in initial funding for the project. (expenses to test code deploy to Akash network).

Address: akash1aya4kpkqqakrgs88yq9pt27uc8rcs3qrvrlw9j

Timeline: What is the timeline for accomplishing this task?

The Goal is to finish the project in the next 17 days (Starting: 10/9/21) in order to have a eligible submission for the hackathon.

On the other side Improvements to the Github Repo. will continue by community members through pull requests as long as community demands.

Team: Are you looking for additional team members?

Looking forward for anyone to join, just reach out over discord and DM me.

Reporting: How will you report your progress to the community (e.g. weekly calls, reports)?

Reporting will be based on a 3-day based time intervals.

Design: Do you have any mock ups or screenshots?

I am going to base workflow to look like work done on currently existed Github Repo https://github.com/ovrclk/cosmos-omnibusaiming to deploy Cosmos Chains to Akash.

3 Likes

Solana On AKASH

Sourced from GitHub - amrosaeed/Akash-Hackathon

Screenshot from 2021-09-30 05-37-04

Motivation

This repository is meant to serve as an example for how to run a load balanced solana RPC nodes local to your DApp. It does not give specifics on the architecture of Solana, and should not be used as a substitute for Solana’s documentation. It is highly recommended to read Solana’s Documentation on running a RPC service node. This repository should be used in conjunction with Solana’s guide. It provides a preliminary answer to Akash RFP (Build a scalable Solana RPC cluster on Akash).

This repository gives three examples of potential Network setups (Main-beta net, Test-net and Dev-net). of a cluster of two solana RPC nodes local to your app that are load balanced by an NGINX server that can be used as an entry point for querying on-chain Solana data.

The end goal of this guide is to have a cluster of solana RPC nodes running in a decentralized cloud environment like Akash.

Running a cluster of load-balanced RPC Solana Nodes

Choosing an instance type

Solana’s documentation recommends certain Hardware Requirments with the highest number of cores available and a CUDA enabled GPU (see here). Solana uses GPUs to increase throughput and the documentation recommends using Nvidia Turing or Volta family GPUs which are available through most cloud providers.

The Solana ledger is stored on disk. As of this writing, specifying the minimum required ledger length uses roughly 200GiB of disk space. When provisioning your instance, you should choose a disk size of at least 200GiB to ensure sufficient space for the ledger.

Implemented features

We implemented node_deploy.yml file and lb_deploy file, which are located in solana-omnibus/Production-Ready/ directory. This files are used for deployment on akash network. In the node_deploy.yml is configured solana RPC node Akash-Hackathon/solana-omnibus/Production-Ready/devnet at solana-omnibus · amrosaeed/Akash-Hackathon · GitHub. In the lb_deploy.yml is nginx load balancer for balancing the traffic between dapp and the validator. To configure ngnix env variables, nodes need to be deployed to provider first, and check which ports are opened.

User guide

  1. Deploy validators that are faced to the dapp
  2. Configure load balancer with the domains and ports of the deployed validator nodes
  3. Create nginx image
  4. Push nginx image to DockerHub
  5. Deploy load balancer on the akash