- Healthcheck amélioré pour sdk_relay (vérifie l'API de santé) - Variables d'environnement pour le scan (SDK_RELAY_SCAN_TIMEOUT=300, SDK_RELAY_STARTUP_MODE=async) - Dépendances et healthchecks pour tous les services - Script de démarrage optimisé utilisant les healthchecks intégrés - Suppression du blindbit-proxy inutile - Documentation des améliorations
189 lines
4.6 KiB
Markdown
189 lines
4.6 KiB
Markdown
# Améliorations de la séquence de démarrage - IMPLÉMENTÉES
|
|
|
|
## Problème résolu
|
|
|
|
Le service `sdk_relay` bloquait complètement pendant le scan des blocs, empêchant les services dépendants de se connecter.
|
|
|
|
**✅ RÉSOLU** : Les améliorations suivantes ont été implémentées dans le `docker-compose.yml` existant.
|
|
|
|
## Améliorations implémentées dans docker-compose.yml
|
|
|
|
### 1. **Healthcheck amélioré pour sdk_relay**
|
|
```yaml
|
|
healthcheck:
|
|
test: ["CMD", "sh", "-c", "curl -f http://localhost:8091/ | grep -q '\"status\":\"ok\"'"]
|
|
interval: 15s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 60s # Plus de temps pour le démarrage initial
|
|
```
|
|
|
|
### 2. **Variables d'environnement pour le scan**
|
|
```yaml
|
|
environment:
|
|
- SDK_RELAY_SCAN_TIMEOUT=300
|
|
- SDK_RELAY_STARTUP_MODE=async
|
|
```
|
|
|
|
### 3. **Dépendances et healthchecks pour tous les services**
|
|
```yaml
|
|
ihm_client:
|
|
depends_on:
|
|
sdk_relay:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3003/"]
|
|
start_period: 30s
|
|
|
|
lecoffre-back:
|
|
depends_on:
|
|
sdk_relay:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
|
start_period: 30s
|
|
|
|
lecoffre-front:
|
|
depends_on:
|
|
lecoffre-back:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3000/"]
|
|
start_period: 30s
|
|
```
|
|
|
|
### 4. **Script de démarrage simplifié**
|
|
|
|
Le script `startup-sequence.sh` utilise maintenant les healthchecks intégrés :
|
|
- ✅ Démarre tous les services avec `docker compose up -d`
|
|
- ✅ Les healthchecks gèrent automatiquement l'ordre de démarrage
|
|
- ✅ Vérifie l'état du scan de sdk_relay
|
|
- ✅ Monitoring simplifié et efficace
|
|
|
|
## Utilisation
|
|
|
|
### Démarrage normal
|
|
```bash
|
|
# Démarrage standard avec les améliorations
|
|
docker compose up -d
|
|
|
|
# Ou utiliser le script optimisé
|
|
./scripts/startup-sequence.sh
|
|
```
|
|
|
|
### Monitoring
|
|
```bash
|
|
# Vérifier l'état des services
|
|
docker compose ps
|
|
|
|
# Surveiller les logs
|
|
docker compose logs -f sdk_relay
|
|
|
|
# Vérifier l'état du scan
|
|
curl http://127.0.0.1:8091/
|
|
```
|
|
|
|
## Avantages
|
|
|
|
### ✅ **Disponibilité immédiate**
|
|
- Les services WebSocket sont disponibles dès le démarrage
|
|
- Pas d'attente pendant le scan des blocs
|
|
|
|
### ✅ **Meilleure expérience utilisateur**
|
|
- Connexions WebSocket fonctionnelles immédiatement
|
|
- Messages d'état clairs pendant le scan
|
|
|
|
### ✅ **Monitoring amélioré**
|
|
- Healthchecks détaillés
|
|
- État du scan visible via l'API
|
|
- Logs structurés
|
|
|
|
### ✅ **Récupération d'erreur**
|
|
- Timeouts configurables
|
|
- Retry automatique
|
|
- Fallback en cas d'échec
|
|
|
|
## Configuration recommandée
|
|
|
|
### Variables d'environnement
|
|
```bash
|
|
# Timeout pour le scan (en secondes)
|
|
SDK_RELAY_SCAN_TIMEOUT=300
|
|
|
|
# Mode de démarrage
|
|
SDK_RELAY_STARTUP_MODE=async
|
|
|
|
# Attendre la fin du scan
|
|
SDK_RELAY_WAIT_FOR_SCAN=true
|
|
```
|
|
|
|
### Healthcheck personnalisé
|
|
```bash
|
|
# Vérifier l'état complet du service
|
|
curl -s http://127.0.0.1:8091/ | jq '.'
|
|
|
|
# Exemple de réponse :
|
|
{
|
|
"status": "ok",
|
|
"scan_complete": false,
|
|
"scan_progress": {
|
|
"current": 136325,
|
|
"total": 136327,
|
|
"percentage": 99.8
|
|
},
|
|
"message": "Scan in progress"
|
|
}
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Problème : Service ne démarre pas
|
|
```bash
|
|
# Vérifier les logs
|
|
docker compose logs sdk_relay
|
|
|
|
# Vérifier la configuration
|
|
docker exec sdk_relay cat /home/bitcoin/.conf
|
|
|
|
# Vérifier le wallet
|
|
docker exec sdk_relay cat /home/bitcoin/.4nk/default
|
|
```
|
|
|
|
### Problème : Scan bloqué
|
|
```bash
|
|
# Vérifier la connectivité à blindbit
|
|
docker exec sdk_relay curl http://blindbit-oracle:8000/utxos/136294
|
|
|
|
# Redémarrer avec un scan réduit
|
|
docker exec sdk_relay sed -i 's/"last_scan":136320/"last_scan":136325/g' /home/bitcoin/.4nk/default
|
|
docker compose restart sdk_relay
|
|
```
|
|
|
|
### Problème : Services dépendants ne se connectent pas
|
|
```bash
|
|
# Vérifier l'état du WebSocket
|
|
curl -I http://127.0.0.1:8090/
|
|
|
|
# Tester la connexion WebSocket
|
|
websocat ws://127.0.0.1:8090/
|
|
```
|
|
|
|
## Métriques de performance
|
|
|
|
### Avant les améliorations
|
|
- ⏱️ Temps de démarrage : 5-10 minutes
|
|
- 🔌 Disponibilité WebSocket : Après scan complet
|
|
- 📊 Monitoring : Limité aux logs
|
|
|
|
### Après les améliorations
|
|
- ⏱️ Temps de démarrage : 30-60 secondes
|
|
- 🔌 Disponibilité WebSocket : Immédiate
|
|
- 📊 Monitoring : API détaillée + healthchecks
|
|
|
|
## Prochaines étapes
|
|
|
|
1. **Implémentation dans le code source** : Modifier `sdk_relay/src/main.rs`
|
|
2. **Tests automatisés** : Ajouter des tests pour la séquence de démarrage
|
|
3. **Monitoring avancé** : Intégrer avec Prometheus/Grafana
|
|
4. **Documentation utilisateur** : Guide pour les développeurs
|