diff --git a/lib/solana/lib/assets/node/node-base-rpc-template.sh b/lib/solana/lib/assets/node/node-base-rpc-template.sh index 20e39c99..072ea87a 100644 --- a/lib/solana/lib/assets/node/node-base-rpc-template.sh +++ b/lib/solana/lib/assets/node/node-base-rpc-template.sh @@ -24,7 +24,7 @@ __ENTRY_POINTS__ \ --full-rpc-api \ --rpc-port 8899 \ --gossip-port 8800 \ ---dynamic-port-range 8800-8814 \ +--dynamic-port-range 8800-8816 \ --private-rpc \ --rpc-bind-address $EC2_INTERNAL_IP \ --wal-recovery-mode skip_any_corrupted_record \ diff --git a/lib/solana/lib/assets/node/node-extended-rpc-template.sh b/lib/solana/lib/assets/node/node-extended-rpc-template.sh index 3a15666c..990020f7 100644 --- a/lib/solana/lib/assets/node/node-extended-rpc-template.sh +++ b/lib/solana/lib/assets/node/node-extended-rpc-template.sh @@ -24,7 +24,7 @@ __ENTRY_POINTS__ \ --full-rpc-api \ --rpc-port 8899 \ --gossip-port 8800 \ ---dynamic-port-range 8800-8814 \ +--dynamic-port-range 8800-8816 \ --private-rpc \ --rpc-bind-address $EC2_INTERNAL_IP \ --wal-recovery-mode skip_any_corrupted_record \ diff --git a/lib/solana/lib/constructs/node-security-group.ts b/lib/solana/lib/constructs/node-security-group.ts index a81897c2..4f084d8c 100644 --- a/lib/solana/lib/constructs/node-security-group.ts +++ b/lib/solana/lib/constructs/node-security-group.ts @@ -24,8 +24,8 @@ export interface NodeSecurityGroupConstructProps { }); // Public ports - sg.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcpRange(8800, 8814), "allow all TCP P2P protocols (gossip, turbine, repair, etc)"); - sg.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.udpRange(8800, 8814), "allow all UDP P2P protocols (gossip, turbine, repair, etc)"); + sg.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcpRange(8800, 8816), "allow all TCP P2P protocols (gossip, turbine, repair, etc)"); + sg.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.udpRange(8800, 8816), "allow all UDP P2P protocols (gossip, turbine, repair, etc)"); // Private ports restricted only to the VPC IP range sg.addIngressRule(ec2.Peer.ipv4(vpc.vpcCidrBlock), ec2.Port.tcp(8899), "allow internal RPC port HTTP (user access needs to be restricted. Allowed access only from internal IPs)"); diff --git a/lib/solana/sample-configs/.env-sample-extendedrpc-x86 b/lib/solana/sample-configs/.env-sample-extendedrpc-x86 index 9bd4d130..f6589b0f 100644 --- a/lib/solana/sample-configs/.env-sample-extendedrpc-x86 +++ b/lib/solana/sample-configs/.env-sample-extendedrpc-x86 @@ -11,18 +11,18 @@ SOLANA_CLUSTER="mainnet-beta" # All options: "mainnet-beta", "t SOLANA_NODE_CONFIGURATION="extendedrpc" # All options: "baserpc", "extendedrpc" SOLANA_VERSION="2.0.19" # Latest required version of Agave above 2.x. Check for latest Mainnet version https://github.com/anza-xyz/agave/releases -SOLANA_INSTANCE_TYPE="i7ie.18xlarge" +SOLANA_INSTANCE_TYPE="r7a.16xlarge" SOLANA_CPU_TYPE="x86_64" # All options: "x86_64", "ARM_64". IMPORTANT: Make sure the CPU type matches the instance type used # Data volume configuration -SOLANA_DATA_VOL_TYPE="instance-store" # Other options: "io1" | "io2" | "gp3" | "instance-store" . IMPORTANT: Use "instance-store" option only with instance types that support that feature, like popular for node im4gn, d3, i3en, and i4i instance families -#SOLANA_DATA_VOL_SIZE="2000" # Current required data size to keep both smapshot archive and unarchived version of it -#SOLANA_DATA_VOL_IOPS="7000" # Max IOPS for EBS volumes (not applicable for "instance-store") -#SOLANA_DATA_VOL_THROUGHPUT="700" # Max throughput for EBS gp3 volumes (not applicable for "io1" | "io2" | "instance-store") +SOLANA_DATA_VOL_TYPE="io2" # Other options: "io1" | "io2" | "gp3" | "instance-store" . IMPORTANT: Use "instance-store" option only with instance types that support that feature, like popular for node im4gn, d3, i3en, and i4i instance families +SOLANA_DATA_VOL_SIZE="2000" # Current required data size to keep both smapshot archive and unarchived version of it +SOLANA_DATA_VOL_IOPS="10000" # Max IOPS for EBS volumes (not applicable for "instance-store") +SOLANA_DATA_VOL_THROUGHPUT="700" # Max throughput for EBS gp3 volumes (not applicable for "io1" | "io2" | "instance-store") # Accounts volume configuration -SOLANA_ACCOUNTS_VOL_TYPE="instance-store" # Other options: "io1" | "io2" | "gp3" | "instance-store" . IMPORTANT: Use "instance-store" option only with instance types that support that feature, like popular for node im4gn, d3, i3en, and i4i instance families -#SOLANA_ACCOUNTS_VOL_SIZE="400" # Current required data size to keep both smapshot archive and unarchived version of it -#SOLANA_ACCOUNTS_VOL_IOPS="7000" # Max IOPS for EBS volumes (not applicable for "instance-store") -#SOLANA_ACCOUNTS_VOL_THROUGHPUT="700" # Max throughput for EBS gp3 volumes (not applicable for "io1" | "io2" | "instance-store") +SOLANA_ACCOUNTS_VOL_TYPE="io2" # Other options: "io1" | "io2" | "gp3" | "instance-store" . IMPORTANT: Use "instance-store" option only with instance types that support that feature, like popular for node im4gn, d3, i3en, and i4i instance families +SOLANA_ACCOUNTS_VOL_SIZE="400" # Current required data size to keep both smapshot archive and unarchived version of it +SOLANA_ACCOUNTS_VOL_IOPS="10000" # Max IOPS for EBS volumes (not applicable for "instance-store") +SOLANA_ACCOUNTS_VOL_THROUGHPUT="700" # Max throughput for EBS gp3 volumes (not applicable for "io1" | "io2" | "instance-store") # Secrets configuration SOLANA_NODE_IDENTITY_SECRET_ARN="none" # Optional. The ARN of the secret in AWS Secrets Manager with the node identity key pair. In case you want to provision a node but keep the old identity. SOLANA_VOTE_ACCOUNT_SECRET_ARN="none" # Optional for consensus node type. ARN of the secret in AWS Secrets Manager with the Vote Account's key pair. diff --git a/lib/solana/test/ha-nodes-stack.test.ts b/lib/solana/test/ha-nodes-stack.test.ts index 88e7296b..d51c9f1a 100644 --- a/lib/solana/test/ha-nodes-stack.test.ts +++ b/lib/solana/test/ha-nodes-stack.test.ts @@ -47,14 +47,14 @@ describe("SolanaHANodesStack", () => { "Description": "allow all TCP P2P protocols (gossip, turbine, repair, etc)", "FromPort": 8800, "IpProtocol": "tcp", - "ToPort": 8814 + "ToPort": 8816 }, { "CidrIp": "0.0.0.0/0", "Description": "allow all UDP P2P protocols (gossip, turbine, repair, etc)", "FromPort": 8800, "IpProtocol": "udp", - "ToPort": 8814 + "ToPort": 8816 }, { "CidrIp": "1.2.3.4/5", diff --git a/lib/solana/test/single-node-stack.test.ts b/lib/solana/test/single-node-stack.test.ts index 6813e3be..2d65fecb 100644 --- a/lib/solana/test/single-node-stack.test.ts +++ b/lib/solana/test/single-node-stack.test.ts @@ -47,14 +47,14 @@ describe("SolanaSingleNodeStack", () => { "Description": "allow all TCP P2P protocols (gossip, turbine, repair, etc)", "FromPort": 8800, "IpProtocol": "tcp", - "ToPort": 8814 + "ToPort": 8816 }, { "CidrIp": "0.0.0.0/0", "Description": "allow all UDP P2P protocols (gossip, turbine, repair, etc)", "FromPort": 8800, "IpProtocol": "udp", - "ToPort": 8814 + "ToPort": 8816 }, { "CidrIp": "1.2.3.4/5",