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.
Geo-Cluster: drei Regionen wie auf der Beta
Abschnitt betitelt „Geo-Cluster: drei Regionen wie auf der Beta“test/docker-compose.geo.yml stellt die Beta-Topologie nach: drei
YugabyteDB-Knoten (je einer pro Region, --cloud_location), drei
Tablespaces mit RF 1 (test/geo/tablespaces.sh, angelegt vor der
ersten Migration) und drei Cloud-Knoten, von denen jeder in seiner Region
läuft (DNSE_REGION) und mit seinem regionalen Datenbankknoten spricht.
Der Katalog test/geo/regions.json trägt die Placements, aber keine
Domains — die Oberfläche bleibt damit bei der Herkunft, von der sie
geladen wurde, und man kann gezielt „über den falschen Knoten” arbeiten.
docker compose -f test/docker-compose.geo.yml up --build -d# Knoten: :8481 (eu-central) · :8482 (eu-southwest) · :8483 (na)Der Cluster braucht spürbar Ressourcen (drei Datenbankknoten, rund 6 GB RAM); Schema-Migration und Demo-Daten dauern beim ersten Start mehrere Minuten. Für die Verhaltenssuite reicht der Vier-Knoten-Aufbau oben.
Grenzen
Abschnitt betitelt „Grenzen“- Der Vier-Knoten-Aufbau zeigt Mehrknotenbetrieb gegen die verteilte Datenbank. Echte Multi-Region-Partitionierung ist dort nicht aktiviert: Die konfigurierten Regionen steuern die System-Seite und die Heimat-Region je Organisation, die Daten liegen aber alle im selben Cluster — dafür gibt es den Geo-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.