📍 Kontekst
Celem architektury jest zapewnienie wysokiej dostępności (HA), spójności danych oraz bezpiecznego, kontrolowanego dostępu do usług:
- HashiCorp Vault – centralny system zarządzania sekretami, certyfikatami i tożsamościami,
- HashiCorp Consul – backend storage i mechanizm koordynacji dla Vault,
uruchomionych jako kontenery LXC na platformie Proxmox, z redundantną warstwą dostępową opartą o VIP i HAProxy.
flowchart LR
subgraph External["External"]
U["Users"]
end
subgraph LB["HA Layer"]
VIP[("VIP")]
HA1["HAProxy 1"]
HA2["HAProxy 2"]
HA3["HAProxy 3"]
end
subgraph CONSUL["Consul"]
C1["consul<br>ct01005"]
C2["consul<br>ct01006"]
M4["consul<br>ct01007"]
end
subgraph VAULT["VAULT"]
v1["vault<br>ct01005"]
v2["vault<br>ct01006"]
v3["vault<br>ct01007"]
end
subgraph PROXMOX["Proxmox"]
direction TB
CONSUL
VAULT
end
U == "consul.rachuna-net.pl" ==> VIP
VIP --> HA1 & HA2 & HA3
HA1 == :8200 ==> VAULT
HA2 == :8200 ==> VAULT
HA3 == :8200 ==> VAULT
HA1 == :8501 ==> CONSUL
HA2 == :8501 ==> CONSUL
HA3 == :8501 ==> CONSUL
v1 == :8501 ==> C1
v2 == :8501 ==> C2
v3 == :8501 ==> M4
U == "vault.rachuna-net.pl" ==> VIP
C2@{ shape: rect}
style CONSUL fill:#FFF9C4,color:#000000
style VAULT fill:#C8E6C9,color:#000000
linkStyle 0 stroke:#2962FF
linkStyle 4 stroke:#AA00FF,fill:none
linkStyle 5 stroke:#AA00FF,fill:none
linkStyle 6 stroke:#AA00FF,fill:none
linkStyle 7 stroke:#2962FF,fill:none
linkStyle 8 stroke:#2962FF,fill:none
linkStyle 9 stroke:#2962FF,fill:none
linkStyle 10 stroke:#2962FF,fill:none
linkStyle 11 stroke:#2962FF,fill:none
linkStyle 12 stroke:#2962FF,fill:none
linkStyle 13 stroke:#AA00FF,fill:none
1. Architektura logiczna
Architektura systemu składa się z czterech warstw:
- Warstwa kliencka (External)
- Warstwa wysokiej dostępności (HA Layer)
- Warstwa wirtualizacji (Proxmox)
- Warstwa aplikacyjna (Vault i Consul w LXC)
2. Warstwa kliencka (External)
2.1. Opis
Warstwa kliencka obejmuje:
- administratorów infrastruktury,
- aplikacje wewnętrzne i zewnętrzne,
- systemy CI/CD oraz automaty infrastrukturalne.
Klienci komunikują się wyłącznie z warstwą HA poprzez nazwy DNS.
2.2. Punkty dostępu
| Usługa | DNS | Port |
|---|---|---|
| Vault | vault.rachuna-net.pl |
443 (https) |
| Consul | consul.rachuna-net.pl |
443 (https) |
3. Warstwa HA (VIP + HAProxy)
3.1. VIP (Virtual IP)
VIP stanowi pojedynczy, logiczny punkt wejścia do systemu:
- przypisany do nazwy DNS,
- zarządzany mechanizmem typu VRRP (np. keepalived),
- niezależny od fizycznej instancji HAProxy.
📍
VIP zapewnia ciągłość dostępu w przypadku awarii pojedynczego węzła HAProxy.3.2. HAProxy
Warstwa HA składa się z trzech instancji HAProxy:
- HAProxy 1
- HAProxy 2
- HAProxy 3
Każda instancja jest równorzędna i bezstanowa.
Odpowiedzialności HAProxy:
- rozdzielanie ruchu (load-balancing),
- health-check backendów,
- separacja ruchu Vault i Consul po portach,
- opcjonalna terminacja TLS.
Mapowanie portów:
| Port | Backend | Opis |
|---|---|---|
| 8200 | Vault | API oraz UI Vault |
| 8501 | Consul | HTTPS API oraz UI Consul |
4. Warstwa wirtualizacji – Proxmox
4.1. Charakterystyka
Platforma Proxmox VE pełni rolę warstwy infrastrukturalnej:
- hostuje kontenery LXC,
- zapewnia izolację procesów,
- umożliwia backup, snapshoty i migracje.
Vault i Consul działają jako niezależne kontenery LXC, uruchomione na różnych węzłach Proxmox (zalecane).
4.2. Model rozmieszczenia
| Usługa | Kontener LXC | ID | Node |
|---|---|---|---|
| Consul,Vault | ubuntu | ct01005 | pve-s1 |
| Consul,Vault | ubuntu | ct01006 | pve-s2 |
| Consul,Vault | ubuntu | ct01007 | pve-s3 |
📍
Rozmieszczenie kontenerów na różnych hostach Proxmox minimalizuje ryzyko awarii domenowej.5. Warstwa aplikacyjna – Consul
5.1. Rola Consul
Consul pełni funkcję:
- backend storage dla Vault,
- mechanizmu koordynacji (leader election),
- systemu utrzymania quorum.
5.2. Tryb pracy
- Klaster Consul składa się z trzech instancji.
- Wymagane quorum: minimum 2/3.
- Komunikacja z Vault odbywa się po HTTPS (
:8501).
📍
Brak quorum Consul skutkuje brakiem możliwości poprawnego działania Vault.6. Warstwa aplikacyjna – Vault
6.1. Rola Vault
Vault odpowiada za:
- bezpieczne przechowywanie sekretów,
- zarządzanie PKI i certyfikatami,
- wystawianie API do integracji aplikacyjnych.
6.2. Tryb HA
Vault działa w trybie High Availability:
- jeden node aktywny (active),
- pozostałe nody w trybie standby.
📍
Stan aplikacji oraz lock aktywnego noda są przechowywane w Consulu.7. Komunikacja wewnętrzna Vault ↔ Consul
| Kierunek | Protokół | Port |
|---|---|---|
| Vault → Consul | HTTPS | 8501 |
Każda instancja Vault komunikuje się z klastrem Consul w celu:
- zapisu i odczytu danych,
- utrzymania locków HA,
- synchronizacji stanu.
8. Wysoka dostępność i odporność na awarie
8.1. Eliminacja SPOF
| Warstwa | Mechanizm |
|---|---|
| Dostęp zewnętrzny | VIP + 3× HAProxy |
| Vault | Active / Standby |
| Storage | Consul quorum |
| Infrastruktura | Proxmox + LXC |
8.2. Scenariusze awarii
- Awaria pojedynczego HAProxy → ruch przejmowany przez pozostałe instancje.
- Awaria aktywnego Vault → automatyczne przełączenie na standby.
- Awaria jednego węzła Consul → zachowane quorum.
- Awaria hosta Proxmox → kontenery na pozostałych hostach pozostają dostępne.