Instalacion del Cosmovisor

Configurando Cosmovisor

Cosmovisor es una herramienta de administración de los binarios de Cosmos SDK que constantemente supervisa nuevas actualizaciones y tiene la capacidad de ejecutarlas por sí mismo, de igual manera se recomienda estar al pendiente de toda actualización y si es posible descargar el binario de forma manual. Se recomienda usar cosmovisor para la mainnet, ya que automatiza procesos a la hora de actualizar nuestro nodo, es importante que ya sepa usar cosmovisor para implementarlo en mainnet, si no está familiarizado con este software, se recomienda implementarlo en el testnet y asegurarse de que puede configurarlo y ponerlo en marcha correctamente.

Instalación

#obtenemos cosmovisor
go get github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor

# o puede instalar última versión disponible (recomendado)
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@latest

# para elegir una versión específica use (v1.0.0 es un ejemplo) 
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@v1.0.0

Agregar variables de entorno

En el archivo ~/.profile se debe agregar las siguientes lineas

export DAEMON_NAME=junod
export DAEMON_HOME=$HOME/.juno
#Cargar las variables nuevamente al entorno
source ~/.profile

Estructura de Carpetas para Cosmovisor

Cosmovisor siempre espera una misma estructura de carpetas, la cual es la siguiente:

.
├── current -> genesis or upgrades/<name>
├── genesis
│   └── bin
│       └── $DAEMON_NAME
└── upgrades
    └── <name>
        └── bin
            └── $DAEMON_NAME

NOTA: este resultado anterior se puede ver con la herramienta tree, la raiz de estas carpetas esta predefinido a través de las variables. Por lo tanto; va quedar en el home definido para la instalación de juno. Para tener la estructura anterior creamos estas carpetas:

mkdir -p $DAEMON_HOME/cosmovisor/genesis/bin
mkdir -p $DAEMON_HOME/cosmovisor/upgrades

Configurar cosmovisor

Para esto cosmovisor necesita conocer el binario que usará para inicializar, en este caso sería v8.0.0, este binario se debe copiar en $DAEMON_HOME/cosmovisor/genesis/bin buscamos el binario, este fue compilado al inicio de la guia.

which junod
# Lo copiamos a la nueva ubicación, cambie el origen según sea su caso
cp $HOME/go/bin/junod $DAEMON_HOME/cosmovisor/genesis/bin

Configurar el servicio para ejecutarse en segundo plano

Con la anterior configuración lo que logramos es que haya una correspondencia entre los dos binarios (comovisor y junod), por lo que escribir cosmovisor version será igual que escribir junod version.

Igual que se configuraría para el binario junod, usaremos la configuración para cosmovisor, para que este pueda trabajar de forma correcta en segundo plano, y en caso de que ocurra algún bug o daño este se reinicie automáticamente para esto nosotros usamos el servicio systemd, primero creamos el servicio:

nano /etc/systemd/system/cosmovisor.service

La configuración correspondiente debe ajustarla a su sistema y a sus preferencias, compartimos la configuración que nosotros tenemos para que sirva de base, debe verificar bien las rutas de los binarios usados.

[Unit]
Description=cosmovisor juno
After=network-online.target

[Service]
User=<user>
ExecStart=/root/go/bin/cosmovisor start --home /mnt/data/.juno
Restart=always
RestartSec=3
LimitNOFILE=4096
Environment="DAEMON_NAME=junod"
Environment="DAEMON_HOME=/mnt/data/.juno"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"

[Install]
WantedBy=multi-user.target

Iniciar cosmovisor

Después de crear el servicio, debe habilitarlo y ponerlo a funcionar

systemctl daemon-reload
systemctl enable cosmovisor
systemctl start cosmovisor

Verificación de los procesos:

#validar el estado del demonio de cosmovisor
systemctl status cosmovisor

#Para ver los logs del proceso que se está ejecutando:
journalctl -u cosmovisor -f

Realizado por:

Mauricio Gil - maurog@decry.io

fabian - vfabian@decry.io

Last updated