Testcluster
Der Aufbau unter test/ startet vier identische Cloud-Knoten gegen eine
gemeinsame YugabyteDB und einen Valkey. Damit lässt sich lokal prüfen,
was ein Einzelprozess nicht zeigt: geteilte Sessions, konkurrierende
Hintergrundjobs, Migration im Verbund.
┌── node1 :8481 ┐ YugabyteDB :5433 ────┼── node2 :8482 ┤ gemeinsamer DNSE_ENCRYPTION_KEY, (YSQL / PG-Wire) ├── node3 :8483 ┤ gleicher DSN, gemeinsamer Valkey Valkey :6379 ─────┴── node4 :8484 ┘Vorbereitung
Abschnitt betitelt „Vorbereitung“-
test/.envanlegen und den Verschlüsselungsschlüssel setzen:Terminal-Fenster cp test/.env.example test/.envsed -i '' "s/^DNSE_ENCRYPTION_KEY=.*/DNSE_ENCRYPTION_KEY=$(openssl rand -hex 32)/" test/.env -
test/gitlab_token.txt— ein Token fürgitlab.techeve.de, nur während des Build-Schritts benötigt (privates ORM++-Modul). Eine Zeile, nur das Token:Terminal-Fenster printf 'protocol=https\nhost=gitlab.techeve.de\n' | git credential fill \| sed -n 's/^password=//p' > test/gitlab_token.txt
Beide Dateien sind gitignored.
Starten
Abschnitt betitelt „Starten“Aus dem Verzeichnis test/:
docker compose -f docker-compose.test.yml up --build # startendocker compose -f docker-compose.test.yml logs -f node1 # Logs eines Knotensdocker compose -f docker-compose.test.yml down -v # stoppen + DB verwerfenOder per Makefile eine Ebene höher:
make test-cluster-up # bauen + starten (detached)make test-cluster-logs # node1 verfolgenmake test-cluster-down # stoppen, DB-Volume entfernenZugänge
Abschnitt betitelt „Zugänge“- Anwendung: http://localhost:8481 … http://localhost:8484
- Operator-Panel: http://localhost:8481/operator (
operator/DNSE_OPERATOR_PASSWORD) - YugabyteDB-Weboberfläche: http://localhost:15433
Standardmäßig wird der große Demo-Datensatz angelegt (DNSE_DEMO=on): rund
zehn Organisationen über alle Tarife und Regionen, ~39 Benutzer, dazu je
Organisation Projekte, Zonen mit Record Sets, Sync Groups, Templates, Quellen,
DynDNS-Ziele, selbstsignierte Zertifikate, Teams und eine Auswahl an
Provider-Accounts (nur der Demo-Provider antwortet; die übrigen zeigen die
Kontoliste in den Zuständen Auth-Fehler und nicht erreichbar).
Anmeldungen: admin@<org>.example mit demo-<org>-pw — Organisationen sind
acme, globex, initech, umbrella, hooli, piedpiper, wayne,
stark, wonka, cyberdyne. Für einen leeren Cluster DNSE_DEMO=off in
test/.env setzen.
Wie es verdrahtet ist
Abschnitt betitelt „Wie es verdrahtet ist“- Gleiche Konfiguration auf allen Knoten über einen YAML-Anker; der Verschlüsselungsschlüssel ist identisch, damit verschlüsselte Werte auf jedem Knoten lesbar sind.
- YugabyteDB-Treiber:
DNSE_DB_DSNzeigt auf den YSQL-Endpunkt,DNSE_DB_YB=onwählt den passenden Treiber. - Gestaffelter Start:
node1wartet auf eine gesunde Datenbank und führt die Migration aus;node2–4warten, bisnode1gesund ist. - Gemeinsamer Valkey für Sessions — eine Anmeldung auf einem Knoten gilt auf allen.
Grenzen
Abschnitt betitelt „Grenzen“- Der Aufbau zeigt Mehrknotenbetrieb gegen die verteilte Datenbank. Echte Multi-Region-Partitionierung ist nicht aktiviert: Die konfigurierten Regionen steuern die System-Seite und die Heimat-Region je Organisation, die Daten liegen aber alle im selben Cluster.
- Das Image baut ein vollständig statisches Binary (
CGO_ENABLED=0) mit eingebetteter CE-Oberfläche ausDNS-Editor-CE/webui/dist. Ist die Oberfläche veraltet, vorher bauen:cd ../../DNS-Editor-CE/ui && npm run build. - YugabyteDB läuft mit Standardbenutzer und Trust-Authentifizierung — in Ordnung für einen lokalen Prüfstand, nicht für Produktion.