Problem: niewidoczne topologie
Masz 40 instancji MariaDB / MySQL. Niektóre są w replikacji Master-Slave. Inne w Master-Master. Klaster Galera z 5 węzłami. Dwa ProxySQL w trybie peer-to-peer. MaxScale do routingu odczytów. Tunele SSH dla dostępów inter-DC. Aliasy DNS maskujące rzeczywiste adresy IP.
Proste pytanie: czy możesz narysować kompletną architekturę w mniej niż 5 minut?
W większości organizacji odpowiedź brzmi nie. Topologia żyje w przestarzałym wiki, nigdy nieaktualizowanym Confluence lub w głowie starszego DBA, który jest na urlopie.
Dot3 rozwiązuje ten problem.
Czym jest Dot3?
Dot3 to silnik kartografii topologicznej zintegrowany z PmaControl. Używa Graphviz (języka DOT) do generowania wizualnych reprezentacji architektur baz danych.
Nazwa "Dot3" pochodzi od trzeciej iteracji silnika. Dwie pierwsze wersje używały uproszczonych podejść (listy połączeń, statyczne drzewa). Dot3 wprowadza dynamiczne rozwiązywanie endpointów i kontekstowe renderowanie.
Rozwiązywanie endpointów
Pierwszym krokiem Dot3 jest zrozumienie, co kryje się za każdym endpointem skonfigurowanym w PmaControl. Endpoint może być:
1. Bezpośrednie połączenie MariaDB / MySQL
Najprostszy przypadek. Dot3 łączy się z portem 3306 (lub innym), wykonuje SHOW VARIABLES i SHOW SLAVE STATUS / SHOW REPLICA STATUS, i identyfikuje rolę serwera (master, slave, standalone).
2. ProxySQL
Dot3 wykrywa ProxySQL przez obecność portu administracyjnego (domyślnie 6032). Łącząc się z portem admin, pobiera:
runtime_mysql_servers: lista backendów z ich hostgroupruntime_mysql_replication_hostgroups: mapowanie writer/readerproxysql_servers: peery ProxySQL (dla klastrowania)
Pozwala to śledzić połączenia między ProxySQL a jego backendami oraz między peerami ProxySQL.
3. MaxScale
MaxScale jest wykrywany przez jego REST API (port 8989). Dot3 odpytuje /v1/servers i /v1/services by odtworzyć topologię backendów i usług routingu.
4. VIP i adresy pływające
Gdy endpoint to VIP (Virtual IP zarządzany przez keepalived lub Pacemaker), Dot3 rozwiązuje adres na aktywny serwer fizyczny. VIP jest reprezentowany jako węzeł pośredni z odrębnym stylem wizualnym (romb zamiast prostokąta).
5. Tunele SSH
Dla architektur multi-DC z tunelami SSH, Dot3 śledzi pełną ścieżkę: klient -> tunel SSH -> rzeczywisty endpoint. Tunel pojawia się jako połączenie przerywane na grafie.
6. Aliasy DNS
Dot3 rozwiązuje aliasy DNS (CNAME) i wyświetla zarówno nazwę aliasu, jak i rzeczywistą nazwę hosta, unikając zamieszania, gdy ten sam serwer jest odnoszony pod wieloma nazwami.
Renderowanie
Po rozwiązaniu wszystkich endpointów Dot3 generuje graf DOT, który jest kompilowany przez Graphviz do SVG (lub PNG). Oto jak różne topologie są reprezentowane.
Replikacja Master-Slave
Master [shape=box, color=blue, label="db-master\n10.0.1.10:3306"]
Slave1 [shape=box, color=green, label="db-slave1\n10.0.1.11:3306"]
Slave2 [shape=box, color=green, label="db-slave2\n10.0.1.12:3306"]
Master -> Slave1 [label="repl"]
Master -> Slave2 [label="repl"]
Strzałki replikacji idą od mastera do slave'ów (kierunek danych). Opóźnienie replikacji jest wyświetlane na krawędzi, gdy jest znaczące.
Replikacja Master-Master
Replikacje dwukierunkowe są reprezentowane podwójnymi strzałkami. Dot3 wykrywa ten przypadek, gdy oba serwery identyfikują się nawzajem jako master przez SHOW SLAVE STATUS.
Master1 -> Master2 [dir=both, label="M-M"]
Klaster Galera
Węzły Galera są grupowane w podgrafie z ramką przerywaną. Każdy węzeł jest kolorowany według stanu wsrep:
- Synced: zielony
- Donor/Desynced: pomarańczowy
- Joining: żółty
- Disconnected: czerwony
subgraph cluster_galera_prod {
label="Galera Prod (3 nodes)"
style=dashed
galera1 [color=green]
galera2 [color=green]
galera3 [color=green]
}
ProxySQL peer-to-peer
Połączenia między peerami ProxySQL są rysowane podwójnymi strzałkami przerywanymi, wizualnie odróżnionymi od połączeń replikacji MariaDB / MySQL.
Bug ikon PNG w SVG
Podczas rozwoju Dot3 chcieliśmy zintegrować ikony do wizualnej identyfikacji typów węzłów: ikona MariaDB, ikona ProxySQL, ikona MaxScale.
Pierwsza implementacja używała ikon PNG osadzonych w SVG przez tagi <image> z href w base64. Działało to w przeglądarkach, ale powodowało kilka problemów:
- Graphviz nie obsługuje prawidłowo osadzonych PNG w wyjściu SVG — pozycje były przesunięte
- Renderowanie było rozmyte na ekranach Retina/HiDPI
- Rozmiar plików SVG eksplodował z powodu base64
Rozwiązanie: zastąpienie wszystkich ikon PNG natywnymi ikonami SVG. Odtworzyliśmy proxysql.svg, maxscale.svg i inne w czystym SVG wektorowym. Rezultat:
- Ostre renderowanie w każdej rozdzielczości
- Prawidłowe pozycjonowanie w Graphviz
- Rozmiar plików zmniejszony 5-krotnie
Konkretny przykład
Oto rzeczywista (zanonimizowana) topologia wygenerowana przez Dot3 dla klienta e-commerce:
ProxySQL-1 ←→ ProxySQL-2 (peer-to-peer)
↓ ↓
[HG10: Writer] [HG20: Readers]
↓ ↓
Master ──→ Slave-1 (replikacja)
↓ Slave-2
↓ Slave-3
↓
┌─────────────────────┐
│ Galera Cluster │
│ Node-1 Node-2 │ (klaster)
│ Node-3 │
└─────────────────────┘
Ten schemat jest generowany automatycznie przez Dot3. Żadna ręczna konfiguracja layoutu. Dot3 odkrywa topologię, rozwiązuje endpointy, a Graphviz zajmuje się rozmieszczeniem.
Integracja z PmaControl
W interfejsie PmaControl mapa topologiczna jest dostępna przez zakładkę Topology. Odświeża się automatycznie i odzwierciedla stan w czasie rzeczywistym:
- Slave z opóźnieniem replikacji pojawia się z czerwoną krawędzią
- Węzeł Galera w stanie
Donorzmienia kolor - ProxySQL tracący backend pokazuje go wyszarzonym
Wygenerowany SVG jest interaktywny: kliknięcie na węzeł otwiera kartę szczegółową serwera w PmaControl.
Ograniczenia i planowane ewolucje
Dot3 działa dobrze dla topologii od 1 do 100 węzłów. Powyżej layout Graphviz może stać się chaotyczny. Planowane ewolucje:
- Filtrowanie po tagach: wyświetlanie tylko podzbioru topologii (po środowisku, kliencie, DC)
- Tryb diff: porównywanie dwóch snapshotów topologicznych do wizualizacji zmian
- Eksport Terraform: generowanie opisu Infrastructure-as-Code odkrytej topologii
Podsumowanie
Topologia infrastruktury MariaDB / MySQL nie musi być tajemnicą udokumentowaną w przestarzałym wiki. Dot3 ją odkrywa, rozwiązuje i rysuje automatycznie.
To różnica między "wydaje mi się, że replikacja idzie do tego serwera" a "widzę, że replikacja idzie do tego serwera, z 3 sekundami opóźnienia, od 14 dni".
Opublikowano (0)
Nieprawidłowy adres e-mail.
Autor