This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Vault

Architektura wysokiej dostępności HashiCorp Vault z backendem Consul na Proxmox (LXC)
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:

  1. Warstwa kliencka (External)
  2. Warstwa wysokiej dostępności (HA Layer)
  3. Warstwa wirtualizacji (Proxmox)
  4. 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.

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

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).

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.

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.