GSP1116
Descripción general
Alojar tus propios nodos de cadena de bloques puede ser necesario por motivos de seguridad, cumplimiento, rendimiento o privacidad. Una red descentralizada, resiliente y sustentable es la base fundamental para cualquier protocolo de cadena de bloques. Los desarrolladores de Web3 pueden usar el Motor de nodos de cadenas de bloques de Google Cloud, una solución de hosting de nodos completamente administrada para el desarrollo de ese sistema. Las organizaciones también pueden configurar y administrar sus propios nodos en Google Cloud. Como socio de confianza de la infraestructura para Web3, Google Cloud ofrece una solución de hosting de nodos segura, confiable y escalable. Para obtener más información sobre el hosting de nodos en Google Cloud, visita la entrada de blog Introducing Blockchain Node Engine: fully managed node-hosting for Web3 development .
Para obtener más información sobre las consideraciones técnicas y las decisiones de arquitectura que debes tomar cuando implementas nodos de cadena de bloques autoadministrados en la nube, visita la entrada de blog Google Cloud para Web3.
En este lab, crearás una máquina virtual (VM) para implementar un nodo de RPC de Ethereum. Un nodo de RPC de Ethereum puede recibir actualizaciones de la cadena de bloques de la red y procesar solicitudes a la API de RPC. Usarás un tipo de máquina e2-standard-4 que incluye un disco de arranque de 20 GB, 4 CPU virtuales y 16 GB de RAM. Para asegurarte de que haya suficiente espacio para los datos de la cadena de bloques, conectarás un disco SSD de 200 GB a la instancia. Usarás Ubuntu 20.04 y, luego, implementarás dos servicios: Geth, la “capa de ejecución”, y Lighthouse, la “capa de consenso”. Ambos servicios funcionan en conjunto para constituir un nodo de RPC de Ethereum.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Crear una instancia de Compute Engine con un disco persistente
- Configurar una dirección IP estática y reglas de firewall de red
- Programar copias de seguridad periódicas
- Implementar Geth, la capa de ejecución de Ethereum
- Implementar Lighthouse, la capa de consenso de Ethereum
- Realizar llamadas RPC de Ethereum
- Configurar Cloud Logging
- Configurar Cloud Monitoring
- Configurar verificaciones de tiempo de actividad
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la derecha, se encuentra el panel Configuración del lab y acceso, que tiene los siguientes elementos:
- El botón Abrir la consola de Google Cloud
- Las credenciales temporales (nombre de usuario y contraseña) que debes usar para este lab
- Otra información para completar el lab (si es necesaria)
Ten en cuenta que el cronómetro del lab se encuentra cerca de la parte superior de la página y muestra el tiempo restante.
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia los recursos y abre otra pestaña, en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usa otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Configuración del lab y acceso.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Configuración del lab y acceso.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación ni autenticación de dos factores, ya que esta cuenta es temporal.
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
En este lab, usarás las siguientes herramientas:
- Ubuntu 24.04
- Geth
- Lighthouse
- Curl
- gcloud
Tarea 1: Crea la infraestructura para la máquina virtual
Crea una dirección IP estática pública, una regla de firewall, una cuenta de servicio, una programación de instantáneas y una máquina virtual con la nueva dirección IP. Esta es la infraestructura en la que se implementará Ethereum.
Crea una dirección IP estática pública
En esta sección, configurarás la dirección IP pública que se usa para la máquina virtual.
- En la consola de Cloud, ve al menú de navegación (
) > Red de VPC > Direcciones IP.
- Haz clic en Reservar externa en la tarjeta Direcciones IP para crear la dirección IP estática.
- Para la configuración de la dirección estática, usa lo siguiente:
| Propiedad |
Valor (escríbelo o selecciónalo) |
| Nombre (Name) |
eth-mainnet-rpc-ip |
| Nivel de servicio de red (Network Service Tier) |
Premium |
| Versión de IP (IP version) |
IPv4 |
| Tipo (Type) |
Regional |
| Región |
|
| Adjunto a (Attached to) |
Ninguno (None) |
- Haz clic en RESERVAR (RESERVE).
Crea una regla de firewall
Crea reglas de firewall para que la VM pueda comunicarse en los puertos designados.
Geth P2P usa el puerto 30303 para comunicarse a través de TCP y UDP. Lighthouse P2P usa el puerto 9000 para comunicarse a través de TCP y UDP. Geth RPC usa TCP 8545.
- En la consola de Cloud, ve al menú de navegación (
) > Red de VPC > Firewall.
- Haz clic en Crear regla de firewall en la barra de acciones para crear las reglas de firewall.
- Para la configuración del firewall, usa lo siguiente:
| Propiedad |
Valor (escríbelo o selecciónalo) |
| Nombre (Name) |
eth-rpc-node-fw |
| Registros (Logs) |
Desactivado (Off) |
| Red (Network) |
predeterminada (default) |
| Prioridad (Priority) |
1000 |
| Dirección del tráfico (Direction of traffic) |
Entrada (Ingress) |
| Acción en caso de coincidencia (Action on match) |
Permitir (Allow) |
| Destinos (Targets) |
Etiquetas de destino especificadas (Specified target tags) |
| Target tags (Etiquetas de destino) |
eth-rpc-node (presiona Intro después de escribir el valor) |
| Filtro de origen (Source filter) |
Rangos IPv4 (IPv4 ranges) |
| Rangos de IPv4 de origen (Source IPv4 ranges) |
0.0.0.0/0 (presiona Intro después de escribir el valor) |
| Protocolos y puertos especificados (Specified protocols and ports) |
TCP: 30303, 9000, 8545 UDP: 30303, 9000 |
- Haz clic en CREAR (CREATE).
Crea una cuenta de servicio
Crea una cuenta de servicio para que la VM opere con ella.
- En la consola de Cloud, ve al menú de navegación (
) > IAM y administración > Cuentas de servicio.
- Haz clic en Crear cuenta de servicio en la barra de acciones para crear la cuenta de servicio.
- Para la configuración de la cuenta de servicio, usa lo siguiente:
| Propiedad |
Valor (escríbelo o selecciónalo) |
| Nombre de la cuenta de servicio (Service account name) |
eth-rpc-node-sa |
| ID de cuenta de servicio (Service account ID) |
eth-rpc-node-sa |
- Haz clic en CREAR Y CONTINUAR (CREATE AND CONTINUE).
- Agrega los siguientes roles:
| Propiedad |
Valor (escríbelo o selecciónalo) |
| Roles |
Acceso a SO de Compute (Compute OS Login), Controlador de servicio (Service Controller), Escritor de registros (Logs Writer), Escritor de métricas de supervisión (Monitoring Metric Writer), Agente de Cloud Trace (Cloud Trace Agent), Usuario de red de Compute (Compute Network User) |
- Haz clic en CONTINUAR (CONTINUE).
- Haz clic en LISTO (DONE).
Crea una programación de instantáneas
En esta sección, configurarás la programación de instantáneas para el disco conectado a la máquina virtual que contiene los datos de la cadena de bloques. Esto creará una copia de seguridad de los datos de la cadena.
- En la consola de Cloud, ve al menú de navegación (
) > Compute Engine > Instantáneas.
- Haz clic en Crear programación de instantáneas.
- Usa lo siguientes valores para la programación:
| Propiedad |
Valor (escríbelo o selecciónalo) |
| Nombre (Nombre) |
eth-mainnet-rpc-node-disk-snapshot |
| Región |
|
| Regional |
|
| Opciones de programación |
Frecuencia de la programación: Diaria (Daily), Hora de inicio (UTC) [Start time (UTC)]: 6:00 p.m. - 7:00 p.m., Borrar instantáneas automáticamente después de (Autodelete snapshots after): 7
|
| Regla de eliminación (Deletion rule) |
Conserva las instantáneas (Keep snapshots) |
- Haz clic en CREAR (CREATE).
Crea una máquina virtual
En esta sección, configurarás la máquina virtual que se usará para la implementación de Ethereum.
-
En la consola de Cloud, ve al menú de navegación (
) > Compute Engine > Instancias de VM.
-
Haz clic en Crear instancia para crear la VM.
-
En la Configuración de la máquina
Ingresa el valor para el siguiente campo:
| Propiedad |
Valor (escríbelo o selecciónalo) |
| Nombre |
eth-mainnet-rpc-node |
| Región |
|
| Zona |
|
| Serie |
E2 |
| Tipo de máquina |
e2-standard-4 |
-
Haz clic en SO y almacenamiento.
Haz clic en Cambiar y selecciona los siguientes valores:
| Propiedad |
Valor (escríbelo o selecciónalo) |
| Sistema operativo |
Ubuntu |
| Versión |
Ubuntu 24.04 LTS (x86/64) |
| Tipo de disco de arranque |
Disco persistente SSD |
| Tamaño |
50 GB |
Haz clic en Seleccionar.
En Discos adicionales, haz clic en Agregar disco nuevo.
| Propiedad |
Valor (escríbelo o selecciónalo) |
| Nombre |
eth-mainnet-rpc-node-disk |
| Tipo de disco de origen |
Disco en blanco |
| Tipo de disco |
Disco persistente SSD |
| Tamaño |
200 GB (o 2,000 GB para instalaciones más grandes) |
Haz clic en Guardar.
-
Haz clic en Protección de datos.
En Programaciones de instantáneas, selecciona eth-mainnet-rpc-node-disk-snapshot.
-
Haz clic en Redes.
| Propiedad |
Valor (escríbelo o selecciónalo) |
| Etiquetas de red |
eth-rpc-node (presiona Intro después de escribir el valor, que coincide con la configuración del firewall) |
-
En Interfaces de red, haz clic en predeterminada:
-
En Tarjeta de interfaz de red, selecciona gVNIC.
-
Dirección IPv4 externa: eth-mainnet-rpc-ip (selecciona la dirección IP estática creada anteriormente)
Haz clic en LISTO.
-
Haz clic en Seguridad.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear la infraestructura para la máquina virtual
Tarea 2: Instalación y configuración en la máquina virtual
Ahora, establece una conexión SSH a la VM y ejecuta los comandos para instalar el software.
Conéctate a la VM a través de SSH
- En la consola de Cloud, ve al menú de navegación (
) > Compute Engine > Instancias de VM.
- En la misma fila que eth-mainnet-rpc-node, haz clic en SSH para abrir una ventana de SSH.
- Si se muestra el mensaje Permite que SSH en el navegador se conecte a las VMs, haz clic en Autorizar.
Crea un archivo de intercambio en la VM
Para darles RAM adicional a los procesos, crearás un archivo de intercambio. Esto es para aumentar la cantidad de RAM que la VM podrá usar si lo necesita.
- Para crear un archivo de intercambio de 40 GB, ejecuta el siguiente comando:
sudo dd if=/dev/zero of=/swapfile bs=1MiB count=40KiB
Ten en cuenta que el primer comando tardará un poco en ejecutarse.
- Actualiza los siguientes permisos en el archivo de intercambio:
sudo chmod 0600 /swapfile
- Designa el archivo siguiente que se usará como partición de intercambio:
sudo mkswap /swapfile
- Agrega la siguiente configuración del archivo de intercambio a /etc/fstab, lo que permitirá que la unidad activada se reconozca durante el reinicio:
echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab
- Habilita el archivo de intercambio de la siguiente forma:
sudo swapon -a
- Confirma que se haya reconocido el intercambio de la siguiente forma:
free -g
Deberías ver un mensaje con una línea similar a esta:
Resultado:
total used free shared buff/cache available
Mem: 15 0 0 0 15 15
Swap: 24 0 24
Activa el disco conectado en la VM
Durante la configuración de la VM, creaste un disco conectado. La VM no lo reconocerá automáticamente. Se debe formatear y “activar” antes de que se pueda usar.
- Visualiza el disco conectado. Deberías ver una entrada para sdb con un tamaño de 200 GB con el siguiente comando:
sudo lsblk
- Usa este comando para formatear el disco conectado:
sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
- Crea la carpeta y activa el disco conectado como sigue:
sudo mkdir -p /mnt/disks/chaindata-disk
sudo mount -o discard,defaults /dev/sdb /mnt/disks/chaindata-disk
- Ejecuta el siguiente comando para actualizar los permisos de la carpeta de modo que los procesos puedan leerla o escribir en ella:
sudo chmod a+w /mnt/disks/chaindata-disk
- Recupera el ID de disco de la unidad activada para confirmar que se activó la unidad de la siguiente forma:
sudo blkid /dev/sdb
Deberías ver un mensaje similar al que se muestra en el cuadro de resultado a continuación:
Resultado:
/dev/sdb: UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" TYPE="ext4"
- Recupera el ID del disco activado y agrégalo al archivo /etc/fstab. Este archivo garantiza que la unidad se activará si la VM se reinicia.
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
- Ejecuta el siguiente comando df para confirmar que el disco se haya activado, formateado y que se haya asignado el tamaño correcto:
df -h
Deberías ver un mensaje con una línea similar a esta, que muestra el nuevo volumen activado y el tamaño:
Resultado:
/dev/sdb 196G 28K 196G 1% /mnt/disks/chaindata-disk
Si necesitas cambiar el tamaño del disco más adelante, sigue estas instrucciones.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear un archivo de intercambio en la VM y activar el disco conectado en la VM
Crea un usuario en la VM
Crea un usuario para ejecutar los procesos.
- Para crear un usuario llamado ethereum, ejecuta los siguientes comandos:
sudo useradd -m ethereum
sudo usermod -aG sudo ethereum
sudo usermod -aG google-sudoers ethereum
- Cambia al usuario ethereum de la siguiente forma:
sudo su ethereum
- Ejecuta este comando para iniciar la línea de comandos de Bash:
bash
- Cambia a la carpeta principal del usuario ethereum de la siguiente forma:
cd ~
Instala el software de Ethereum
- Actualiza el sistema operativo de la siguiente forma:
sudo apt update -y
sudo apt-get update -y
- Usa este comando para instalar el software común:
sudo apt install -y dstat jq software-properties-common
- Instala el agente de operaciones de Google Cloud de la siguiente manera:
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
- Ejecuta este comando para quitar el archivo de secuencia de comandos que se descargó:
rm add-google-cloud-ops-agent-repo.sh
- Crea las carpetas para los registros y los datos de cadena de los clientes de Geth y Lighthouse de la siguiente manera:
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
- Instala Geth desde el administrador de paquetes como sigue:
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get -y install ethereum
- Usa este comando para confirmar que Geth esté disponible y que sea la versión más reciente:
geth version
Deberías ver un mensaje con una línea similar a esta:
Resultado:
Geth
Version: 1.14.11-stable
Git Commit: ea9e62ca3db5c33aa7438ebf39c189afd53c6bf8
Architecture: amd64
Go Version: go1.23.1
Operating System: linux
GOPATH=
GOROOT=
- Descarga el cliente de Lighthouse. Esta secuencia de comandos descargará la versión más reciente de GitHub.
# 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"
- Ejecuta este comando para extraer el archivo tar de Lighthouse y quítalo:
# 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"
- Mueve el objeto binario de Lighthouse a la carpeta /usr/bin y actualiza los permisos como sigue:
sudo mv lighthouse /usr/bin
- Usa este comando para confirmar que Lighthouse esté disponible y que sea la versión más reciente:
lighthouse --version
Deberías ver un mensaje con una línea similar a esta (ten en cuenta que el número de versión puede ser diferente):
Resultado:
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)
- Crea el secreto de JWT compartido, que se usará como un mecanismo de seguridad para restringir quién puede llamar al endpoint de RPC del cliente de ejecución.
cd ~
mkdir ~/.secret
openssl rand -hex 32 > ~/.secret/jwtsecret
chmod 440 ~/.secret/jwtsecret
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear un usuario en la VM y, luego, instalar el software de Ethereum
Tarea 3: Inicia los clientes de ejecución y consenso de Ethereum
Ethereum tiene estos dos clientes: Geth, la capa de ejecución, y Lighthouse, la capa de consenso, que se ejecutan en paralelo y funcionan en conjunto. Geth establecerá un endpoint y un puerto de authrpc al que Lighthouse llamará. Este endpoint estará protegido por un token de seguridad común guardado de forma local. Lighthouse se conectará a Geth a través del endpoint de ejecución y el token de seguridad.
Para obtener información sobre cómo Geth se conecta al cliente de consenso, lee la documentación sobre la conexión a clientes de consenso. Para obtener más información sobre cómo Lighthouse se conecta al cliente de ejecución, consulta la documentación de la migración de The Merge en el Lighthouse Book.
Inicia Geth
Con los pasos siguientes, se iniciará el cliente de ejecución de Geth.
- Primero, realiza la autenticación en gcloud. En la sesión de SSH, ejecuta lo siguiente:
gcloud auth login
Presiona INTRO cuando veas la pregunta Do you want to continue (Y/n)?
-
Navega al vínculo que se muestra en una pestaña nueva.
-
Haz clic en tu nombre de usuario activo () y, luego, en Permitir.
-
Cuando veas el mensaje Enter the following verification code in gcloud CLI on the machine you want to log into, haz clic en el botón Copy; luego, vuelve a la sesión de SSH y pega el código en el prompt Enter authorization code:.
-
Usa este comando para configurar la variable de entorno de la dirección IP externa:
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())")
- Ejecuta el siguiente comando para iniciar Geth como un proceso en segundo plano. En este lab, usarás el modo de sincronización “snap”, que es un nodo ligero. Para sincronizar como un nodo completo, usa "full" como modo de sincronización. Puedes hacerlo en la línea de comandos o guardarlo primero en un archivo .sh para luego ejecutarlo. También puedes configurarlo para que se ejecute como un servicio con systemd.
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" &
Haz clic en Revisar mi progreso para verificar el objetivo.
Iniciar Geth como un proceso en segundo plano y usar el modo de sincronización “snap”
- Para ver el ID del proceso, ejecuta este comando:
ps -A | grep geth
- Revisa los registros para ver si el proceso se inició correctamente de la siguiente forma:
tail -f /mnt/disks/chaindata-disk/ethereum/geth/logs/geth.log
Deberías ver un mensaje similar al que se muestra en el cuadro de resultado a continuación. El cliente de Geth no continuará hasta que se vincule con un cliente de consenso.
Resultado:
Looking for peers peercount=1 tried=27 static=0
Post-merge network, but no beacon client seen. Please launch one to follow the chain!
- Presiona Ctrl+C para salir de la supervisión de registros.
Inicia Lighthouse
Ahora, iniciarás el cliente de consenso de Lighthouse.
- Ejecuta el siguiente comando para iniciar Lighthouse como un proceso en segundo plano. Puedes hacerlo en la línea de comandos o guardarlo primero en un archivo .sh para luego ejecutarlo. También puedes configurarlo para que se ejecute como un servicio con systemd.
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" &
- Para ver el ID del proceso, ejecuta el siguiente comando:
ps -A | grep lighthouse
- Usa el siguiente comando para revisar el archivo de registro y verificar si el proceso se inició correctamente. Esto puede tardar unos minutos en aparecer:
tail -f /mnt/disks/chaindata-disk/ethereum/lighthouse/logs/lighthouse.log
Deberías ver un mensaje similar al siguiente:
Resultado:
INFO Syncing
INFO Synced
INFO New block received
-
Presiona Ctrl+C para salir de la supervisión de registros.
-
Vuelve a revisar el registro de Geth para confirmar que los registros se estén generando correctamente.
tail -f /mnt/disks/chaindata-disk/ethereum/geth/logs/geth.log
Deberías ver un mensaje similar al que se muestra en el cuadro de resultado a continuación.
Resultado:
Syncing beacon headers
Verifica que el nodo se haya sincronizado con la cadena de bloques
Confirma si el nodo aún se está sincronizando ya que tardará un tiempo en hacerlo. (Ten en cuenta que no es necesario que esperes a que el nodo se sincronice para completar el lab. Se espera que el resultado muestre el JSON del estado de sincronización en lugar de false). Hay dos formas de averiguar el estado de sincronización: Geth y una llamada RPC.
- Ejecuta el siguiente comando de Geth para verificar si el nodo aún se está sincronizando. El resultado “false” significa que está completamente sincronizado con la red, pero es probable que siga sincronizándose durante este lab.
geth attach /mnt/disks/chaindata-disk/ethereum/geth/chaindata/geth.ipc
- En la consola de Geth, ejecuta este comando:
eth.syncing
Deberías ver un resultado similar al siguiente:
Resultado:
#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
- Escribe exit para salir de la consola de Geth.
- Ejecuta el siguiente comando de curl para verificar si el nodo aún se está sincronizando. La herramienta de línea de comandos “jq” dará formato al resultado de JSON del comando curl. El resultado “false” significa que ya está sincronizado con la red.
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","id":67}' http://localhost:8545 | jq
Resultado:
#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}
- Ejecuta el siguiente comando curl para verificar si se puede acceder al nodo a través de la dirección IP externa:
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","id":67}' http://$EXT_IP_ADDRESS:8545 | jq
Resultado:
#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}
Tarea 4: Configura Cloud Operations
Google Cloud tiene varios servicios de operaciones para administrar tu nodo de Ethereum. En esta sección, se explica cómo configurar Cloud Logging, Prometheus administrado, Cloud Monitoring y alertas de Cloud.
Configura Cloud Logging
De forma predeterminada, Geth y Lighthouse generarán registros en su archivo de registro declarado. Deberás transferir los datos de registro a Cloud Logging. Cloud Logging tiene potentes capacidades de búsqueda y se pueden crear alertas para mensajes de registro específicos.
- Actualiza los permisos del archivo de configuración de Cloud Operations para que puedas actualizarlo:
sudo chmod 666 /etc/google-cloud-ops-agent/config.yaml
- Configura el agente de operaciones de Cloud para enviar datos de registro a Cloud Logging. Actualiza el archivo “/etc/google-cloud-ops-agent/config.yaml” para incluir esta configuración del agente de operaciones. Este archivo de configuración define los archivos de registro de Geth y Lighthouse para importarlos a 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
- Después de guardar, ejecuta estos comandos para reiniciar el agente y aplicar los cambios:
sudo systemctl stop google-cloud-ops-agent
sudo systemctl start google-cloud-ops-agent
sudo systemctl status google-cloud-ops-agent
- Presiona Ctrl+C para salir de la pantalla de estado.
- Si hay un error, usa este comando para ver más detalles:
sudo journalctl -xe | grep "google_cloud_ops_agent_engine"
- Revisa Cloud Logging para confirmar que los mensajes de registro aparezcan en la consola. En la consola de Cloud, ve al menú de navegación (
), haz clic en Ver todos los productos y, en Observabilidad, haz clic en Logging. En el menú de la izquierda, haz clic en Explorador de registros. Deberías ver mensajes similares a estos:
Configura Prometheus administrado
Como iniciamos los clientes geth y lighthouse con la marca --metrics, ambos clientes generarán métricas en el puerto HTTP. Estas métricas se pueden almacenar en una base de datos de series temporales como Prometheus y usarse para proporcionar datos a paneles útiles de Grafana. Normalmente, tendrías que instalar Prometheus en la VM, pero una pequeña configuración en el agente de operaciones de Cloud puede capturar las métricas y almacenarlas en el servicio Prometheus administrado en Google Cloud.
- En la línea de comandos de la VM, confirma que el endpoint de métricas de Geth esté activo.
curl http://localhost:6060/debug/metrics/prometheus
Resultado:
......
# 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
- En la línea de comandos de la VM, confirma que el endpoint de métricas de Lighthouse esté activo.
curl http://localhost:5054/metrics
Resultado:
......
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
......
- Configura el agente de operaciones de Cloud para enviar los datos de las métricas a Prometheus administrado. Actualiza el archivo “/etc/google-cloud-ops-agent/config.yaml” para incluir esta configuración del agente de operaciones. Este archivo de configuración define el endpoint de métricas de Geth y Lighthouse para importarlo a Prometheus administrado:
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
- Después de guardar, ejecuta estos comandos para reiniciar el agente y aplicar los cambios:
sudo systemctl stop google-cloud-ops-agent
sudo systemctl start google-cloud-ops-agent
sudo systemctl status google-cloud-ops-agent
- Presiona Ctrl+C para salir de la pantalla de estado.
- Si hay un error, usa este comando para ver más detalles:
sudo journalctl -xe | grep "google_cloud_ops_agent_engine"
-
Revisa Cloud Logging para confirmar que las métricas aparezcan en la consola. En la consola de Cloud, ve al menú de navegación (
), haz clic en Ver todos los productos y, en Observabilidad, haz clic en Monitoring. En el menú de la izquierda, haz clic en Explorador de métricas.
-
Selecciona la opción <> PromQL. En el cuadro de consulta, ingresa la métrica de Lighthouse gossipsub_heartbeat_duration_bucket. Haz clic en EJECUTAR CONSULTA (RUN QUERY). Deberías ver resultados similares a los siguientes:
Puedes hacer lo mismo con una métrica de Geth (por ejemplo, rpc_duration_eth_blockNumber_success_count) para confirmar que se muestren las métricas de Geth.
Visualiza Cloud Monitoring
Cloud Monitoring ya debería estar activo para tu máquina virtual.
- En la consola de Cloud, ve al menú de navegación (
) > Compute Engine > Instancias de VM.
- Haz clic en la VM eth-mainnet-rpc-node.
- Luego, en la pestaña OBSERVABILIDAD (OBSERVABILITY).
- Todas las secciones deberían mostrar un gráfico de diferentes métricas de la VM.
- Haz clic en los diferentes submenús y períodos para consultar los tipos de métricas que se capturan directamente de la VM.
Configura el canal de notificaciones
Sigue estos pasos para configurar un canal de notificaciones al que se enviarán las alertas:
- En la consola de Cloud, ve al menú de navegación (
), haz clic en Ver todos los productos y, en Observabilidad, haz clic en Monitoring. En el menú de la izquierda, haz clic en Alertas.
- Haz clic en EDITAR CANALES DE NOTIFICACIONES.
- En Correo electrónico, haz clic en AGREGAR NUEVO.
- Escribe la Dirección de correo electrónico y el Nombre visible de la persona que debe recibir las notificaciones.
- Haz clic en Guardar.
Configura alertas de métricas
Sigue estos pasos para configurar las alertas basadas en las métricas de VM:
- En el menú de la izquierda, en la sección Detectar, haz clic en Alertas.
- Haz clic en CREAR POLÍTICA.
- Haz clic en SELECCIONAR UNA MÉTRICA.
- Haz clic en Instancia de VM > Disco > Uso de disco y, luego, en Aplicar.
- Agrega estos filtros:
| Propiedad |
Valor (escríbelo o selecciónalo) |
| dispositivo (device) |
/dev/sdb |
| estado (state) |
usado (used) |
- Haz clic en SIGUIENTE.
- Ingresa el Valor del umbral (Threshold value): 90%
- Haz clic en SIGUIENTE y selecciona los siguientes valores:
| Propiedad |
Valor (escríbelo o selecciónalo) |
| Usar el canal de notificaciones (Use notification channel) |
selecciónalo |
| Canales de notificaciones (Notification Channels) |
Selecciona el canal de notificaciones creado anteriormente |
| Notify on incident closure |
márcalo |
| Duración del cierre automático de incidentes (Incident autoclose duration) |
2 días (2 days) |
| Documentación (Documentation) |
Verifica el espacio en el disco de la VM |
| Nombre |
VM - Alerta de espacio en el disco - 90% de uso (VM - Disk space alert - 90% utilization) |
- Haz clic en SIGUIENTE (NEXT).
- Haz clic en CREAR POLÍTICA (CREATE POLICY).
Configura las verificaciones de tiempo de actividad
Sigue estos pasos para configurar las verificaciones de tiempo de actividad para el endpoint HTTP:
- En el menú de la izquierda, en la sección Detección, haz clic en Verificaciones de tiempo de actividad.
- Haz clic en CREAR UNA VERIFICACIÓN DE TIEMPO DE ACTIVIDAD.
- Configura la verificación de tiempo de actividad con los siguientes valores:
| Propiedad |
Valor (escríbelo o selecciónalo) |
| Protocol |
HTTP |
| Tipo de recurso |
URL |
| Nombre de host |
[IP externa de la instancia] |
| Path |
/ |
| Expandir More target options |
|
| Request Method |
GET |
| Port |
8545 |
| Haz clic en Continuar |
acepta los valores predeterminados |
| Haz clic en Continuar |
acepta los valores predeterminados |
| Elige un canal de notificaciones |
Selecciona el canal de notificaciones creado anteriormente |
| Título |
eth-mainnet-rpc-node-uptime-check |
- Haz clic en PROBAR (debería mostrar el éxito de 200 OK).
- Haz clic en CREAR.
Haz clic en Revisar mi progreso para verificar el objetivo.
Configurar Cloud Operations
¡Felicitaciones!
En este lab, creaste una instancia de Compute Engine con un disco persistente, configuraste una dirección IP estática, configuraste reglas de firewall de red, programaste copias de seguridad, implementaste los clientes de Geth y Lighthouse de Ethereum, probaste la configuración con llamadas RPC de Ethereum, configuraste Cloud Logging y Monitoring, y configuraste verificaciones de tiempo de actividad.
Próximos pasos/Más información
Consulta estos recursos para continuar tu recorrido por Ethereum:
- Para obtener más información sobre el cliente de Ethereum (capa de ejecución), consulta Geth.
- Para obtener más información sobre el cliente de Ethereum (capa de consenso), consulta Lighthouse.
- Para obtener más información sobre Ethereum en general, consulta Ethereum.
- Obtén más información en el sitio web de Google Cloud para Web3.
- Para obtener más información sobre el Motor de nodos de cadenas de bloques para Google Cloud, consulta esta página.
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 27 de julio de 2026
Prueba más reciente del lab: 27 de julio de 2026
Copyright 2026 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.