Cesium (sur cesium.duniter.fr) a nouveau opérationnel + Nœud virtuel Duniter

Bonjour à tous,

L’application Cesium hébergée http://cesium.duniter.fr a connue des perturbations depuis hier matin.
Des erreurs du type Node not available ou Nœud non joignable.

La situation est rétablie.
il s’agissait d’un problème de configuration du serveur web frontal.

Nœud Duniter virtuel en mode “fail over”

Pour les personnes les plus techniques : voici un point sur la configuration mise en place.

Les serveurs web comme Nginx permettent de configurer plusieurs serveurs derrière une même adresse web, pour gérer une répartition de charge (ou load balancing) mais encore pour assurer la bonne continuité de service (fail-over) : si un serveur ne répond plus, un autre prend le relais.

Lorsque des applications telle que Cesium sont accessibles en ligne, beaucoup d’utilisateurs gardent la configuration par défaut, notamment la configuration du nœud par défaut (Paramètres > Adresse du nœud Duniter).
La stabilité de l’application se trouve ainsi lié à un seul nœud Duniter. Bien que la monnaie en elle-même ne soit pas directement dépendante de ce nœud.

À terme, l’application Cesium évoluera pour gérer le basculement (côté client / navigateur web)
vers un nœud joignable, si la connexion au nœud par défaut était perdue. Cependant, ce basculement nécessitera sans doute le choix d’un nouveau nœud de confiance par l’utilisateur (par exemple dans une liste).
Je suis cependant d’avis d’éviter au maximum ce type d’action, notamment pour ne pas décourager un utilisateur débutant.

Le problème est le même pour les synchronisations, à l’initialisation d’un nœud : les nœuds proposés par défaut doivent être aussi stables que possible.

Configuration d’un nœud virtuel sous Nginx

Pour disposer d’un nœud virtuel (à haute disponibilité), suivez les étapes suivantes :

  • Éditer le fichier de configuration Nginx. Par défaut dans /etc/nginx/sites-available/default
  • Définissez votre pool de nœuds Duniter :
    • Ici on utilisera deux nœuds, respectivement accessible sur le réseau local comme 192.168.0.10:8998 et 192.168.0.10:8999
    • L’option weight=3 est optionnelle, et permet à nginx de prioriser les accès vers cette machine, lorsqu’elle est accessible.
   upstream duniter-nodes-pool {
                least_conn;
                server 192.168.0.10:8998 weight=3;
                server 192.168.0.10:8999;
        }    
  • Définissez un serveur virtuel, comme suit :
    • Choisissez le port d’écoute de votre nœud virtuel. Ici : 9201
    • Choisissez le nom DNS du serveur virtuel. Ici, test-net.duniter.fr
server {
        listen 9201;
        listen [::]:9201;

        server_name test-net.duniter.fr;

        location / {
                proxy_pass http://duniter-nodes-pool;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        }
}

Voila, vous disposez d’un nœud virtuel ! :wink:

Comme vous pouvez le constater, il sagit d’une définition “classique” d’un reverse proxy sous Nginx, avec cependant quelques différences notables :

  • Le paramètre proxy_pass renvoi vers le pool de nœuds duniter, et non vers un nœud en particulier.
  • L’ajout des directives add_header, pour autoriser les navigateurs à accéder à ces nœuds depuis une application (comme Cesium) hébergées ailleurs que sur votre domaine. Si vous omettez ces directives, vous obtiendrez des erreurs JavaScript de type “same origin policy” (voir le ticket #177) qui bloqueront les accès à votre nœud virtuel.

Docs :

3 Likes

ATTENTION :
si vous utilisez cesium.duniter.fr =>

  • changer de noeud dans les paramètres. Celui par défaut est HS (problème disque sur notre serveur… et le noeud n’est pas encore en mode “virtuel” fail-over, faute de serveur dispo)
  • désactivez la place de marché (Toujours dans les paramètres)

bonjour kimamila,

justement je crois que je suis confronté à ce souci. le paramètre à mettre dans n’est donc pas test-net.duniter.fr:9201 ?

merci
valvin

Bonjour @valvin,

tu peux essayer avec le noeud de @cgeek : cgeek.fr:9330

\°/ Merci Benoit avec cette adresse cesium.duniter.f et l’app cesium refonctionne à nouveau pour moi :grinning: !

Merci ça fonctionne pour moi.

Il existe aussi le client Sakia. Cesium n’est pas forcément le client le plus adapté.

A noter que la version 0.5 de Cesium proposera un basculement de noeud (automatique ou non), en cas de noeud non-joignable.
Fonctionnalité indispensable pour une utilisation en production, réseau décentralisé P2P oblige

3 Likes

Ah yes ! ça marche ! :slight_smile:

Peux-tu préciser ce que tu entends par noeud stable? merci :slight_smile:

5 messages ont été déplacés vers un nouveau sujet : Cesium > tri dans la vue réseau

Pour G1sms, je voudrai garantir une certaine qualité de connexion à Duniter (des transactions se perdent parfois)… Existe-t-il un noeud virtuel Duniter à recommander? Sinon, je pense en installer un.

Dans ce cas, je choisis les noeuds réels dans la liste: https://cesium.madeinzion.org/#/app/network?type=member mais comment savoir ceux qui sont les plus maintenus à jour?

Une autre question, après avoir mis à jour mon noeud Cesium, la langue pas défaut est l’anglais…
S’agit-il du paramètre “fallbackLanguage”: “en”?

NB: Je compte héberger mon serveur Cesium sur IPFS

Toute application cliente se connectant à un réseau de blockchains doit être capable de déterminer les nœuds à jour de version et la blockchain majoritaire sur ces nœuds.

J’y travaille pour les clients en Python avec Duniterpy. (Ca vient, ça vient…)

Se fier à un seul nœud ne sera malheureusement jamais fiable…

3 Likes