Using GCP
In this document, we will describe how to deploy Polygon nodes into a Virtual Machine instance on the Google Cloud Platform (GCP).
It is recommended to use any modern Debian or Linux Ubuntu OS with long-term support, i.e. Debian 11, Ubuntu 20.04. We’ll focus on Ubuntu 20.04 in this guide.
Deploy VM Instance¶
You may use any of the following ways to create an instance in Google Cloud:
- Google Cloud CLI, local or Cloud Shell
- Web Console
We’ll only cover the first case in this manual. Let’s start with deployment using Google Cloud CLI.
-
Follow “Before you begin” section to install and configure gcloud command-line tool. Pay attention to default region and zone, choose ones closer to you or your customers. You may use gcping.com to measure latency to choose the closest location.
-
Adjust the following command variables using your favorite editor prior executing, when required
POLYGON_NETWORK
- choosemainnet
ormumbai
testnet network to runPOLYGON_NODETYPE
- choosearchive
,fullnode
node type to runPOLYGON_BOOTSTRAP_MODE
- choose bootstrap modesnapshot
orfrom_scratch
POLYGON_RPC_PORT
- choose JSON RPC bor node port to listen on, the default value is what used on VM instance creation and in firewall rulesEXTRA_VAR
- choose Bor and Heimdall branches, usenetwork_version=mainnet-v1
withmainnet
network andnetwork_version=testnet-v4
withmumbai
networkINSTANCE_NAME
- the name of a VM instance with Polygon we are going to createINSTANCE_TYPE
- GCP machine type, default value is recommended, You may change it later if requiredBOR_EXT_DISK_SIZE
- additional disk size in GB to use with Bor, default value withfullnode
is recommended, You may expand it later if required. You’ll need 8192GB+ witharchive
node thoughHEIMDALL_EXT_DISK_SIZE
- additional disk size in GB to use with Heimdall, default value is recommended-
DISK_TYPE
- GCP disk type, SSD is highly recommended. You may need to increase the total SSD GB quota in the region you are spinning up the node. -
Use the following command to create an instance with correct hardware and software requirements. In the example below, we deploy Polygon
mainnet
fromsnapshot
in thefullnode
mode:export POLYGON_NETWORK=mainnet export POLYGON_NODETYPE=fullnode export POLYGON_BOOTSTRAP_MODE=snapshot export POLYGON_RPC_PORT=8747 export GCP_NETWORK_TAG=polygon export EXTRA_VAR=(bor_branch=v1.1.0 heimdall_branch=v1.0.3 network_version=mainnet-v1 node_type=sentry/sentry heimdall_network=${POLYGON_NETWORK}) gcloud compute firewall-rules create "polygon-p2p" --allow=tcp:26656,tcp:30303,udp:30303 --description="polygon p2p" --target-tags=${GCP_NETWORK_TAG} gcloud compute firewall-rules create "polygon-rpc" --allow=tcp:${POLYGON_RPC_PORT} --description="polygon rpc" --target-tags=${GCP_NETWORK_TAG} export INSTANCE_NAME=polygon-0 export INSTANCE_TYPE=e2-standard-8 export BOR_EXT_DISK_SIZE=1024 export HEIMDALL_EXT_DISK_SIZE=500 export DISK_TYPE=pd-ssd gcloud compute instances create ${INSTANCE_NAME} \ --image-project=ubuntu-os-cloud \ --image-family=ubuntu-2004-lts \ --boot-disk-size=20 \ --boot-disk-type=${DISK_TYPE} \ --machine-type=${INSTANCE_TYPE} \ --create-disk=name=${INSTANCE_NAME}-bor,size=${BOR_EXT_DISK_SIZE},type=${DISK_TYPE},auto-delete=no \ --create-disk=name=${INSTANCE_NAME}-heimdall,size=${HEIMDALL_EXT_DISK_SIZE},type=${DISK_TYPE},auto-delete=no \ --tags=${GCP_NETWORK_TAG} \ --metadata=user-data=' #cloud-config bootcmd: - screen -dmS polygon su -l -c bash -c "curl -L https://raw.githubusercontent.com/maticnetwork/node-ansible/master/install-gcp.sh | bash -s -- -n '${POLYGON_NETWORK}' -m '${POLYGON_NODETYPE}' -s '${POLYGON_BOOTSTRAP_MODE}' -p '${POLYGON_RPC_PORT}' -e \"'${EXTRA_VAR}'\"; bash"'
The instance should be created and live in a couple of minutes.
Login to VM¶
It will take a couple of minutes to install all the required software and a couple of hours to download a snapshot when chosen.
- You should see working
bor
andheimdalld
processes filling up additional drives. You may run the following commands to check it.
gcloud compute ssh ${INSTANCE_NAME}
# inside the connected session
sudo su -
ps uax|egrep "bor|heimdalld"
df -l -h
- You may use the following command to watch the installation progress, it’s really handy in case of
snapshot
bootstrap:
# inside the connected session
screen -dr
Use Control+a d
key combination to disconnect from progress review.
- You may use the following commands to get Bor and Heimdall logs:
# inside the connected session
journalctl -fu bor
journalctl -fu heimdalld
Note
Blockchain data is saved onto additional drives which are kept by default on VM instance removal. You need to remove additional disks manually if you don’t need this data anymore.
At the end, you will get an instance as shown in the below diagram.