GSP1116
Übersicht
Das Hosten eigener Blockchain-Knoten kann aus Sicherheits-, Compliance-, Leistungs- oder Datenschutzgründen erforderlich sein. Ein dezentralisiertes, robustes und nachhaltiges Netzwerk ist eine wichtige Grundlage für jedes Blockchain-Protokoll. Web3-Entwickler können die Blockchain Node Engine von Google Cloud verwenden, eine vollständig verwaltete Lösung zum Hosten von Knoten für die Web3-Entwicklung. Organisationen können auch ihre eigenen Knoten in Google Cloud konfigurieren und verwalten. Als vertrauenswürdiger Partner für die Web3-Infrastruktur bietet Google Cloud eine sichere, zuverlässige und skalierbare Infrastruktur für das Knoten-Hosting. Weitere Informationen zum Hosten von Knoten in Google Cloud finden Sie im Blogpost Introducing Blockchain Node Engine: fully managed node-hosting for Web3 development.
Weitere Informationen zu technischen Überlegungen und Architekturentscheidungen, die Sie treffen müssen, wenn Sie selbstverwaltete Blockchain-Knoten in der Cloud bereitstellen, finden Sie im Blogpost Google Cloud for Web3.
In diesem Lab erstellen Sie eine virtuelle Maschine (VM), um einen Ethereum-RPC-Knoten bereitzustellen. Ein Ethereum-RPC-Knoten kann Blockchain-Updates aus dem Netzwerk empfangen und RPC-API-Anfragen verarbeiten. Sie verwenden dafür einen e2-standard-4-Maschinentyp, der ein 20-GB-Bootlaufwerk, vier virtuelle CPUs (vCPUs) und 16 GB RAM umfasst. Damit Sie auch sicher ausreichend Platz für die Blockchain-Daten haben, hängen Sie der Instanz zusätzlich ein SSD-Laufwerk mit 200 GB Speicher an. Sie verwenden Ubuntu 20.04 und stellen zwei Dienste bereit: Geth, die „Ausführungsebene“, und Lighthouse, die „Konsensebene“. Beide Dienste bilden zusammen einen Ethereum-RPC-Knoten.
Ziele
Aufgaben in diesem Lab:
- eine Compute Engine-Instanz mit einem nichtflüchtigen Speicher erstellen
- eine statische IP-Adresse und Netzwerk-Firewallregeln konfigurieren
- regelmäßige Sicherungen planen
- Geth bereitstellen, die Ausführungsebene für Ethereum
- Lighthouse bereitstellen, die Konsensebene für Ethereum
- Ethereum-RPC-Aufrufe ausführen
- Cloud Logging konfigurieren
- Cloud Monitoring konfigurieren
- Verfügbarkeitsdiagnosen konfigurieren
Einrichtung und Anforderungen
Vor dem Klick auf „Start Lab“ (Lab starten)
Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Für dieses Lab benötigen Sie Folgendes:
- Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
- Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.
Lab starten und bei der Google Cloud Console anmelden
-
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können.
Auf der rechten Seite befindet sich der Bereich Lab-Einrichtung und ‑Zugriff:
- Button Google Cloud Console öffnen
- Die temporären Anmeldedaten (Nutzername und Passwort), die Sie für dieses Lab verwenden müssen
- Gegebenenfalls weitere Informationen für dieses Lab
Der Lab-Timer befindet sich oben auf der Seite und zeigt die verbleibende Zeit an.
-
Klicken Sie auf Google Cloud Console öffnen. Wenn Sie Chrome verwenden, können Sie auch rechtsklicken und Link in Inkognitofenster öffnen auswählen.
Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.
Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.
Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
-
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
{{{user_0.username | "Username"}}}
Sie finden den Nutzernamen auch im Bereich Lab-Einrichtung und ‑Zugriff.
-
Klicken Sie auf Weiter.
-
Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.
{{{user_0.password | "Password"}}}
Sie finden das Passwort auch im Bereich Lab-Einrichtung und ‑Zugriff.
-
Klicken Sie auf Weiter.
Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos.
Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
-
Klicken Sie sich durch die nachfolgenden Seiten:
- Akzeptieren Sie die Nutzungsbedingungen.
- Fügen Sie keine Wiederherstellungsoptionen oder 2-Faktor-Authentifizierung hinzu, da dies nur ein temporäres Konto ist.
- Melden Sie sich nicht für kostenlose Testversionen an.
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein.
In diesem Lab verwenden Sie die folgenden Tools:
- Ubuntu 24.04
- Geth
- Lighthouse
- Curl
- gcloud
Aufgabe 1: Infrastruktur für die virtuelle Maschine erstellen
Erstellen Sie eine öffentliche statische IP-Adresse, Firewallregeln, ein Dienstkonto, einen Snapshot-Zeitplan und eine virtuelle Maschine mit der neuen IP-Adresse. Dies ist die Infrastruktur, auf der Ethereum bereitgestellt wird.
Öffentliche statische IP-Adresse erstellen
In diesem Abschnitt richten Sie die öffentliche IP-Adresse ein, die für die virtuelle Maschine verwendet wird.
- Öffnen Sie in der Cloud Console das Navigationsmenü (
) und klicken Sie dann auf VPC‑Netzwerk > IP‑Adressen.
- Klicken Sie auf der Karte IP-Adressen auf Externe reservieren, um die statische IP-Adresse zu erstellen.
- Verwenden Sie für die statische Adresskonfiguration Folgendes:
| Attribut |
Wert (eingeben oder auswählen) |
| Name |
eth-mainnet-rpc-ip |
| Netzwerkdienststufe |
Premium |
| IP-Version |
IPv4 |
| Typ |
Regional |
| Region |
|
| Zugeordnet zu |
Keine |
- Klicken Sie auf RESERVIEREN.
Firewallregel erstellen
Erstellen Sie Firewallregeln, damit die VM über bestimmte Ports kommunizieren kann.
Geth P2P kommuniziert über TCP und UDP an Port 30303. Lighthouse P2P kommuniziert über TCP und UDP an Port 9000. Geth RPC verwendet TCP 8545.
- Öffnen Sie in der Cloud Console das Navigationsmenü (
) und klicken Sie dann auf VPC‑Netzwerk > Firewall.
- Klicken Sie in der Aktionsleiste auf Firewallregel erstellen, um die Firewallregeln zu erstellen.
- Verwenden Sie für die Firewallkonfiguration Folgendes:
| Attribut |
Wert (eingeben oder auswählen) |
| Name |
eth-rpc-node-fw |
| Protokolle |
Aus |
| Netzwerk |
default |
| Priorität |
1000 |
| Traffic-Richtung |
Eingehend |
| Aktion bei Übereinstimmung |
Zulassen |
| Ziele |
Angegebene Zieltags |
| Zieltags |
eth-rpc-node (nach Eingabe des Werts die Eingabetaste drücken) |
| Quellfilter |
IPv4-Bereiche |
| Quell-IPv4-Bereiche |
0.0.0.0/0 (nach Eingabe des Werts die Eingabetaste drücken) |
| Angegebene Protokolle und Ports: |
TCP: 30303, 9000, 8545 UDP: 30303, 9000 |
- Klicken Sie auf ERSTELLEN.
Dienstkonto erstellen
Erstellen Sie ein Dienstkonto, unter dem die VM ausgeführt werden soll.
- Klicken Sie in der Cloud Console im Navigationsmenü (
) auf IAM und Verwaltung > Dienstkonten.
- Klicken Sie in der Aktionsleiste auf Dienstkonto erstellen, um das Dienstkonto zu erstellen.
- Verwenden Sie für die Dienstkontokonfiguration Folgendes:
| Attribut |
Wert (eingeben oder auswählen) |
| Name des Dienstkontos |
eth-rpc-node-sa |
| Dienstkonto-ID |
eth-rpc-node-sa |
- Klicken Sie auf ERSTELLEN UND FORTFAHREN.
- Fügen Sie die folgenden Rollen hinzu:
| Attribut |
Wert (eingeben oder auswählen) |
| Rollen |
Compute OS Login, Service Controller, Logs Writer, Monitoring Metric Writer, Cloud Trace Agent, Compute Network User
|
- Klicken Sie auf WEITER.
- Klicken Sie auf FERTIG.
Snapshot-Zeitplan erstellen
In diesem Abschnitt richten Sie den Zeitplan für Snapshots für das angehängte Laufwerk der virtuellen Maschine ein, das die Blockchain-Daten enthält. Dadurch werden die Daten der Kette gesichert.
- Öffnen Sie in der Cloud Console das Navigationsmenü (
) und klicken Sie dann auf Compute Engine > Snapshots.
- Klicken Sie auf Snapshot-Zeitplan erstellen, um den Zeitplan für Snapshots zu erstellen.
- Verwenden Sie für den Snapshot-Zeitplan Folgendes:
| Attribut |
Wert (eingeben oder auswählen) |
| Name |
eth-mainnet-rpc-node-disk-snapshot |
| Region |
|
| Regional |
|
| Zeitplanoptionen |
Frequenz des Zeitplans: Täglich, Startzeit (UTC): 18:00–19:00 Uhr, Snapshots automatisch löschen nach: 7
|
| Löschregel |
Snapshots aufbewahren |
- Klicken Sie auf ERSTELLEN.
Eine virtuelle Maschine erstellen
In diesem Abschnitt richten Sie die virtuelle Maschine ein, die für die Ethereum-Bereitstellung verwendet wird.
-
Öffnen Sie in der Cloud Console das Navigationsmenü (
) und klicken Sie dann auf Compute Engine > VM‑Instanzen.
-
Klicken Sie auf Instanz erstellen, um die VM zu erstellen.
-
In der Maschinenkonfiguration
Geben Sie den Wert für das folgende Feld ein:
| Attribut |
Wert (eingeben oder auswählen) |
| Name |
eth-mainnet-rpc-node |
| Region |
|
| Zone |
|
| Reihe |
E2 |
| Maschinentyp |
e2-standard-4 |
-
Klicken Sie auf Betriebssystem und Speicher.
Klicken Sie auf Ändern und wählen Sie die folgenden Werte aus:
| Attribut |
Wert(eingeben oder auswählen) |
| Betriebssystem |
Ubuntu |
| Version |
Ubuntu 24.04 LTS (x86/64) |
| Bootlaufwerktyp |
Nichtflüchtiger SSD-Speicher |
| Größe |
50 GB |
Klicken Sie auf Auswählen.
Klicken Sie unter Zusätzliche Laufwerke auf Neues Laufwerk hinzufügen.
| Attribut |
Wert(eingeben oder auswählen) |
| Name |
eth-mainnet-rpc-node-disk |
| Laufwerksquelltyp |
Leeres Laufwerk |
| Laufwerkstyp |
Nichtflüchtiger SSD-Speicher |
| Größe |
200 GB (alternativ 2.000 GB für größere Installationen) |
Klicken Sie auf Speichern.
-
Klicken Sie auf Datenschutz.
Wählen Sie für Snapshot-Zeitpläne eth-mainnet-rpc-node-disk-snapshot aus.
-
Klicken Sie auf Netzwerke.
| Attribut |
Wert (eingeben oder auswählen) |
| Netzwerk-Tags |
eth-rpc-node (nach Eingabe des Werts die Eingabetaste drücken – entspricht der Firewall-Einstellung) |
-
Klicken Sie unter Netzwerkschnittstellen auf Standard:
-
Wählen Sie unter Netzwerkkarte die Option gVNIC aus.
-
Externe IPv4-Adresse: eth-mainnet-rpc-ip (wählen Sie die zuvor erstellte statische IP-Adresse aus)
Klicken Sie auf FERTIG.
-
Klicken Sie auf Sicherheit.
Klicken Sie auf Fortschritt prüfen.
Infrastruktur für die virtuelle Maschine erstellen
Aufgabe 2: Einrichtung und Installation auf der virtuellen Maschine
Stellen Sie nun eine SSH-Verbindung zur VM her und führen Sie die Befehle zum Installieren der Software aus.
Eine SSH-Verbindung zur VM herstellen:
- Öffnen Sie in der Cloud Console das Navigationsmenü (
) und klicken Sie dann auf Compute Engine > VM‑Instanzen.
- Klicken Sie in der Zeile eth-mainnet-rpc-node auf SSH, um ein SSH-Fenster zu öffnen.
- Klicken Sie auf Autorisieren, wenn Sie aufgefordert werden, SSH im Browser zu erlauben, eine Verbindung zu VMs herzustellen.
Auslagerungsdatei auf der VM erstellen
Damit die Prozesse zusätzlichen RAM erhalten, erstellen Sie eine Auslagerungsdatei. Dadurch wird die Menge an RAM erhöht, die die VM bei Bedarf verwenden kann.
- Führen Sie den folgenden Befehl aus, um eine 40-GB-Auslagerungsdatei zu erstellen:
sudo dd if=/dev/zero of=/swapfile bs=1MiB count=40KiB
Beachten Sie, dass die Ausführung des ersten Befehls etwas Zeit in Anspruch nimmt.
- Aktualisieren Sie die Berechtigungen für die Auslagerungsdatei:
sudo chmod 0600 /swapfile
- Legen Sie die Datei fest, die als Swap-Partition verwendet werden soll:
sudo mkswap /swapfile
- Fügen Sie die Konfiguration der Auslagerungsdatei zu „/etc/fstab“ hinzu, damit das bereitgestellte Laufwerk beim Neustart erkannt wird:
echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab
- Aktivieren Sie die Auslagerungsdatei:
sudo swapon -a
- Prüfen Sie, ob der Swap erkannt wurde:
free -g
Sie sollten eine Meldung mit einer Zeile wie der folgenden sehen:
Ausgabe:
total used free shared buff/cache available
Mem: 15 0 0 0 15 15
Swap: 24 0 24
Das angehängte Laufwerk auf der VM bereitstellen
Beim Einrichten der VM haben Sie ein angehängtes Laufwerk erstellt. Die VM erkennt dies nicht automatisch. Es muss formatiert und „bereitgestellt“ werden, bevor es verwendet werden kann.
- Sehen Sie sich das angehängte Laufwerk an. Sie sollten einen Eintrag für sdb mit einer Größe von 200 GB sehen:
sudo lsblk
- Formatieren Sie das angehängte Laufwerk:
sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
- Erstellen Sie den Ordner und stellen Sie das angehängte Laufwerk bereit:
sudo mkdir -p /mnt/disks/chaindata-disk
sudo mount -o discard,defaults /dev/sdb /mnt/disks/chaindata-disk
- Aktualisieren Sie die Berechtigungen für den Ordner, damit Prozesse darin lesen und schreiben können:
sudo chmod a+w /mnt/disks/chaindata-disk
- Rufen Sie die Laufwerk-ID des bereitgestellten Laufwerks ab, um zu prüfen, ob das Laufwerk bereitgestellt wurde:
sudo blkid /dev/sdb
Es sollte eine Meldung ähnlich der folgenden angezeigt werden:
Ausgabe:
/dev/sdb: UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" TYPE="ext4"
- Rufen Sie die Laufwerk-ID des bereitgestellten Laufwerks ab und hängen Sie sie an die Datei „/etc/fstab“ an. Diese Datei sorgt dafür, dass das Laufwerk auch nach einem Neustart der VM bereitgestellt wird.
export DISK_UUID=$(findmnt -n -o UUID /dev/sdb)
echo "UUID=$DISK_UUID /mnt/disks/chaindata-disk ext4 discard,defaults,nofail 0 2" | sudo tee -a /etc/fstab
- Führen Sie den Befehl „df“ aus, um zu prüfen, ob das Laufwerk bereitgestellt und formatiert wurde und die richtige Größe zugewiesen wurde:
df -h
Es sollte eine Meldung mit einer Zeile wie der folgenden angezeigt werden, die das neue bereitgestellte Volume und die Größe zeigt:
Ausgabe:
/dev/sdb 196G 28K 196G 1% /mnt/disks/chaindata-disk
Wenn Sie die Größe des Laufwerks später ändern müssen, folgen Sie dieser Anleitung.
Klicken Sie auf Fortschritt prüfen.
Auslagerungsdatei auf der VM erstellen und das angehängte Laufwerk auf der VM bereitstellen
Einen Nutzer auf der VM erstellen
Erstellen Sie einen Nutzer, unter dem die Prozesse ausgeführt werden sollen.
- Führen Sie die folgenden Befehle aus, um einen Nutzer mit dem Namen „ethereum“ zu erstellen:
sudo useradd -m ethereum
sudo usermod -aG sudo ethereum
sudo usermod -aG google-sudoers ethereum
- Wechseln Sie zum Ethereum-Nutzer:
sudo su ethereum
- Starten Sie die Bash-Befehlszeile:
bash
- Wechseln Sie zum Basisordner des Ethereum-Nutzers:
cd ~
Ethereum-Software installieren
- Betriebssystem aktualisieren:
sudo apt update -y
sudo apt-get update -y
- Installieren Sie gängige Software:
sudo apt install -y dstat jq software-properties-common
- Installieren Sie den Google Cloud-Ops-Agent:
curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install
- Entfernen Sie die heruntergeladene Skriptdatei:
rm add-google-cloud-ops-agent-repo.sh
- Erstellen Sie Ordner für die Logs und Chaindata für die Geth- und Lighthouse-Clients:
mkdir /mnt/disks/chaindata-disk/ethereum/
mkdir /mnt/disks/chaindata-disk/ethereum/geth
mkdir /mnt/disks/chaindata-disk/ethereum/geth/chaindata
mkdir /mnt/disks/chaindata-disk/ethereum/geth/logs
mkdir /mnt/disks/chaindata-disk/ethereum/lighthouse
mkdir /mnt/disks/chaindata-disk/ethereum/lighthouse/chaindata
mkdir /mnt/disks/chaindata-disk/ethereum/lighthouse/logs
- Installieren Sie Geth über den Paketmanager:
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get -y install ethereum
- Prüfen Sie, ob Geth verfügbar ist und die neueste Version verwendet wird:
geth version
Sie sollten eine Meldung mit einer Zeile wie der folgenden sehen:
Ausgabe:
Geth
Version: 1.14.11-stable
Git Commit: ea9e62ca3db5c33aa7438ebf39c189afd53c6bf8
Architecture: amd64
Go Version: go1.23.1
Operating System: linux
GOPATH=
GOROOT=
- Laden Sie den Lighthouse-Client herunter. Mit diesem Script wird die neueste Version von GitHub heruntergeladen.
# Fetch the latest release information from GitHub API
RELEASE_URL="https://api.github.com/repos/sigp/lighthouse/releases/latest"
LATEST_VERSION=$(curl -s $RELEASE_URL | jq -r '.tag_name')
# Download the latest release using curl
DOWNLOAD_URL=$(curl -s $RELEASE_URL | jq -r '.assets[] | select(.name | endswith("x86_64-unknown-linux-gnu.tar.gz")) | .browser_download_url')
curl -L "$DOWNLOAD_URL" -o "lighthouse-${LATEST_VERSION}-x86_64-unknown-linux-gnu.tar.gz"
- Extrahieren Sie die Lighthouse-TAR-Datei und entfernen Sie sie:
# Extract the tar file
tar -xvf "lighthouse-${LATEST_VERSION}-x86_64-unknown-linux-gnu.tar.gz"
# Remove the tar file
rm "lighthouse-${LATEST_VERSION}-x86_64-unknown-linux-gnu.tar.gz"
- Verschieben Sie die Lighthouse-Binärdatei in den Ordner „/usr/bin“ und aktualisieren Sie die Berechtigungen:
sudo mv lighthouse /usr/bin
- Prüfen Sie, ob Lighthouse verfügbar ist und die aktuelle Version verwendet wird:
lighthouse --version
Sie sollten eine Meldung mit einer Zeile ähnlich der folgenden sehen. Beachten Sie, dass die Versionsnummer abweichen kann:
Ausgabe:
Lighthouse v5.3.0-d6ba8c3
BLS library: blst-portable
BLS hardware acceleration: true
SHA256 hardware acceleration: false
Allocator: jemalloc
Profile: maxperf
Specs: mainnet (true), minimal (false), gnosis (true)
- Erstellen Sie das gemeinsame JWT-Secret. Dieses JWT-Secret wird als Sicherheitsmechanismus verwendet, der einschränkt, wer den RPC-Endpunkt des Ausführungsclients aufrufen kann.
cd ~
mkdir ~/.secret
openssl rand -hex 32 > ~/.secret/jwtsecret
chmod 440 ~/.secret/jwtsecret
Klicken Sie auf Fortschritt prüfen.
Nutzer auf der VM erstellen und Ethereum-Software installieren
Aufgabe 3: Ethereum-Ausführungs- und Konsensclients starten
Ethereum hat zwei Clients: Geth – die Ausführungsebene und Lighthouse – die Konsensebene. Sie laufen parallel und arbeiten zusammen. Geth richtet dann einen authrpc-Endpunkt und einen Port ein, die Lighthouse aufruft. Dieser Endpunkt ist durch ein gemeinsames Sicherheitstoken geschützt, das lokal gespeichert wird. Lighthouse stellt über den Ausführungsendpunkt und das Sicherheitstoken eine Verbindung zu Geth her.
Informationen dazu, wie Geth eine Verbindung zum Konsensclient herstellt, finden Sie in der Dokumentation „Connecting to Consensus Clients“. Weitere Informationen dazu, wie Lighthouse eine Verbindung zum Ausführungsclient herstellt, finden Sie in der Dokumentation „Merge-Migration“ im „Lighthouse Book“.
Geth starten
Mit dem folgenden Befehl wird der Geth-Ausführungsclient gestartet.
- Authentifizieren Sie sich zuerst in gcloud. Führen Sie dazu in der SSH-Sitzung den folgenden Befehl aus:
gcloud auth login
Drücken Sie die Eingabetaste, wenn „Möchten Sie fortfahren (J/N)?“ angezeigt wird.
-
Klicken Sie auf den in einem neuen Tab angezeigten Link.
-
Klicken Sie auf Ihren aktiven Nutzernamen () und dann auf „Zulassen“.
-
Klicken Sie auf „Kopieren“, wenn Geben Sie in der gcloud CLI auf der Maschine, auf der Sie sich anmelden möchten, den folgenden Bestätigungscode ein angezeigt wird. Wechseln Sie dann wieder zur SSH-Sitzung und fügen Sie den Code in den Prompt Autorisierungscode eingeben ein.
-
Legen Sie die Umgebungsvariable für die externe IP-Adresse fest:
export CHAIN=eth
export NETWORK=mainnet
export EXT_IP_ADDRESS_NAME=$CHAIN-$NETWORK-rpc-ip
export EXT_IP_ADDRESS=$(gcloud compute addresses list --filter=$EXT_IP_ADDRESS_NAME --format="value(address_range())")
- Führen Sie den folgenden Befehl aus, um Geth als Hintergrundprozess zu starten. In diesem Lab verwenden Sie den Synchronisierungsmodus „snap“, bei dem es sich um einen Light Node handelt. Um die Synchronisierung als Full Node durchzuführen, verwenden Sie „full“ als Synchronisierungsmodus. Sie können diesen Befehl in der Befehlszeile ausführen oder ihn zuerst in einer .sh-Datei speichern und dann ausführen. Sie können ihn auch so konfigurieren, dass er mit systemd als Dienst ausgeführt wird.
nohup geth --datadir "/mnt/disks/chaindata-disk/ethereum/geth/chaindata" \
--http.corsdomain "*" \
--http \
--http.addr 0.0.0.0 \
--http.port 8545 \
--http.corsdomain "*" \
--http.api admin,debug,web3,eth,txpool,net \
--http.vhosts "*" \
--gcmode full \
--cache 2048 \
--mainnet \
--metrics \
--metrics.addr 127.0.0.1 \
--syncmode snap \
--authrpc.vhosts="localhost" \
--authrpc.port 8551 \
--authrpc.jwtsecret=/home/ethereum/.secret/jwtsecret \
--txpool.accountslots 32 \
--txpool.globalslots 8192 \
--txpool.accountqueue 128 \
--txpool.globalqueue 2048 \
--nat extip:$EXT_IP_ADDRESS \
&> "/mnt/disks/chaindata-disk/ethereum/geth/logs/geth.log" &
Klicken Sie auf Fortschritt prüfen.
Geth als Hintergrundprozess starten und den Snap-Synchronisierungsmodus verwenden
- Führen Sie den folgenden Befehl aus, um die Process ID aufzurufen:
ps -A | grep geth
- Prüfen Sie anhand der Logs, ob der Prozess korrekt gestartet wurde:
tail -f /mnt/disks/chaindata-disk/ethereum/geth/logs/geth.log
Es sollte eine Meldung ähnlich der folgenden angezeigt werden: Der Geth-Client wird erst fortgesetzt, wenn er mit einem Konsensclient gekoppelt ist.
Ausgabe:
Looking for peers peercount=1 tried=27 static=0
Post-merge network, but no beacon client seen. Please launch one to follow the chain!
- Drücken Sie Strg + C, um das Logmonitoring zu beenden.
Lighthouse starten
Jetzt starten Sie den Lighthouse-Konsensclient.
- Führen Sie den folgenden Befehl aus, um Lighthouse als Hintergrundprozess zu starten. Sie können diesen Befehl in der Befehlszeile ausführen oder ihn zuerst in einer .sh-Datei speichern und dann ausführen. Sie können ihn auch so konfigurieren, dass er mit systemd als Dienst ausgeführt wird.
nohup lighthouse bn \
--network mainnet \
--http \
--metrics \
--datadir /mnt/disks/chaindata-disk/ethereum/lighthouse/chaindata \
--execution-jwt /home/ethereum/.secret/jwtsecret \
--execution-endpoint http://localhost:8551 \
--checkpoint-sync-url https://sync-mainnet.beaconcha.in \
&> "/mnt/disks/chaindata-disk/ethereum/lighthouse/logs/lighthouse.log" &
- Führen Sie den folgenden Befehl aus, um die Process ID aufzurufen:
ps -A | grep lighthouse
- Prüfen Sie in der Logdatei, ob der Prozess ordnungsgemäß gestartet wurde. Es kann einige Minuten dauern, bis sie angezeigt wird:
tail -f /mnt/disks/chaindata-disk/ethereum/lighthouse/logs/lighthouse.log
Sie sollten eine Meldung sehen, die in etwa so aussieht:
Ausgabe:
INFO Syncing
INFO Synced
INFO New block received
-
Drücken Sie Strg + C, um das Logmonitoring zu beenden.
-
Prüfen Sie das Geth-Log noch einmal, um sicherzustellen, dass die Logs korrekt generiert werden.
tail -f /mnt/disks/chaindata-disk/ethereum/geth/logs/geth.log
Es sollte eine Meldung ähnlich der folgenden angezeigt werden:
Ausgabe:
Syncing beacon headers
Prüfen, ob der Knoten mit der Blockchain synchronisiert wurde
Prüfen Sie, ob der Knoten noch synchronisiert wird. Es dauert einige Zeit, bis der Knoten synchronisiert ist. (Hinweis: Sie müssen nicht warten, bis der Knoten synchronisiert ist, um das Lab abzuschließen. Die Ausgabe sollte den Synchronisierungsstatus im JSON-Format anstelle von false anzeigen.) Es gibt zwei Möglichkeiten, den Synchronisierungsstatus zu ermitteln: Geth oder ein RPC-Aufruf.
- Führen Sie den folgenden Geth-Befehl aus, um zu prüfen, ob der Knoten noch synchronisiert wird. Die Ausgabe „false“ bedeutet, dass er vollständig mit dem Netzwerk synchronisiert ist. Während dieses Labs wird die Synchronisierung jedoch wahrscheinlich noch laufen.
geth attach /mnt/disks/chaindata-disk/ethereum/geth/chaindata/geth.ipc
- Führen Sie in der Geth-Konsole folgenden Befehl aus:
eth.syncing
Die Ausgabe sollte in etwa so aussehen:
Ausgabe:
#If not synced:
{
currentBlock: 5186007,
healedBytecodeBytes: 0,
healedBytecodes: 0,
healedTrienodeBytes: 0,
healedTrienodes: 0,
healingBytecode: 0,
healingTrienodes: 0,
highestBlock: 16193909,
startingBlock: 0,
syncedAccountBytes: 2338698797,
syncedAccounts: 9417189,
syncedBytecodeBytes: 302598044,
syncedBytecodes: 58012,
syncedStorage: 42832820,
syncedStorageBytes: 9263550660
}
#If synced:
false
- Geben Sie exit ein, um die Geth-Konsole zu beenden.
- Führen Sie den folgenden curl-Befehl aus, um zu prüfen, ob der Knoten noch synchronisiert wird. Das Befehlszeilentool „jq“ formatiert die JSON-Ausgabe des curl-Befehls. Die Ausgabe „false“ bedeutet, dass die Synchronisierung mit dem Netzwerk erfolgt ist.
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","id":67}' http://localhost:8545 | jq
Ausgabe:
#If not synced:
{
"jsonrpc": "2.0",
"id": 67,
"result": {
"currentBlock": "0x4d70e9",
"healedBytecodeBytes": "0x0",
"healedBytecodes": "0x0",
"healedTrienodeBytes": "0x0",
"healedTrienodes": "0x0",
"healingBytecode": "0x0",
"healingTrienodes": "0x0",
"highestBlock": "0xf71975",
"startingBlock": "0x0",
"syncedAccountBytes": "0x8b65b62d",
"syncedAccounts": "0x8fb1e5",
"syncedBytecodeBytes": "0x1209479c",
"syncedBytecodes": "0xe29c",
"syncedStorage": "0x28d93b4",
"syncedStorageBytes": "0x2282690c4"
}
}
#If synced:
{"jsonrpc":"2.0","id":67,"result":false}
- Führen Sie den folgenden curl-Befehl aus, um zu prüfen, ob der Knoten über die externe IP-Adresse erreichbar ist:
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","id":67}' http://$EXT_IP_ADDRESS:8545 | jq
Ausgabe:
#If not synced:
{
"jsonrpc": "2.0",
"id": 67,
"result": {
"currentBlock": "0x4d70e9",
"healedBytecodeBytes": "0x0",
"healedBytecodes": "0x0",
"healedTrienodeBytes": "0x0",
"healedTrienodes": "0x0",
"healingBytecode": "0x0",
"healingTrienodes": "0x0",
"highestBlock": "0xf71975",
"startingBlock": "0x0",
"syncedAccountBytes": "0x8b65b62d",
"syncedAccounts": "0x8fb1e5",
"syncedBytecodeBytes": "0x1209479c",
"syncedBytecodes": "0xe29c",
"syncedStorage": "0x28d93b4",
"syncedStorageBytes": "0x2282690c4"
}
}
#If synced:
{"jsonrpc":"2.0","id":67,"result":false}
Aufgabe 4: Cloud Operations konfigurieren
Google Cloud bietet mehrere Betriebsdienste zum Verwalten Ihres Ethereum-Knotens. In diesem Abschnitt wird die Konfiguration von Cloud Logging, Verwaltetes Prometheus, Cloud Monitoring und Cloud Alerts beschrieben.
Cloud Logging konfigurieren
Standardmäßig protokollieren Geth und Lighthouse in der deklarierten Logdatei. Sie möchten die Logdaten in Cloud Logging übertragen. Cloud Logging bietet leistungsstarke Suchfunktionen und es können Benachrichtigungen für bestimmte Logeinträge erstellt werden.
- Aktualisieren Sie die Berechtigungen der Cloud Ops-Konfigurationsdatei, damit Sie diese aktualisieren können:
sudo chmod 666 /etc/google-cloud-ops-agent/config.yaml
- Konfigurieren Sie den Cloud Ops-Agent so, dass Logdaten an Cloud Logging gesendet werden. Aktualisieren Sie die Datei „/etc/google-cloud-ops-agent/config.yaml“ mit dieser Ops-Agent-Konfiguration. Diese Konfigurationsdatei definiert die Geth- und Lighthouse-Logdateien für den Import in Cloud Logging:
sudo cat << EOF >> /etc/google-cloud-ops-agent/config.yaml
logging:
receivers:
syslog:
type: files
include_paths:
- /var/log/messages
- /var/log/syslog
ethGethLog:
type: files
include_paths: ["/mnt/disks/chaindata-disk/ethereum/geth/logs/geth.log"]
record_log_file_path: true
ethLighthouseLog:
type: files
include_paths: ["/mnt/disks/chaindata-disk/ethereum/lighthouse/logs/lighthouse.log"]
record_log_file_path: true
journalLog:
type: systemd_journald
service:
pipelines:
logging_pipeline:
receivers:
- syslog
- journalLog
- ethGethLog
- ethLighthouseLog
EOF
- Führen Sie nach dem Speichern diese Befehle aus, um den Agenten neu zu starten und die Änderungen zu übernehmen:
sudo systemctl stop google-cloud-ops-agent
sudo systemctl start google-cloud-ops-agent
sudo systemctl status google-cloud-ops-agent
- Drücken Sie Strg + C, um den Statusbildschirm zu schließen.
- Wenn der Status einen Fehler enthält, können Sie mit diesem Befehl weitere Details aufrufen:
sudo journalctl -xe | grep "google_cloud_ops_agent_engine"
- Prüfen Sie in Cloud Logging, ob Logeinträge in der Console angezeigt werden. Öffnen Sie in der Cloud Console das Navigationsmenü (
), klicken Sie auf Alle Produkte ansehen und klicken Sie unter Beobachtbarkeit auf Logging. Klicken Sie im Menü auf der linken Seite auf Log-Explorer. Sie sollten in etwa folgende Meldungen sehen:
Verwaltetes Prometheus konfigurieren
Da wir die Clients geth und lighthouse mit dem Flag --metrics gestartet haben, geben beide Clients Messwerte auf dem HTTP-Port aus. Diese Messwerte können in einer Zeitreihendatenbank wie Prometheus gespeichert und verwendet werden, um Daten für informative Grafana-Dashboards bereitzustellen. Normalerweise müssten Sie Prometheus auf der VM installieren, aber eine kleine Konfiguration im Cloud Ops-Agent kann die Messwerte erfassen und im Dienst Verwaltetes Prometheus in Google Cloud speichern.
- Prüfen Sie in der Befehlszeile der VM, ob der Geth-Messwertendpunkt aktiv ist.
curl http://localhost:6060/debug/metrics/prometheus
Ausgabe:
......
# TYPE vflux_server_clientEvent_deactivated gauge
vflux_server_clientEvent_deactivated 0
# TYPE vflux_server_clientEvent_disconnected gauge
vflux_server_clientEvent_disconnected 0
# TYPE vflux_server_inactive_count gauge
vflux_server_inactive_count 0
- Prüfen Sie in der Befehlszeile der VM, ob der Lighthouse-Messwertendpunkt aktiv ist.
curl http://localhost:5054/metrics
Ausgabe:
......
gossipsub_heartbeat_duration_bucket{le="300.0"} 5679573
gossipsub_heartbeat_duration_bucket{le="350.0"} 5679573
gossipsub_heartbeat_duration_bucket{le="400.0"} 5679573
gossipsub_heartbeat_duration_bucket{le="450.0"} 5679573
gossipsub_heartbeat_duration_bucket{le="+Inf"} 5679573
......
- Konfigurieren Sie den Cloud Ops-Agent so, dass die Messwertdaten an Verwaltetes Prometheus gesendet werden. Aktualisieren Sie die Datei „/etc/google-cloud-ops-agent/config.yaml“ mit dieser Ops-Agent-Konfiguration. Diese Konfigurationsdatei definiert den Geth- und Lighthouse-Messwertendpunkt für den Import in Verwaltetes Prometheus:
sudo cat << EOF >> /etc/google-cloud-ops-agent/config.yaml
metrics:
receivers:
prometheus:
type: prometheus
config:
scrape_configs:
- job_name: 'geth_exporter'
scrape_interval: 10s
metrics_path: /debug/metrics/prometheus
static_configs:
- targets: ['localhost:6060']
- job_name: 'lighthouse_exporter'
scrape_interval: 10s
metrics_path: /metrics
static_configs:
- targets: ['localhost:5054']
service:
pipelines:
prometheus_pipeline:
receivers:
- prometheus
EOF
- Führen Sie nach dem Speichern diese Befehle aus, um den Agenten neu zu starten und die Änderungen zu übernehmen:
sudo systemctl stop google-cloud-ops-agent
sudo systemctl start google-cloud-ops-agent
sudo systemctl status google-cloud-ops-agent
- Drücken Sie Strg + C, um den Statusbildschirm zu schließen.
- Wenn der Status einen Fehler enthält, können Sie mit diesem Befehl weitere Details aufrufen:
sudo journalctl -xe | grep "google_cloud_ops_agent_engine"
-
Prüfen Sie in Cloud Logging, ob die Messwerte in der Console angezeigt werden. Öffnen Sie in der Cloud Console das Navigationsmenü (
), klicken Sie auf Alle Produkte ansehen und klicken Sie unter Beobachtbarkeit auf Monitoring. Klicken Sie im linken Menü auf Metrics Explorer.
-
Wählen Sie die Option <> PromQL aus. Geben Sie im Abfragefeld den Lighthouse-Messwert gossipsub_heartbeat_duration_bucket ein. Klicken Sie auf ABFRAGE AUSFÜHREN. Das Ergebnis sollte in etwa so aussehen:
Sie können dasselbe für einen Geth-Messwert tun (Beispiel rpc_duration_eth_blockNumber_success_count), um zu prüfen, ob Geth-Messwerte angezeigt werden.
Cloud Monitoring ansehen
Cloud Monitoring sollte für Ihre virtuelle Maschine bereits aktiv sein.
- Öffnen Sie in der Cloud Console das Navigationsmenü (
) und klicken Sie dann auf Compute Engine > VM‑Instanzen.
- Klicken Sie auf die VM eth-mainnet-rpc-node.
- Klicken Sie auf den Tab BEOBACHTBARKEIT.
- In allen Abschnitten sollte ein Diagramm mit verschiedenen Messwerten der VM angezeigt werden.
- Klicken Sie sich durch die verschiedenen Untermenüs und Zeiträume, um sich die verschiedenen Arten von Messwerten anzusehen, die direkt von der VM erfasst werden.
Benachrichtigungskanal konfigurieren
Konfigurieren Sie einen Benachrichtigungskanal, an den Benachrichtigungen gesendet werden:
- Öffnen Sie in der Cloud Console das Navigationsmenü (
), klicken Sie auf Alle Produkte ansehen und klicken Sie unter Beobachtbarkeit auf Monitoring. Klicken Sie im Menü auf der linken Seite auf Benachrichtigungen.
- Klicken Sie auf BENACHRICHTIGUNGSKANÄLE BEARBEITEN.
- Klicken Sie unter E-Mail auf NEUE HINZUFÜGEN.
- Geben Sie die E-Mail-Adresse und den Anzeigenamen der Person ein, die die Benachrichtigungen erhalten soll.
- Klicken Sie auf Speichern.
Messwertbenachrichtigungen konfigurieren
So konfigurieren Sie Benachrichtigungen basierend auf VM-Messwerten:
- Klicken Sie im Menü auf der linken Seite im Abschnitt Erkennen auf Benachrichtigungen.
- Klicken Sie auf RICHTLINIE ERSTELLEN.
- Klicken Sie auf MESSWERT AUSWÄHLEN.
- Klicken Sie auf VM-Instanz > Laufwerk > Laufwerksauslastung und dann auf Anwenden.
- Fügen Sie Filter hinzu:
| Attribut |
Wert (eingeben oder auswählen) |
| Gerät |
/dev/sdb |
| Status |
verwendet |
- Klicken Sie auf WEITER.
- Geben Sie den Grenzwert ein: 90 %
- Klicken Sie auf WEITER und wählen Sie die folgenden Werte aus:
| Attribut |
Wert (eingeben oder auswählen) |
| Benachrichtigungskanal verwenden |
Auswählen |
| Benachrichtigungskanäle |
Zuvor erstellten Benachrichtigungskanal auswählen |
| Beim Schließen eines Vorfalls benachrichtigen |
Häkchen setzen |
| Dauer bis zur automatischen Schließung von Vorfällen |
2 Tage |
| Dokumentation |
Speicherplatz der VM prüfen |
| Name |
VM – Benachrichtigung zu Speicherplatz – 90 % Auslastung |
- Klicken Sie auf WEITER.
- Klicken Sie auf RICHTLINIE ERSTELLEN.
Verfügbarkeitsdiagnosen konfigurieren
Konfigurieren Sie Verfügbarkeitsdiagnosen für den HTTP-Endpunkt:
- Klicken Sie im Menü auf der linken Seite im Abschnitt Erkennen auf Verfügbarkeitsdiagnosen.
- Klicken Sie auf VERFÜGBARKEITSDIAGNOSE ERSTELLEN.
- Konfigurieren Sie die Verfügbarkeitsdiagnose mit den folgenden Werten:
| Attribut |
Wert (eingeben oder auswählen) |
| Protokoll |
HTTP |
| Resource Type (Ressourcentyp) |
URL |
| Hostname |
[Externe IP-Adresse Ihrer Instanz] |
| Pfad |
/ |
| Weitere Zieloptionen einblenden |
|
| Anfragemethode |
GET |
| Port |
8545 |
| Klicken Sie auf „Weiter“. |
Standardeinstellungen akzeptieren |
| Klicken Sie auf „Weiter“. |
Standardeinstellungen akzeptieren |
| Benachrichtigungskanal auswählen |
Zuvor erstellten Benachrichtigungskanal auswählen |
| Titel |
eth-mainnet-rpc-node-uptime-check |
- Klicken Sie auf TEST (bei erfolgreichem Test sollte „200 OK“ angezeigt werden).
- Klicken Sie auf ERSTELLEN.
Klicken Sie auf Fortschritt prüfen.
Cloud Operations konfigurieren
Das wars! Sie haben das Lab erfolgreich abgeschlossen.
In diesem Lab haben Sie eine Compute Engine-Instanz mit einem nichtflüchtigen Speicher erstellt, eine statische IP-Adresse konfiguriert, Netzwerk-Firewallregeln konfiguriert, Backups geplant, Geth- und Lighthouse-Ethereum-Clients bereitgestellt, die Einrichtung mit Ethereum-RPC-Aufrufen getestet, Cloud Logging und Monitoring konfiguriert und Verfügbarkeitsdiagnosen konfiguriert.
Weitere Informationen
In diesen Ressourcen finden Sie weitere Informationen zu Ethereum:
- Weitere Informationen zum Ethereum-Client (Ausführungsebene) finden Sie unter Geth.
- Weitere Informationen zum Ethereum-Client (Konsensebene) finden Sie unter Lighthouse.
- Weitere Informationen zu Ethereum im Allgemeinen finden Sie unter Ethereum.
- Weitere Informationen zu Google Cloud für Web3 finden Sie auf der Website zu Google Cloud für Web3.
- Weitere Informationen zur Blockchain Node Engine für Google Cloud finden Sie auf der Blockchain Node Engine-Seite.
Google Cloud-Schulungen und -Zertifizierungen
In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.
Anleitung zuletzt am 27. Juli 2026 aktualisiert
Lab zuletzt am 27. Juli 2026 getestet
© 2026 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.