From 6dcdea26924817a7fb5aeb1e0808e7880275313a Mon Sep 17 00:00:00 2001 From: Varsha Narmat <117872786+varnarmat@users.noreply.github.com> Date: Fri, 30 Aug 2024 17:07:07 -0400 Subject: [PATCH 1/5] Add files via upload Signed-off-by: Varsha Narmat <117872786+varnarmat@users.noreply.github.com> --- .../4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png | Bin 0 -> 180326 bytes .../89571298-F580-487E-BAEF-1CAC3B44545B.png | Bin 0 -> 108880 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png create mode 100644 docs/public-networks/how-to/89571298-F580-487E-BAEF-1CAC3B44545B.png diff --git a/docs/public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png b/docs/public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca6fbda722806a35ef0e98a036ecb20a70b84ef GIT binary patch literal 180326 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�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

+JvUX`T07z20sT+UBS@_jOYnx+@EzzyGaMiKttM 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 e2Ogmnen9z2b+c-TyXqqh{OO-HI#a5Rjrboa6 Date: Fri, 30 Aug 2024 17:14:13 -0400 Subject: [PATCH 2/5] Create deploy-besu-teku Signed-off-by: Varsha Narmat <117872786+varnarmat@users.noreply.github.com> --- docs/public-networks/how-to/deploy-besu-teku | 239 +++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100644 docs/public-networks/how-to/deploy-besu-teku diff --git a/docs/public-networks/how-to/deploy-besu-teku b/docs/public-networks/how-to/deploy-besu-teku new file mode 100644 index 00000000000..ef7e9081bf1 --- /dev/null +++ b/docs/public-networks/how-to/deploy-besu-teku @@ -0,0 +1,239 @@ +--- +title: Deploy Besu Teku Ethereum Nodes via AWS Blockchain Node Runners +description: How to configure your Ethereum nodes with the besu teku execution/consensus layer client combination using AWS Blockchain Node Runners. +--- + +[AWS Blockchain Node Runners (Node Runners)](https://aws-samples.github.io/aws-blockchain-node-runners/docs/intro) is an open-source initiative aimed at simplifying the deployment of self-managed blockchain nodes on AWS using vetted deployment blueprints and infrastructure configurations. Node Runners is designed to solve for the common challenges customers face in architecting and deploying blockchain nodes on AWS, such as identifying the optimal configurations for each specific blockchain protocol’s node client. + +## Architecture Overview + +This blueprint has two configuration options for running Ethereum nodes and supports several Ethereum client combinations. You can set up a single JSON RPC node or multiple nodes in highly-available setup using the instructions below. + +### Single RPC node setup +![Architecture-PoC](../docs/public-networks/how-to/89571298-F580-487E-BAEF-1CAC3B44545B.png) + +This setup is for small scale PoC or development environments. It deploys a single EC2 instance with both consensus and execution clients. The RPC port is exposed only to internal IP range of the VPC, while P2P ports allow external access to keep the clients synced. + +### Highly available setup +![Architecture](../docs/public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png) + +1. An ongoing data synchronization process is configured with nodes in the Ethereum network with a sync node and RPC nodes. +2. The sync node is used to create a copy of node's state data in Amazon S3 bucket. +3. When new RPC nodes are provisioned, they copy state data from Amazon S3 bucket to speed up the initial sync process. +4. Applications and smart contract development tools access highly available RPC nodes behind the Application Load Balancer. + +## Well-Architected + +

+Review the for pros and cons of this solution. + +### Well-Architected Checklist + +This is the Well-Architected checklist for Ethereum nodes implementation of the AWS Blockchain Node Runner app. This checklist takes into account questions from the [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/) which are relevant to this workload. Please feel free to add more checks from the framework if required for your workload. + +| Pillar | Control | Question/Check | Remarks | +|:------------------------|:----------------------------------|:---------------------------------------------------------------------------------|:-----------------| +| Security | Network protection | Are there unnecessary open ports in security groups? | Please note that Erigon snap sync port remains open for non-erigon clients, i.e. Port 42069 (TCP/UDP). | +| | | Traffic inspection | AWS WAF could be implemented for traffic inspection. Additional charges will apply. | +| | Compute protection | Reduce attack surface | This solution uses Amazon Linux 2 AMI. You may choose to run hardening scripts on it. | +| | | Enable people to perform actions at a distance | This solution uses AWS Systems Manager for terminal session, not ssh ports. | +| | Data protection at rest | Use encrypted Amazon Elastic Block Store (Amazon EBS) volumes | This solution uses encrypted Amazon EBS volumes. | +| | | Use encrypted Amazon Simple Storage Service (Amazon S3) buckets | This solution uses Amazon S3 managed keys (SSE-S3) encryption. | +| | Data protection in transit | Use TLS | The AWS Application Load balancer currently uses HTTP listener. Create HTTPS listener with self signed certificate if TLS is desired. | +| | Authorization and access control | Use instance profile with Amazon Elastic Compute Cloud (Amazon EC2) instances | This solution uses AWS Identity and Access Management (AWS IAM) role instead of IAM user. | +| | | Following principle of least privilege access | In sync node, root user is not used (using special user "ethereum" instead"). | +| | Application security | Security focused development practices | cdk-nag is being used with appropriate suppressions. | +| Cost optimization | Service selection | Use cost effective resources | AWS Graviton-based Amazon EC2 instances are being used, which are cost effective compared to Intel/AMD instances. | +| | Cost awareness | Estimate costs | One sync node with m7g.2xlarge for geth-lighthouse configuration (2048GB ssd) will cost around US$430 per month in the US East (N. Virginia) region. Additional charges will apply if you choose to deploy RPC nodes with load balancer. | +| Reliability | Resiliency implementation | Withstand component failures | This solution uses AWS Application Load Balancer with RPC nodes for high availability. If sync node fails, Amazon S3 backup can be used to reinstate the nodes. | +| | Data backup | How is data backed up? | Data is backed up to Amazon S3 using [s5cmd](https://github.com/peak/s5cmd) tool. | +| | Resource monitoring | How are workload resources monitored? | Resources are being monitored using Amazon CloudWatch dashboards. Amazon CloudWatch custom metrics are being pushed via CloudWatch Agent. | +| Performance efficiency | Compute selection | How is compute solution selected? | Compute solution is selected based on best price-performance, i.e. AWS Graviton-based Amazon EC2 instances. | +| | Storage selection | How is storage solution selected? | Storage solution is selected based on best price-performance, i.e. gp3 Amazon EBS volumes with optimal IOPS and throughput. | +| | Architecture selection | How is the best performance architecture selected? | s5cmd tool has been chosen for Amazon S3 uploads/downloads because it gives better price-performance compared to Amazon EBS snapshots (including Fast Snapshot Restore, which can be expensive). | +| Operational excellence | Workload health | How is health of workload determined? | Health of workload is determined via AWS Application Load Balancer Target Group Health Checks, on port 8545. | +| Sustainability | Hardware & services | Select most efficient hardware for your workload | This solution uses AWS Graviton-based Amazon EC2 instances which offer the best performance per watt of energy use in Amazon EC2. | + +
+ +## Solution Walkthrough + +### Open AWS CloudShell + +To begin, ensure you login to your AWS account with permissions to create and modify resources in IAM, EC2, EBS, VPC, S3, KMS, and Secrets Manager. + +From the AWS Management Console, open the [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html), a web-based shell environment. If unfamiliar, review the [2-minute YouTube video](https://youtu.be/fz4rbjRaiQM) for an overview and check out [CloudShell with VPC environment](https://docs.aws.amazon.com/cloudshell/latest/userguide/creating-vpc-environment.html) that we'll use to test nodes API from internal IP address space. + +Once ready, you can run the commands to deploy and test blueprints in the CloudShell. + +### Clone this repository and install dependencies + +```bash +git clone https://github.com/aws-samples/aws-blockchain-node-runners.git +cd aws-blockchain-node-runners +npm install +``` + +> **NOTE:** *In this tutorial we will set all major configuration through environment variables, but you also can modify parameters in `config/config.ts`.* + +### Prepare to deploy nodes + +1. Make sure you are in the root directory of the cloned repository + +2. If you have deleted or don't have the default VPC, create default VPC + +```bash +aws ec2 create-default-vpc +``` + +> **NOTE:** *You may see the following error if the default VPC already exists: `An error occurred (DefaultVpcAlreadyExists) when calling the CreateDefaultVpc operation: A Default VPC already exists for this account in this region.`. That means you can just continue with the following steps.* + +> **NOTE:** *The default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES`* + +3. Configure your Node Runners Ethereum blueprint deployment + +To specify the Ethereum client combination you wish to deploy, create your own copy of `.env` file and edit it using your preferred text editor. The contents of your file for a Besu / Teku node deployment is as follows, which uses a sample config from the repository: +```bash +# Make sure you are in aws-blockchain-node-runners/lib/ethereum +cd lib/ethereum +pwd +cp ./sample-configs/.env-besu-teku .env +nano .env +``` +> **NOTE:** *You can find more examples inside the `sample-configs` directory, which illustrate other Ethereum client combinations.* + + +4. Deploy common components such as IAM role, and Amazon S3 bucket to store data snapshots + +```bash +pwd +# Make sure you are in aws-blockchain-node-runners/lib/ethereum +npx cdk deploy eth-common +``` + +### Option 1: Single RPC Node + +1. Deploy Single RPC Node + +```bash +pwd +# Make sure you are in aws-blockchain-node-runners/lib/ethereum +npx cdk deploy eth-single-node --json --outputs-file single-node-deploy.json +``` +> **NOTE:** *The default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES`* + +2. After starting the node you need to wait for the inital syncronization process to finish. It may take from half a day to about 6-10 days depending on the client combination and the state of the network. You can use Amazon CloudWatch to track the progress. There is a script that publishes CloudWatch metrics every 5 minutes, where you can watch `sync distance` for consensus client and `blocks behind` for execution client. When the node is fully synced those two metrics shold show 0. To see them: + + - Navigate to [CloudWatch service](https://console.aws.amazon.com/cloudwatch/) (make sure you are in the region you have specified for `AWS_REGION`) + - Open `Dashboards` and select `eth-sync-node-` from the list of dashboards. + +4. Once the initial synchronization is done, you should be able to access the RPC API of that node from within the same VPC. The RPC port is not exposed to the Internet. Turn the following query against the private IP of the single RPC node you deployed: + +```bash +INSTANCE_ID=$(cat single-node-deploy.json | jq -r '..|.node-instance-id? | select(. != null)') +NODE_INTERNAL_IP=$(aws ec2 describe-instances --instance-ids $INSTANCE_ID --query 'Reservations[*].Instances[*].PrivateIpAddress' --output text) +echo "NODE_INTERNAL_IP=$NODE_INTERNAL_IP" +``` + +Copy output from the last `echo` command with `NODE_INTERNAL_IP=` and open [CloudShell tab with VPC environment](https://docs.aws.amazon.com/cloudshell/latest/userguide/creating-vpc-environment.html) to access internal IP address space. Paste `NODE_INTERNAL_IP=` into the new CloudShell tab. Then query the API: + +``` bash +# IMPORTANT: Run from CloudShell VPC environment tab +# We query token balance of Beacon deposit contract: https://etherscan.io/address/0x00000000219ab540356cbb839cbe05303d7705fa +curl http://$NODE_INTERNAL_IP:8545 -X POST -H "Content-Type: application/json" \ +--data '{"method":"eth_getBalance","params":["0x00000000219ab540356cBB839Cbe05303d7705Fa", "latest"],"id":1,"jsonrpc":"2.0"}' +``` + +The result should be like this (the actual balance might change): + +```javascript +{"jsonrpc":"2.0","id":1,"result":"0xe791d050f91d9949d344d"} +``` + +### Option 2: Highly Available RPC Nodes + +1. Deploy Sync Node + +```bash +pwd +# Make sure you are in aws-blockchain-node-runners/lib/ethereum +npx cdk deploy eth-sync-node --json --outputs-file sync-node-deploy.json +``` +**NOTE:** *The default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES`* + +2. After starting the node you need to wait for the inital syncronization process to finish. It may take from half a day to about 6-10 days depending on the client combination and the state of the network. You can use Amazon CloudWatch to track the progress. There is a script that publishes CloudWatch metrics every 5 minutes, where you can watch `sync distance` for consensus client and `blocks behind` for execution client. When the node is fully synced those two metrics shold show 0. To see them: + + - Navigate to [CloudWatch service](https://console.aws.amazon.com/cloudwatch/) (make sure you are in the region you have specified for `AWS_REGION`) + - Open `Dashboards` and select `eth-sync-node-` from the list of dashboards. + +Once synchronization process is over, the script will automatically stop both clients and copy all the contents of the `/data` directory to your snapshot S3 bucket. That may take from 30 minutes to about 2 hours. During the process on the dashboard you will see lower CPU and RAM utilization but high data disc throughput and outbound network traffic. The script will automatically start the clients after the process is done. + +> **Note:** *The snapshot backup process will automatically run every day at midnight of the time zone were the sync node runs. To change the schedule, modify `crontab` of the root user on the node's EC2 instance.* + +3. Configure and deploy 2 RPC Nodes + +```bash +pwd +# Make sure you are in aws-blockchain-node-runners/lib/ethereum +npx cdk deploy eth-rpc-nodes --json --outputs-file rpc-node-deploy.json +``` + +4. Give the new RPC nodes about 30 minutes (up to 2 hours for Erigon(???)) to initialize and then run the following query against the load balancer behind the RPC node created + +```bash +export ETH_RPC_ABL_URL=$(cat rpc-node-deploy.json | jq -r '..|.alburl? | select(. != null)') +echo ETH_RPC_ABL_URL=$ETH_RPC_ABL_URL +``` + +```bash +# IMPORTANT: Run from CloudShell VPC environment tab +# We query token balance of Beacon deposit contract: https://etherscan.io/address/0x00000000219ab540356cbb839cbe05303d7705fa +curl http://$ETH_RPC_ABL_URL:8545 -X POST -H "Content-Type: application/json" \ + --data '{"method":"eth_getBalance","params":["0x00000000219ab540356cBB839Cbe05303d7705Fa", "latest"],"id":1,"jsonrpc":"2.0"}' +``` + +The result should be like this (the actual balance might change): + +```javascript +{"jsonrpc":"2.0","id":1,"result":"0xe791d050f91d9949d344d"} +``` + + If the nodes are still starting and catching up with the chain, you will see the following repsonse: + +```HTML + + 503 Service Temporarily Unavailable + +

503 Service Temporarily Unavailable

+ +``` + +> **NOTE:** By default and for security reasons the load balancer is available only from within the default VPC in the region where it is deployed. It is not available from the Internet and is not open for external connections. Before opening it up please make sure you protect your RPC APIs. + +### Clearing up and undeploying everything + +Destroy RPC Nodes, Sync Nodes and Comon components + +```bash +# Setting the AWS account id and region in case local .env file is lost + export AWS_ACCOUNT_ID= + export AWS_REGION= + +pwd +# Make sure you are in aws-blockchain-node-runners/lib/ethereum + +# Destroy Single RPC Node +cdk destroy eth-single-node + +# Destroy RPC Nodes +cdk destroy eth-rpc-nodes + +# Destroy Sync Node +cdk destroy eth-sync-node + +# You need to manually delete an s3 bucket with a name similar to 'eth-snapshots-$accountid-eth-nodes-common' on the console,firstly empty the bucket,secondly delete the bucket,and then execute +# Delete all common components like IAM role and Security Group +cdk destroy eth-common +``` + +docs/public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png From 91bbd922363ec252f5622d2d666e73c6c07cd907 Mon Sep 17 00:00:00 2001 From: Joan E <153745173+joaniefromtheblock@users.noreply.github.com> Date: Mon, 16 Sep 2024 16:38:48 -0400 Subject: [PATCH 3/5] initial edits Signed-off-by: Joan E <153745173+joaniefromtheblock@users.noreply.github.com> --- docs/public-networks/how-to/deploy-besu-teku | 34 ++++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/public-networks/how-to/deploy-besu-teku b/docs/public-networks/how-to/deploy-besu-teku index ef7e9081bf1..ed4badc53e1 100644 --- a/docs/public-networks/how-to/deploy-besu-teku +++ b/docs/public-networks/how-to/deploy-besu-teku @@ -1,12 +1,11 @@ --- -title: Deploy Besu Teku Ethereum Nodes via AWS Blockchain Node Runners -description: How to configure your Ethereum nodes with the besu teku execution/consensus layer client combination using AWS Blockchain Node Runners. +title: Deploy Besu and Teku Ethereum nodes using AWS node runners +description: Configure Ethereum nodes with the execution/consensus layer client combination using AWS blockchain node runners. --- -[AWS Blockchain Node Runners (Node Runners)](https://aws-samples.github.io/aws-blockchain-node-runners/docs/intro) is an open-source initiative aimed at simplifying the deployment of self-managed blockchain nodes on AWS using vetted deployment blueprints and infrastructure configurations. Node Runners is designed to solve for the common challenges customers face in architecting and deploying blockchain nodes on AWS, such as identifying the optimal configurations for each specific blockchain protocol’s node client. - -## Architecture Overview +## Architecture +[AWS Blockchain Node Runners (Node Runners)](https://aws-samples.github.io/aws-blockchain-node-runners/docs/intro) are an open-source initiative aimed at simplifying the deployment of self-managed blockchain nodes on AWS using vetted deployment blueprints and infrastructure configurations. Node Runners is designed to solve for the common challenges customers face in architecting and deploying blockchain nodes on AWS, such as identifying the optimal configurations for each specific blockchain protocol’s node client. This blueprint has two configuration options for running Ethereum nodes and supports several Ethereum client combinations. You can set up a single JSON RPC node or multiple nodes in highly-available setup using the instructions below. ### Single RPC node setup @@ -18,17 +17,12 @@ This setup is for small scale PoC or development environments. It deploys a sing ![Architecture](../docs/public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png) 1. An ongoing data synchronization process is configured with nodes in the Ethereum network with a sync node and RPC nodes. -2. The sync node is used to create a copy of node's state data in Amazon S3 bucket. -3. When new RPC nodes are provisioned, they copy state data from Amazon S3 bucket to speed up the initial sync process. -4. Applications and smart contract development tools access highly available RPC nodes behind the Application Load Balancer. +1. The sync node is used to create a copy of node's state data in Amazon S3 bucket. +1. When new RPC nodes are provisioned, they copy state data from Amazon S3 bucket to speed up the initial sync process. +1. Applications and smart contract development tools access highly available RPC nodes behind the Application Load Balancer. ## Well-Architected -
-Review the for pros and cons of this solution. - -### Well-Architected Checklist - This is the Well-Architected checklist for Ethereum nodes implementation of the AWS Blockchain Node Runner app. This checklist takes into account questions from the [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/) which are relevant to this workload. Please feel free to add more checks from the framework if required for your workload. | Pillar | Control | Question/Check | Remarks | @@ -54,7 +48,6 @@ This is the Well-Architected checklist for Ethereum nodes implementation of the | Operational excellence | Workload health | How is health of workload determined? | Health of workload is determined via AWS Application Load Balancer Target Group Health Checks, on port 8545. | | Sustainability | Hardware & services | Select most efficient hardware for your workload | This solution uses AWS Graviton-based Amazon EC2 instances which offer the best performance per watt of energy use in Amazon EC2. | -
## Solution Walkthrough @@ -74,7 +67,11 @@ cd aws-blockchain-node-runners npm install ``` -> **NOTE:** *In this tutorial we will set all major configuration through environment variables, but you also can modify parameters in `config/config.ts`.* +::: note + +In this tutorial we will set all major configuration through environment variables, but you also can modify parameters in `config/config.ts`.* + +::: ### Prepare to deploy nodes @@ -86,9 +83,12 @@ npm install aws ec2 create-default-vpc ``` -> **NOTE:** *You may see the following error if the default VPC already exists: `An error occurred (DefaultVpcAlreadyExists) when calling the CreateDefaultVpc operation: A Default VPC already exists for this account in this region.`. That means you can just continue with the following steps.* +::: note -> **NOTE:** *The default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES`* +You might see the following error if the default VPC already exists: `An error occurred (DefaultVpcAlreadyExists) when calling the CreateDefaultVpc operation: A Default VPC already exists for this account in this region.`. That means you can just continue with the following steps.* + +The default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES` +::: 3. Configure your Node Runners Ethereum blueprint deployment From 65ff1a49cecdd7eb07b8fc358f84bb7fe7df502f Mon Sep 17 00:00:00 2001 From: Joan E <153745173+joaniefromtheblock@users.noreply.github.com> Date: Tue, 29 Oct 2024 15:49:57 -0400 Subject: [PATCH 4/5] copy edits Signed-off-by: Joan E <153745173+joaniefromtheblock@users.noreply.github.com> --- docs/public-networks/how-to/deploy-besu-teku | 136 ++++++++++++------- 1 file changed, 85 insertions(+), 51 deletions(-) diff --git a/docs/public-networks/how-to/deploy-besu-teku b/docs/public-networks/how-to/deploy-besu-teku index ed4badc53e1..ef4e2c90e18 100644 --- a/docs/public-networks/how-to/deploy-besu-teku +++ b/docs/public-networks/how-to/deploy-besu-teku @@ -1,29 +1,44 @@ --- -title: Deploy Besu and Teku Ethereum nodes using AWS node runners +title: AWS Node Runners description: Configure Ethereum nodes with the execution/consensus layer client combination using AWS blockchain node runners. --- -## Architecture +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# AWS Ethereum node deployment + +[AWS Blockchain Node Runners (Node Runners)](https://aws-samples.github.io/aws-blockchain-node-runners/docs/intro) are an open-source initiative aimed at simplifying the deployment of self-managed blockchain nodes on AWS using vetted deployment blueprints and infrastructure configurations. +AWS Blockchain Node Runners solves common challenges in architecting and deploying blockchain nodes on AWS. +It helps users identify optimal configurations for specific protocol clients -[AWS Blockchain Node Runners (Node Runners)](https://aws-samples.github.io/aws-blockchain-node-runners/docs/intro) are an open-source initiative aimed at simplifying the deployment of self-managed blockchain nodes on AWS using vetted deployment blueprints and infrastructure configurations. Node Runners is designed to solve for the common challenges customers face in architecting and deploying blockchain nodes on AWS, such as identifying the optimal configurations for each specific blockchain protocol’s node client. -This blueprint has two configuration options for running Ethereum nodes and supports several Ethereum client combinations. You can set up a single JSON RPC node or multiple nodes in highly-available setup using the instructions below. +This supports several Ethereum client combinations and offers two configuration options: + +- [Single JSON-RPC node setup for development and testing](#single-rpc-node-setup) +- [Multiple nodes in a highly-available setup for production environments](#highly-available-setup) + +## Architecture ### Single RPC node setup ![Architecture-PoC](../docs/public-networks/how-to/89571298-F580-487E-BAEF-1CAC3B44545B.png) -This setup is for small scale PoC or development environments. It deploys a single EC2 instance with both consensus and execution clients. The RPC port is exposed only to internal IP range of the VPC, while P2P ports allow external access to keep the clients synced. +This setup is for small scale proof of concept (PoC) or development environments. +It deploys a single EC2 instance with both consensus and execution clients. +The RPC port is exposed only to internal IP range of the VPC, while P2P ports allow external access to keep the clients synced. ### Highly available setup ![Architecture](../docs/public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png) -1. An ongoing data synchronization process is configured with nodes in the Ethereum network with a sync node and RPC nodes. -1. The sync node is used to create a copy of node's state data in Amazon S3 bucket. -1. When new RPC nodes are provisioned, they copy state data from Amazon S3 bucket to speed up the initial sync process. -1. Applications and smart contract development tools access highly available RPC nodes behind the Application Load Balancer. +1. The sync node synchronizes data continuously with the Ethereum network. +1. The sync node copies node state data to an Amazon S3 bucket. +1. New RPC nodes copy state data from the Amazon S3 bucket to accelerate their initial sync. +1. The Application Load Balancer routes application and smart contract development tool requests to available RPC nodes. -## Well-Architected +### Architecture checklist -This is the Well-Architected checklist for Ethereum nodes implementation of the AWS Blockchain Node Runner app. This checklist takes into account questions from the [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/) which are relevant to this workload. Please feel free to add more checks from the framework if required for your workload. +The following is a checklist for Ethereum nodes implementation of the AWS Blockchain Node Runner. +This checklist takes into account questions from the [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/) which are relevant to this workload. +You can add more checks from the framework if required for your workload. | Pillar | Control | Question/Check | Remarks | |:------------------------|:----------------------------------|:---------------------------------------------------------------------------------|:-----------------| @@ -49,17 +64,25 @@ This is the Well-Architected checklist for Ethereum nodes implementation of the | Sustainability | Hardware & services | Select most efficient hardware for your workload | This solution uses AWS Graviton-based Amazon EC2 instances which offer the best performance per watt of energy use in Amazon EC2. | -## Solution Walkthrough +## Deploy and manage Besu and Teku Ethereum nodes on AWS + +### 1. Configure the AWS CloudShell -### Open AWS CloudShell +::: note -To begin, ensure you login to your AWS account with permissions to create and modify resources in IAM, EC2, EBS, VPC, S3, KMS, and Secrets Manager. +In this tutorial you'll set all major configuration through environment variables, but you can also modify parameters in `config/config.ts` file. -From the AWS Management Console, open the [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html), a web-based shell environment. If unfamiliar, review the [2-minute YouTube video](https://youtu.be/fz4rbjRaiQM) for an overview and check out [CloudShell with VPC environment](https://docs.aws.amazon.com/cloudshell/latest/userguide/creating-vpc-environment.html) that we'll use to test nodes API from internal IP address space. +::: -Once ready, you can run the commands to deploy and test blueprints in the CloudShell. +#### 1.1 Log into AWS -### Clone this repository and install dependencies +Log in to your AWS account with permissions to create and modify resources in IAM, EC2, EBS, VPC, S3, KMS, and Secrets Manager. +From the AWS Management Console, open the [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html), a web-based shell environment. \ +For more information, see the [overview](https://youtu.be/fz4rbjRaiQM) on [CloudShell with VPC environment](https://docs.aws.amazon.com/cloudshell/latest/userguide/creating-vpc-environment.html), which you'll use to test nodes API from internal IP address space. + +#### 1.2 Install and configure dependencies + +To deploy and test blueprints in the CloudShell, clone the following repository and install dependencies: ```bash git clone https://github.com/aws-samples/aws-blockchain-node-runners.git @@ -67,51 +90,57 @@ cd aws-blockchain-node-runners npm install ``` -::: note - -In this tutorial we will set all major configuration through environment variables, but you also can modify parameters in `config/config.ts`.* - -::: - -### Prepare to deploy nodes - -1. Make sure you are in the root directory of the cloned repository +### 2. Prepare to deploy nodes -2. If you have deleted or don't have the default VPC, create default VPC +1. Ensure you are in the root directory of the cloned repository. -```bash -aws ec2 create-default-vpc -``` +2. If you have deleted or don't have the default VPC, create default VPC: -::: note + ```bash + aws ec2 create-default-vpc + ``` -You might see the following error if the default VPC already exists: `An error occurred (DefaultVpcAlreadyExists) when calling the CreateDefaultVpc operation: A Default VPC already exists for this account in this region.`. That means you can just continue with the following steps.* + ::: note + + You might see the following error if the default VPC already exists: + + ```bash + An error occurred (DefaultVpcAlreadyExists) when calling the CreateDefaultVpc operation: A Default VPC already exists for this account in this region. + ``` + This means that he default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES`. + + You can continue with the following steps. + + ::: -The default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES` -::: +3. Configure your Node Runners Ethereum blueprint deployment. +To specify the Ethereum client combination you want to deploy, create your own copy of `.env` file and edit it using your preferred text editor. +The contents of your file for a Besu or Teku node deployment are the following, which uses a sample config from the repository: -3. Configure your Node Runners Ethereum blueprint deployment + ```bash + # Make sure you are in aws-blockchain-node-runners/lib/ethereum + cd lib/ethereum + pwd + cp ./sample-configs/.env-besu-teku .env + nano .env + ``` -To specify the Ethereum client combination you wish to deploy, create your own copy of `.env` file and edit it using your preferred text editor. The contents of your file for a Besu / Teku node deployment is as follows, which uses a sample config from the repository: -```bash -# Make sure you are in aws-blockchain-node-runners/lib/ethereum -cd lib/ethereum -pwd -cp ./sample-configs/.env-besu-teku .env -nano .env -``` -> **NOTE:** *You can find more examples inside the `sample-configs` directory, which illustrate other Ethereum client combinations.* + :::note + + You can find more examples inside the `sample-configs` directory, which illustrates other Ethereum client combinations. + + ::: 4. Deploy common components such as IAM role, and Amazon S3 bucket to store data snapshots -```bash -pwd -# Make sure you are in aws-blockchain-node-runners/lib/ethereum -npx cdk deploy eth-common -``` + ```bash + pwd + # Ensure you are in aws-blockchain-node-runners/lib/ethereum + npx cdk deploy eth-common + ``` -### Option 1: Single RPC Node +#### Single RPC Node 1. Deploy Single RPC Node @@ -120,7 +149,12 @@ pwd # Make sure you are in aws-blockchain-node-runners/lib/ethereum npx cdk deploy eth-single-node --json --outputs-file single-node-deploy.json ``` -> **NOTE:** *The default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES`* + +:::note + +The default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES` + +::: 2. After starting the node you need to wait for the inital syncronization process to finish. It may take from half a day to about 6-10 days depending on the client combination and the state of the network. You can use Amazon CloudWatch to track the progress. There is a script that publishes CloudWatch metrics every 5 minutes, where you can watch `sync distance` for consensus client and `blocks behind` for execution client. When the node is fully synced those two metrics shold show 0. To see them: From 9a23aa635cfc1923655d48aab2591858da0808c5 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Fri, 15 Nov 2024 17:39:26 -0800 Subject: [PATCH 5/5] Edit content Signed-off-by: Alexandra Tran --- .../images/aws-node-runners-1.png} | Bin .../images/aws-node-runners-2.png} | Bin .../how-to/bonsai-limit-trie-logs.md | 2 +- .../how-to/deploy-aws-node-runners.md | 424 ++++++++++++++++++ docs/public-networks/how-to/deploy-besu-teku | 273 ----------- .../how-to/develop/_category_.json | 2 +- .../how-to/troubleshoot/_category_.json | 2 +- docs/public-networks/how-to/upgrade-node.md | 2 +- 8 files changed, 428 insertions(+), 277 deletions(-) rename docs/{public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png => assets/images/aws-node-runners-1.png} (100%) rename docs/{public-networks/how-to/89571298-F580-487E-BAEF-1CAC3B44545B.png => assets/images/aws-node-runners-2.png} (100%) create mode 100644 docs/public-networks/how-to/deploy-aws-node-runners.md delete mode 100644 docs/public-networks/how-to/deploy-besu-teku diff --git a/docs/public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png b/docs/assets/images/aws-node-runners-1.png similarity index 100% rename from docs/public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png rename to docs/assets/images/aws-node-runners-1.png diff --git a/docs/public-networks/how-to/89571298-F580-487E-BAEF-1CAC3B44545B.png b/docs/assets/images/aws-node-runners-2.png similarity index 100% rename from docs/public-networks/how-to/89571298-F580-487E-BAEF-1CAC3B44545B.png rename to docs/assets/images/aws-node-runners-2.png diff --git a/docs/public-networks/how-to/bonsai-limit-trie-logs.md b/docs/public-networks/how-to/bonsai-limit-trie-logs.md index eb73f85b36b..f3a10e33cfe 100644 --- a/docs/public-networks/how-to/bonsai-limit-trie-logs.md +++ b/docs/public-networks/how-to/bonsai-limit-trie-logs.md @@ -1,6 +1,6 @@ --- title: Reduce storage for Bonsai Tries -sidebar_position: 12 +sidebar_position: 9 description: Reduce the size of your database when using Bonsai Tries tags: - public networks diff --git a/docs/public-networks/how-to/deploy-aws-node-runners.md b/docs/public-networks/how-to/deploy-aws-node-runners.md new file mode 100644 index 00000000000..7ceaa1c1cfd --- /dev/null +++ b/docs/public-networks/how-to/deploy-aws-node-runners.md @@ -0,0 +1,424 @@ +--- +sidebar_position: 11 +description: Configure Ethereum nodes using AWS Blockchain Node Runners. +toc_max_heading_level: 3 +tags: + - Public networks +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Deploy AWS Node Runners + +[AWS Blockchain Node Runners](https://aws-samples.github.io/aws-blockchain-node-runners/docs/intro) +is an open-source initiative aimed at simplifying the deployment of self-managed blockchain nodes +on AWS using vetted deployment blueprints and infrastructure configurations. +AWS Node Runners solves common challenges in architecting and deploying blockchain nodes on AWS, +helping users identify optimal configurations for specific protocol clients. + +This page walks you through the AWS Node Runners [architecture](#architecture), and how to +[deploy Besu and Teku on AWS](#deploy-aws-node-runners). + +## Architecture + +AWS Blockchain Node Runners supports several Ethereum client combinations and offers two +configuration options: a single node setup for development environments, and a highly available +multi-node setup for production environments. +The following diagrams illustrate the high level architecture of these setups. + +### Single RPC node setup + +
+

+ +![Architecture-PoC](../../assets/images/aws-node-runners-1.png) + +

+
+ +This single node setup is for small-scale development environments. +It deploys a single EC2 instance with both consensus and execution clients. +The RPC port is exposed only to internal IP range of the VPC, while P2P ports allow external access to keep the clients synced. + +### Highly available setup + +
+

+ +![Architecture](../../assets/images/aws-node-runners-2.png) + +

+
+ +In this highly available, multiple node setup: + +1. The sync node synchronizes data continuously with the Ethereum network. +1. The sync node copies node state data to an Amazon S3 bucket. +1. New RPC nodes copy state data from the Amazon S3 bucket to accelerate their initial sync. +1. The Application Load Balancer routes application and smart contract development tool requests to available RPC nodes. + +### Architecture checklist + +The following is a checklist for an implementation of the AWS Blockchain Node Runners. +This checklist takes into account questions from the [AWS Well-Architected framework](https://aws.amazon.com/architecture/well-architected/) +that are relevant to this workload. +You can add more checks from the framework if required for your workload. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PillarControlQuestion/CheckNotes
SecurityNetwork protectionAre there unnecessary open ports in security groups?The Erigon snap sync port (`42069`) remains open for non-Erigon clients.
Traffic inspectionAWS WAF can be implemented for traffic inspection. Additional charges will apply.
Compute protectionReduce attack surfaceThis solution uses Amazon Linux 2 AMI. You can run hardening scripts on it.
Enable users to perform actions at a distanceThis solution uses AWS Systems Manager for terminal sessions, not SSH ports.
Data protection at restUse encrypted Amazon Elastic Block Store (Amazon EBS) volumesThis solution uses encrypted Amazon EBS volumes.
Use encrypted Amazon Simple Storage Service (Amazon S3) bucketsThis solution uses Amazon S3 managed keys (SSE-S3) encryption.
Data protection in transitUse TLSThe AWS Application Load Balancer currently uses an HTTP listener. To use TLS, create an HTTPS listener with a self-signed certificate.
Authorization and access controlUse instance profile with Amazon Elastic Compute Cloud (Amazon EC2) instancesThis solution uses AWS Identity and Access Management (AWS IAM) role instead of IAM user.
Follow the principle of least privilege accessIn the sync node, the root user is not used (it uses the special user `ethereum` instead).
Application securitySecurity-focused development practicescdk-nag is used with appropriate suppressions.
Cost optimizationUse cost-effective resourcesAWS Graviton-based Amazon EC2 instances are used, which are cost-effective compared to Intel/AMD instances.
Estimate costsOne sync node with m7g.2xlarge for geth-Lighthouse configuration (2048 GB SSD) will cost around $430 per month in the US East region. Additional charges apply if you deploy RPC nodes with a load balancer.
ReliabilityWithstand component failuresThis solution uses AWS Application Load Balancer with RPC nodes for high availability. If the sync node fails, Amazon S3 backup can be used to reinstate the nodes.
How is data backed up?Data is backed up to Amazon S3 using the s5cmd tool.
How are workload resources monitored?Resources are monitored using Amazon CloudWatch dashboards. Amazon CloudWatch custom metrics are pushed via CloudWatch Agent.
Performance efficiencyHow is the compute solution selected?The solution is selected based on best price-performance, that is, AWS Graviton-based Amazon EC2 instances.
How is the storage solution selected?The solution is selected based on best price-performance, that is, gp3 Amazon EBS volumes with optimal IOPS and throughput.
How is the architecture selected?The s5cmd tool is used for Amazon S3 uploads/downloads because it gives better price-performance compared to Amazon EBS snapshots.
Operational excellenceHow is health of the workload determined?Workload health is determined via AWS Application Load Balancer Target Group Health Checks, on port `8545`.
SustainabilitySelect the most efficient hardware for your workloadThis solution uses AWS Graviton-based Amazon EC2 instances, which offer the best performance per watt of energy use in Amazon EC2.
+ +## Deploy Besu and Teku on AWS + +:::note +In this guide, you'll set all major configuration through environment variables, but you can also +modify parameters in the `config/config.ts` file. +::: + +### 1. Configure the AWS CloudShell + +#### 1.1. Log into AWS + +Log in to your [AWS account](https://aws.amazon.com/) with permissions to create and modify +resources in IAM, EC2, EBS, VPC, S3, KMS, and Secrets Manager. +From the AWS Management Console, open the [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html), +a web-based shell environment. +For more information, see [this demo](https://youtu.be/fz4rbjRaiQM) on +[CloudShell with VPC environment](https://docs.aws.amazon.com/cloudshell/latest/userguide/creating-vpc-environment.html), +which you'll use to test APIs from an internal IP address space. + +#### 1.2. Install dependencies + +To deploy and test blueprints in the CloudShell, clone the following repository and install dependencies: + +```bash +git clone https://github.com/aws-samples/aws-blockchain-node-runners.git +cd aws-blockchain-node-runners +npm install +``` + +### 2. Prepare to deploy nodes + +In the root directory of your project: + +1. If you have deleted or don't have the default VPC, create a default VPC: + + ```bash + aws ec2 create-default-vpc + ``` + + :::note + You might see the following error if the default VPC already exists: + + ```bash + An error occurred (DefaultVpcAlreadyExists) when calling the CreateDefaultVpc operation: A Default VPC already exists for this account in this region. + ``` + + This means that he default VPC must have at least two public subnets in different Availability + Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES`. + ::: + +1. Configure your Node Runners Ethereum blueprint deployment. + To specify the Ethereum client combination you want to deploy, create your own copy of the `.env` + file and edit it using your preferred text editor. + The following example uses a sample configuration from the repository for a Besu and Teku node deployment: + + ```bash + # Make sure you are in aws-blockchain-node-runners/lib/ethereum + cd lib/ethereum + pwd + cp ./sample-configs/.env-besu-teku .env + nano .env + ``` + + :::note + You can find more examples for other Ethereum client combinations in the `sample-configs` directory. + ::: + +1. Deploy common components, such as IAM role and Amazon S3 bucket to store data snapshots: + + ```bash + pwd + # Make sure you are in aws-blockchain-node-runners/lib/ethereum + npx cdk deploy eth-common + ``` + +### 3. Deploy nodes + +#### 3.1. (Option 1) Single RPC node + +In a single RPC node setup: + +1. Deploy the node: + + ```bash + pwd + # Make sure you are in aws-blockchain-node-runners/lib/ethereum + npx cdk deploy eth-single-node --json --outputs-file single-node-deploy.json + ``` + + :::note + The default VPC must have at least two public subnets in different Availability Zones, and the + public subnets must set `Auto-assign public IPv4 address` to `YES`. + ::: + +1. After starting the node, wait for the initial synchronization process to finish. + It can take from half a day to approximately 6-10 days, depending on the client combination and + the network state. + You can use Amazon CloudWatch to track the progress, which publishes metrics every five minutes. + Watch `sync distance` for the consensus client, and `blocks behind` for the execution client. + When the node is fully synced, those two metrics should be `0`. + To see them: + + - Navigate to [CloudWatch service](https://console.aws.amazon.com/cloudwatch/) (make sure you are + in the region you have specified for `AWS_REGION`). + - Open `Dashboards` and select `eth-sync-node-` from the list of dashboards. + +1. Once the initial synchronization is done, you can access the RPC API of that node from within the + same VPC. + The RPC port is not exposed to the Internet. + Turn the following query against the private IP of the single RPC node you deployed: + + ```bash + INSTANCE_ID=$(cat single-node-deploy.json | jq -r '..|.node-instance-id? | select(. != null)') + NODE_INTERNAL_IP=$(aws ec2 describe-instances --instance-ids $INSTANCE_ID --query 'Reservations[*].Instances[*].PrivateIpAddress' --output text) + echo "NODE_INTERNAL_IP=$NODE_INTERNAL_IP" + ``` + + Copy the output from the last `echo` command with `NODE_INTERNAL_IP=` and open + [CloudShell tab with VPC environment](https://docs.aws.amazon.com/cloudshell/latest/userguide/creating-vpc-environment.html) + to access the internal IP address space. + Paste `NODE_INTERNAL_IP=` into the new CloudShell tab. + Then, query the API: + + ``` bash + # IMPORTANT: Run from CloudShell VPC environment tab + # This queries the token balance of a Beacon deposit contract: https://etherscan.io/address/0x00000000219ab540356cbb839cbe05303d7705fa + curl http://$NODE_INTERNAL_IP:8545 -X POST -H "Content-Type: application/json" \ + --data '{"method":"eth_getBalance","params":["0x00000000219ab540356cBB839Cbe05303d7705Fa", "latest"],"id":1,"jsonrpc":"2.0"}' + ``` + + The result should look like the following (the actual balance might change): + + ```javascript + {"jsonrpc":"2.0","id":1,"result":"0xe791d050f91d9949d344d"} + ``` + +#### 3.2. (Option 2) Highly available RPC nodes + +In a highly available multi-node setup: + +1. Deploy the sync node: + + ```bash + pwd + # Make sure you are in aws-blockchain-node-runners/lib/ethereum + npx cdk deploy eth-sync-node --json --outputs-file sync-node-deploy.json + ``` + + :::note + The default VPC must have at least two public subnets in different Availability Zones, and the + public subnets must set `Auto-assign public IPv4 address` to `YES`. + ::: + +1. After starting the node, wait for the initial synchronization process to finish. + It can take from half a day to approximately 6-10 days, depending on the client combination and + the network state. + You can use Amazon CloudWatch to track the progress, which publishes metrics every five minutes. + Watch `sync distance` for the consensus client, and `blocks behind` for the execution client. + When the node is fully synced, those two metrics should be `0`. + To see them: + + - Navigate to [CloudWatch service](https://console.aws.amazon.com/cloudwatch/) (make sure you are + in the region you have specified for `AWS_REGION`). + - Open `Dashboards` and select `eth-sync-node-` from the list of dashboards. + + Once the synchronization process is over, the script automatically stops both clients and copies + all the contents of the `/data` directory to your snapshot S3 bucket. + That can take from 30 minutes to approximately 2 hours. + During the process, you will see lower CPU and RAM usage, but high data disc throughput and + outbound network traffic. + The script automatically starts the clients after the process is done. + + :::note + The snapshot backup process automatically runs every day at midnight of the time zone were the + sync node runs. + To change the schedule, modify `crontab` of the root user on the node's EC2 instance. + ::: + +1. Configure and deploy two RPC nodes: + + ```bash + pwd + # Make sure you are in aws-blockchain-node-runners/lib/ethereum + npx cdk deploy eth-rpc-nodes --json --outputs-file rpc-node-deploy.json + ``` + +1. Give the new RPC nodes approximately 30 minutes to initialize, then run the following query + against the load balancer behind the RPC node created: + + ```bash + export ETH_RPC_ABL_URL=$(cat rpc-node-deploy.json | jq -r '..|.alburl? | select(. != null)') + echo ETH_RPC_ABL_URL=$ETH_RPC_ABL_URL + ``` + + ```bash + # IMPORTANT: Run from CloudShell VPC environment tab + # We query token balance of Beacon deposit contract: https://etherscan.io/address/0x00000000219ab540356cbb839cbe05303d7705fa + curl http://$ETH_RPC_ABL_URL:8545 -X POST -H "Content-Type: application/json" \ + --data '{"method":"eth_getBalance","params":["0x00000000219ab540356cBB839Cbe05303d7705Fa", "latest"],"id":1,"jsonrpc":"2.0"}' + ``` + + The result should look like the following (the actual balance might change): + + ```javascript + {"jsonrpc":"2.0","id":1,"result":"0xe791d050f91d9949d344d"} + ``` + + If the nodes are still starting and catching up with the chain, you will see the following response: + + ```HTML + + 503 Service Temporarily Unavailable + +

503 Service Temporarily Unavailable

+ + ``` + + :::note + By default and for security reasons, the load balancer is available only from within the default + VPC in the region where it is deployed. + It is not available from the Internet and is not open for external connections. + Before opening it up, protect your RPC APIs. + ::: + +### 4. Clear and undeploy nodes + +To clear and undeploy the RPC nodes, sync nodes, and common components, use the following commands: + +```bash +# Set the AWS account ID and region in case the local .env file is lost. +export AWS_ACCOUNT_ID= +export AWS_REGION= + +pwd +# Make sure you are in aws-blockchain-node-runners/lib/ethereum. + +# Destroy the single RPC node. +cdk destroy eth-single-node + +# Destroy multiple RPC nodes. +cdk destroy eth-rpc-nodes + +# Destroy the sync node. +cdk destroy eth-sync-node + +# You need to manually delete an s3 bucket with a name similar to 'eth-snapshots-$accountid-eth-nodes-common' +# on the console: +# 1. Empty the bucket +# 2. Delete the bucket +# 3. Execute and delete all common components like IAM role and Security Group +cdk destroy eth-common +``` diff --git a/docs/public-networks/how-to/deploy-besu-teku b/docs/public-networks/how-to/deploy-besu-teku deleted file mode 100644 index ef4e2c90e18..00000000000 --- a/docs/public-networks/how-to/deploy-besu-teku +++ /dev/null @@ -1,273 +0,0 @@ ---- -title: AWS Node Runners -description: Configure Ethereum nodes with the execution/consensus layer client combination using AWS blockchain node runners. ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# AWS Ethereum node deployment - -[AWS Blockchain Node Runners (Node Runners)](https://aws-samples.github.io/aws-blockchain-node-runners/docs/intro) are an open-source initiative aimed at simplifying the deployment of self-managed blockchain nodes on AWS using vetted deployment blueprints and infrastructure configurations. -AWS Blockchain Node Runners solves common challenges in architecting and deploying blockchain nodes on AWS. -It helps users identify optimal configurations for specific protocol clients - -This supports several Ethereum client combinations and offers two configuration options: - -- [Single JSON-RPC node setup for development and testing](#single-rpc-node-setup) -- [Multiple nodes in a highly-available setup for production environments](#highly-available-setup) - -## Architecture - -### Single RPC node setup -![Architecture-PoC](../docs/public-networks/how-to/89571298-F580-487E-BAEF-1CAC3B44545B.png) - -This setup is for small scale proof of concept (PoC) or development environments. -It deploys a single EC2 instance with both consensus and execution clients. -The RPC port is exposed only to internal IP range of the VPC, while P2P ports allow external access to keep the clients synced. - -### Highly available setup -![Architecture](../docs/public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png) - -1. The sync node synchronizes data continuously with the Ethereum network. -1. The sync node copies node state data to an Amazon S3 bucket. -1. New RPC nodes copy state data from the Amazon S3 bucket to accelerate their initial sync. -1. The Application Load Balancer routes application and smart contract development tool requests to available RPC nodes. - -### Architecture checklist - -The following is a checklist for Ethereum nodes implementation of the AWS Blockchain Node Runner. -This checklist takes into account questions from the [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/) which are relevant to this workload. -You can add more checks from the framework if required for your workload. - -| Pillar | Control | Question/Check | Remarks | -|:------------------------|:----------------------------------|:---------------------------------------------------------------------------------|:-----------------| -| Security | Network protection | Are there unnecessary open ports in security groups? | Please note that Erigon snap sync port remains open for non-erigon clients, i.e. Port 42069 (TCP/UDP). | -| | | Traffic inspection | AWS WAF could be implemented for traffic inspection. Additional charges will apply. | -| | Compute protection | Reduce attack surface | This solution uses Amazon Linux 2 AMI. You may choose to run hardening scripts on it. | -| | | Enable people to perform actions at a distance | This solution uses AWS Systems Manager for terminal session, not ssh ports. | -| | Data protection at rest | Use encrypted Amazon Elastic Block Store (Amazon EBS) volumes | This solution uses encrypted Amazon EBS volumes. | -| | | Use encrypted Amazon Simple Storage Service (Amazon S3) buckets | This solution uses Amazon S3 managed keys (SSE-S3) encryption. | -| | Data protection in transit | Use TLS | The AWS Application Load balancer currently uses HTTP listener. Create HTTPS listener with self signed certificate if TLS is desired. | -| | Authorization and access control | Use instance profile with Amazon Elastic Compute Cloud (Amazon EC2) instances | This solution uses AWS Identity and Access Management (AWS IAM) role instead of IAM user. | -| | | Following principle of least privilege access | In sync node, root user is not used (using special user "ethereum" instead"). | -| | Application security | Security focused development practices | cdk-nag is being used with appropriate suppressions. | -| Cost optimization | Service selection | Use cost effective resources | AWS Graviton-based Amazon EC2 instances are being used, which are cost effective compared to Intel/AMD instances. | -| | Cost awareness | Estimate costs | One sync node with m7g.2xlarge for geth-lighthouse configuration (2048GB ssd) will cost around US$430 per month in the US East (N. Virginia) region. Additional charges will apply if you choose to deploy RPC nodes with load balancer. | -| Reliability | Resiliency implementation | Withstand component failures | This solution uses AWS Application Load Balancer with RPC nodes for high availability. If sync node fails, Amazon S3 backup can be used to reinstate the nodes. | -| | Data backup | How is data backed up? | Data is backed up to Amazon S3 using [s5cmd](https://github.com/peak/s5cmd) tool. | -| | Resource monitoring | How are workload resources monitored? | Resources are being monitored using Amazon CloudWatch dashboards. Amazon CloudWatch custom metrics are being pushed via CloudWatch Agent. | -| Performance efficiency | Compute selection | How is compute solution selected? | Compute solution is selected based on best price-performance, i.e. AWS Graviton-based Amazon EC2 instances. | -| | Storage selection | How is storage solution selected? | Storage solution is selected based on best price-performance, i.e. gp3 Amazon EBS volumes with optimal IOPS and throughput. | -| | Architecture selection | How is the best performance architecture selected? | s5cmd tool has been chosen for Amazon S3 uploads/downloads because it gives better price-performance compared to Amazon EBS snapshots (including Fast Snapshot Restore, which can be expensive). | -| Operational excellence | Workload health | How is health of workload determined? | Health of workload is determined via AWS Application Load Balancer Target Group Health Checks, on port 8545. | -| Sustainability | Hardware & services | Select most efficient hardware for your workload | This solution uses AWS Graviton-based Amazon EC2 instances which offer the best performance per watt of energy use in Amazon EC2. | - - -## Deploy and manage Besu and Teku Ethereum nodes on AWS - -### 1. Configure the AWS CloudShell - -::: note - -In this tutorial you'll set all major configuration through environment variables, but you can also modify parameters in `config/config.ts` file. - -::: - -#### 1.1 Log into AWS - -Log in to your AWS account with permissions to create and modify resources in IAM, EC2, EBS, VPC, S3, KMS, and Secrets Manager. -From the AWS Management Console, open the [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html), a web-based shell environment. \ -For more information, see the [overview](https://youtu.be/fz4rbjRaiQM) on [CloudShell with VPC environment](https://docs.aws.amazon.com/cloudshell/latest/userguide/creating-vpc-environment.html), which you'll use to test nodes API from internal IP address space. - -#### 1.2 Install and configure dependencies - -To deploy and test blueprints in the CloudShell, clone the following repository and install dependencies: - -```bash -git clone https://github.com/aws-samples/aws-blockchain-node-runners.git -cd aws-blockchain-node-runners -npm install -``` - -### 2. Prepare to deploy nodes - -1. Ensure you are in the root directory of the cloned repository. - -2. If you have deleted or don't have the default VPC, create default VPC: - - ```bash - aws ec2 create-default-vpc - ``` - - ::: note - - You might see the following error if the default VPC already exists: - - ```bash - An error occurred (DefaultVpcAlreadyExists) when calling the CreateDefaultVpc operation: A Default VPC already exists for this account in this region. - ``` - This means that he default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES`. - - You can continue with the following steps. - - ::: - -3. Configure your Node Runners Ethereum blueprint deployment. -To specify the Ethereum client combination you want to deploy, create your own copy of `.env` file and edit it using your preferred text editor. -The contents of your file for a Besu or Teku node deployment are the following, which uses a sample config from the repository: - - ```bash - # Make sure you are in aws-blockchain-node-runners/lib/ethereum - cd lib/ethereum - pwd - cp ./sample-configs/.env-besu-teku .env - nano .env - ``` - - :::note - - You can find more examples inside the `sample-configs` directory, which illustrates other Ethereum client combinations. - - ::: - - -4. Deploy common components such as IAM role, and Amazon S3 bucket to store data snapshots - - ```bash - pwd - # Ensure you are in aws-blockchain-node-runners/lib/ethereum - npx cdk deploy eth-common - ``` - -#### Single RPC Node - -1. Deploy Single RPC Node - -```bash -pwd -# Make sure you are in aws-blockchain-node-runners/lib/ethereum -npx cdk deploy eth-single-node --json --outputs-file single-node-deploy.json -``` - -:::note - -The default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES` - -::: - -2. After starting the node you need to wait for the inital syncronization process to finish. It may take from half a day to about 6-10 days depending on the client combination and the state of the network. You can use Amazon CloudWatch to track the progress. There is a script that publishes CloudWatch metrics every 5 minutes, where you can watch `sync distance` for consensus client and `blocks behind` for execution client. When the node is fully synced those two metrics shold show 0. To see them: - - - Navigate to [CloudWatch service](https://console.aws.amazon.com/cloudwatch/) (make sure you are in the region you have specified for `AWS_REGION`) - - Open `Dashboards` and select `eth-sync-node-` from the list of dashboards. - -4. Once the initial synchronization is done, you should be able to access the RPC API of that node from within the same VPC. The RPC port is not exposed to the Internet. Turn the following query against the private IP of the single RPC node you deployed: - -```bash -INSTANCE_ID=$(cat single-node-deploy.json | jq -r '..|.node-instance-id? | select(. != null)') -NODE_INTERNAL_IP=$(aws ec2 describe-instances --instance-ids $INSTANCE_ID --query 'Reservations[*].Instances[*].PrivateIpAddress' --output text) -echo "NODE_INTERNAL_IP=$NODE_INTERNAL_IP" -``` - -Copy output from the last `echo` command with `NODE_INTERNAL_IP=` and open [CloudShell tab with VPC environment](https://docs.aws.amazon.com/cloudshell/latest/userguide/creating-vpc-environment.html) to access internal IP address space. Paste `NODE_INTERNAL_IP=` into the new CloudShell tab. Then query the API: - -``` bash -# IMPORTANT: Run from CloudShell VPC environment tab -# We query token balance of Beacon deposit contract: https://etherscan.io/address/0x00000000219ab540356cbb839cbe05303d7705fa -curl http://$NODE_INTERNAL_IP:8545 -X POST -H "Content-Type: application/json" \ ---data '{"method":"eth_getBalance","params":["0x00000000219ab540356cBB839Cbe05303d7705Fa", "latest"],"id":1,"jsonrpc":"2.0"}' -``` - -The result should be like this (the actual balance might change): - -```javascript -{"jsonrpc":"2.0","id":1,"result":"0xe791d050f91d9949d344d"} -``` - -### Option 2: Highly Available RPC Nodes - -1. Deploy Sync Node - -```bash -pwd -# Make sure you are in aws-blockchain-node-runners/lib/ethereum -npx cdk deploy eth-sync-node --json --outputs-file sync-node-deploy.json -``` -**NOTE:** *The default VPC must have at least two public subnets in different Availability Zones, and public subnet must set `Auto-assign public IPv4 address` to `YES`* - -2. After starting the node you need to wait for the inital syncronization process to finish. It may take from half a day to about 6-10 days depending on the client combination and the state of the network. You can use Amazon CloudWatch to track the progress. There is a script that publishes CloudWatch metrics every 5 minutes, where you can watch `sync distance` for consensus client and `blocks behind` for execution client. When the node is fully synced those two metrics shold show 0. To see them: - - - Navigate to [CloudWatch service](https://console.aws.amazon.com/cloudwatch/) (make sure you are in the region you have specified for `AWS_REGION`) - - Open `Dashboards` and select `eth-sync-node-` from the list of dashboards. - -Once synchronization process is over, the script will automatically stop both clients and copy all the contents of the `/data` directory to your snapshot S3 bucket. That may take from 30 minutes to about 2 hours. During the process on the dashboard you will see lower CPU and RAM utilization but high data disc throughput and outbound network traffic. The script will automatically start the clients after the process is done. - -> **Note:** *The snapshot backup process will automatically run every day at midnight of the time zone were the sync node runs. To change the schedule, modify `crontab` of the root user on the node's EC2 instance.* - -3. Configure and deploy 2 RPC Nodes - -```bash -pwd -# Make sure you are in aws-blockchain-node-runners/lib/ethereum -npx cdk deploy eth-rpc-nodes --json --outputs-file rpc-node-deploy.json -``` - -4. Give the new RPC nodes about 30 minutes (up to 2 hours for Erigon(???)) to initialize and then run the following query against the load balancer behind the RPC node created - -```bash -export ETH_RPC_ABL_URL=$(cat rpc-node-deploy.json | jq -r '..|.alburl? | select(. != null)') -echo ETH_RPC_ABL_URL=$ETH_RPC_ABL_URL -``` - -```bash -# IMPORTANT: Run from CloudShell VPC environment tab -# We query token balance of Beacon deposit contract: https://etherscan.io/address/0x00000000219ab540356cbb839cbe05303d7705fa -curl http://$ETH_RPC_ABL_URL:8545 -X POST -H "Content-Type: application/json" \ - --data '{"method":"eth_getBalance","params":["0x00000000219ab540356cBB839Cbe05303d7705Fa", "latest"],"id":1,"jsonrpc":"2.0"}' -``` - -The result should be like this (the actual balance might change): - -```javascript -{"jsonrpc":"2.0","id":1,"result":"0xe791d050f91d9949d344d"} -``` - - If the nodes are still starting and catching up with the chain, you will see the following repsonse: - -```HTML - - 503 Service Temporarily Unavailable - -

503 Service Temporarily Unavailable

- -``` - -> **NOTE:** By default and for security reasons the load balancer is available only from within the default VPC in the region where it is deployed. It is not available from the Internet and is not open for external connections. Before opening it up please make sure you protect your RPC APIs. - -### Clearing up and undeploying everything - -Destroy RPC Nodes, Sync Nodes and Comon components - -```bash -# Setting the AWS account id and region in case local .env file is lost - export AWS_ACCOUNT_ID= - export AWS_REGION= - -pwd -# Make sure you are in aws-blockchain-node-runners/lib/ethereum - -# Destroy Single RPC Node -cdk destroy eth-single-node - -# Destroy RPC Nodes -cdk destroy eth-rpc-nodes - -# Destroy Sync Node -cdk destroy eth-sync-node - -# You need to manually delete an s3 bucket with a name similar to 'eth-snapshots-$accountid-eth-nodes-common' on the console,firstly empty the bucket,secondly delete the bucket,and then execute -# Delete all common components like IAM role and Security Group -cdk destroy eth-common -``` - -docs/public-networks/how-to/4F4D60BC-25D0-4BB1-AF24-DCC4BE139F15.png diff --git a/docs/public-networks/how-to/develop/_category_.json b/docs/public-networks/how-to/develop/_category_.json index 8c8a280b930..2d22b35f5bc 100644 --- a/docs/public-networks/how-to/develop/_category_.json +++ b/docs/public-networks/how-to/develop/_category_.json @@ -1,4 +1,4 @@ { "label": "Develop dapps", - "position": 9 + "position": 11 } diff --git a/docs/public-networks/how-to/troubleshoot/_category_.json b/docs/public-networks/how-to/troubleshoot/_category_.json index cf5f9653813..e5ec35957e9 100644 --- a/docs/public-networks/how-to/troubleshoot/_category_.json +++ b/docs/public-networks/how-to/troubleshoot/_category_.json @@ -1,4 +1,4 @@ { "label": "Troubleshoot", - "position": 12 + "position": 13 } diff --git a/docs/public-networks/how-to/upgrade-node.md b/docs/public-networks/how-to/upgrade-node.md index 4e33d3dce08..fb092180334 100644 --- a/docs/public-networks/how-to/upgrade-node.md +++ b/docs/public-networks/how-to/upgrade-node.md @@ -1,6 +1,6 @@ --- title: Upgrade Besu -sidebar_position: 11 +sidebar_position: 12 description: Upgrade your Besu node to a new version. tags: - public networks