DrasylNode-Cluster
In drasyl spielen Super Peers eine wichtige Rolle für ihre Clients (ohne Super Peer können keine anderen Knoten selbstständig gefunden werden). Daher ist es wichtig, dass diese Super Peers eine möglichst hohe Verfügbarkeit haben. Dies ist insbesondere für unsere öffentlichen Super Peers (production.env.drasyl.org & staging.env.drasyl.org) wichtig, die standardmäßig in drasyl konfiguriert sind.
Aus verschiedenen Gründen (Update, Wartung, etc.) stehen diese jedoch unregelmäßig kurzzeitig nicht zur Verfügung. Dieses Problem könnte man durch mehrere parallel laufende Instanzen von Super Peers (als Cluster) minimieren. Alle Instanzen eines Super Peers sollen dabei die selbe Identität haben und somit nach außen, wie ein einzelner drasyl-Knoten mit mehreren Endpunkten verhalten.
Damit Clients, die sich an verschiedenen Super Peer-Instanzen angemeldet haben, untereinander kommunizieren können, müssen die Instanzen miteinander kommunizieren können. Dazu könnte man eine Datenbank verwenden, welche von allen Instanzen verwendet wird.
Man könnte z.B. eine redis-Datenbank nehmen, in der alle Instanzen die Informationen ihrer Clients sowie empfangene unzustellbare Nachrichten schreiben. Andere Instanzen können so Informationen der anderen Clients einsehen und für andere Instanzen unzustellbare Nachrichten an ihre Clients schicken.
Diesen Cluster-Betrieb mit Datenbank-Backend soll man optional einschalten können. Wir werden diesen Betriebsmodus auch nur bei unseren öffentlichen Peers anwenden.
/cc @6roebert