Fundamentos del Despliegue
Esta guía explica cómo desplegar demonios de escritura y lectura de Asset Core en un solo nodo con almacenamiento duradero. Es la base que debe validar antes de pasar a topologías más complejas.
Requisitos previos
Asegúrate de que puedes ejecutar ambos daemons con almacenamiento persistente y que tienes permisos para escribir en los directorios de destino. En producción, estos directorios deben ser respaldados y monitoreados.
- Compilar los binarios de Asset Core (
cargo build --release) - Directorio escribible para el registro de confirmaciones, puntos de control y tokens de autenticación
- Puertos 8080 y 8081 disponibles (o alternativas)
Paso 1 - Preparar directorios
Cree directorios para el estado persistente:
mkdir -p /var/lib/assetcore/{data,logs,auth/tokens}
El registro de commits, los puntos de control y los archivos de tokens se almacenarán aquí. Trate este directorio como crítico para las operaciones.
Paso 2 - Configurar el daemon de escritura
Cree un archivo de configuración write.toml:
[paths]
base_dir = "/var/lib/assetcore"
[server]
host = "0.0.0.0"
port = 8080
[commit_log]
path = "data/commit_log.log"
[commit_log_driver]
checkpoint_path = "data/write.checkpoint.json"
[namespaces]
catalog_backend = "sqlite"
catalog_path = "data/namespace_catalog.sqlite"
[auth]
directory = "auth/tokens"
Configuraciones clave:
| Configuración | Descripción |
|---|---|
server.host/server.port | Dirección y puerto para enlazar |
commit_log.path | Donde almacenar el registro de eventos |
commit_log_driver.checkpoint_path | Punto de control del daemon de escritura |
auth.directory | Directorio del token portador |
namespaces.catalog_path | Archivo SQLite del catálogo de espacios de nombres |
Paso 3 - Configurar el daemon de lectura
Cree un archivo de configuración read.toml o use argumentos de línea de comandos:
[paths]
base_dir = "/var/lib/assetcore"
[server]
address = "0.0.0.0:8081"
[storage]
commit_log_path = "data/commit_log.log"
checkpoint_path = "data/read.checkpoint.json"
[auth]
directory = "auth/tokens"
namespace_catalog_path = "data/namespace_catalog.sqlite"
namespace_catalog_read_only = true
El daemon de lectura debe apuntar al mismo registro de confirmaciones que el daemon de escritura. Si estos divergen, tus proyecciones no coincidirán con la ruta de escritura.
Paso 4 - Iniciar el daemon de escritura
./target/release/assetcored-write --config write.toml
Verifica que esté en funcionamiento:
curl -H "Authorization: Bearer $ASSETCORE_ADMIN_TOKEN" \
http://localhost:8080/v1/write/health
Se espera: {"status": "healthy", ...}
Paso 5 - Iniciar el daemon de lectura
./target/release/assetcored-read --config read.toml
Verifica que esté en funcionamiento:
curl -H "Authorization: Bearer $ASSETCORE_READ_TOKEN" \
-H "x-assetcore-namespace: $ASSETCORE_NAMESPACE_ID" \
http://localhost:8081/v1/read/health
Paso 6 - Verificar de extremo a extremo
Enviar un commit de prueba:
curl -X POST http://localhost:8080/v1/write/namespaces/${ASSETCORE_NAMESPACE_ID}/lifecycle \
-H "Authorization: Bearer $ASSETCORE_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"target_state":"provisioned","reason":"deployment bootstrap"}'
curl -X POST http://localhost:8080/v1/write/namespaces/${ASSETCORE_NAMESPACE_ID}/commit \
-H "Authorization: Bearer $ASSETCORE_WRITE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"operations": [
{"op": "CreateContainer", "args": {"container_id": 1, "kind": {"type": "balance"}, "owner": null, "policies": null}}
]
}'
Lea de nuevo:
curl -H "Authorization: Bearer $ASSETCORE_READ_TOKEN" \
http://localhost:8081/v1/read/namespaces/${ASSETCORE_NAMESPACE_ID}/containers/1
Solución de problemas
”Dirección ya en uso”
Otro proceso está utilizando el puerto. Detenga ese proceso o cambie la dirección de listen.
”Permiso denegado” en el registro de confirmaciones
El usuario que ejecuta el daemon no tiene acceso de escritura al directorio. Verifique la propiedad:
chown -R assetcore:assetcore /var/lib/assetcore
El daemon de lectura muestra datos antiguos
Verifica el endpoint de frescura:
curl -H "Authorization: Bearer $ASSETCORE_READ_TOKEN" \
http://localhost:8081/v1/read/namespaces/${ASSETCORE_NAMESPACE_ID}/freshness
Si world_seq está detrás de commit_log_world_seq, el daemon de lectura está alcanzando. Monitoree la métrica de retraso.
Recuperación de fallos
Ambos daemons se recuperan automáticamente de sus puntos de control al reiniciarse. No se necesita intervención manual.
Próximos pasos
- Salud y Métricas - Monitoreo de puntos finales
- Referencia de CLI - Usando acctl para operaciones