Skip to content
matthias-mar edited this page Jul 1, 2024 · 19 revisions

Pet Clinic Architecture

Die Services werden wie folgt auf VMs aufgeteilt:

VM Graph

VMs aufsetzen

Für das Deployment des Projektes werden 3 VMs benötigt. Die Aufteilung erfolgt wie oben bereits gezeichent.

Installation

Benötigt wird auf allen VMs:

  • Docker (>24.0.5)
  • Docker-Compose (>1.29.2)

Deployment

  1. Das Repository muss via Git auf die VM geklont werden.
  2. Navigiere in das Hauptverzeichnis
  3. Starte die Container mittels:
  • VM1:Docker-Compose up -f docker-compose.vm1.yml
  • VM2:Docker-Compose up -f docker-compose.vm2.yml
  • VM3:Docker-Compose up -f ./WebApp/docker-compose.yml
  1. Überprüfe ob das Gateway auf VM1 antwortet, über curl http://localhost:8080
  2. Überprüfe ob das Testing Frontend auf VM3 antwortet, über curl http://localhost:8082
  3. Erstelle Tunnel um das Gateway und Testing Frontend über deinen Browser aufrufen zu können, siehe Tunnel Aufbau

Config

Damit diese Aufteilung gelingt, mussten einige Konfigurationen verändert werden (siehe Branch "vm" im Config-Repo). Für ein Deployment auf andere VMs müssten folgende Konfigurationen erneut angepasst werden:

  • Adresse des Eureka Discovery Servers für alle Services im Config-Repo:
eureka:
  client:
    serviceUrl:
      defaultZone: http://141.22.10.81:8761/eureka/
  • Adresse des Config Servers für alle Services in der lokalen application.yml:
spring:
  config:
    activate:
      on-profile: vm
    import: configserver:http://141.22.10.81:8888
  • HOST-Adressen in den docker-compose files docker-compose.vm1.yml und docker-compose.vm2.yml
    environment:
      - HOST=... #hier Ip Adresse der VM, auf der der Service läuft
  • API-Gateway Adresse in den Lasttests:
 HttpProtocolBuilder httpProtocol = http.baseUrl("http://141.22.10.81:8080")
        .acceptHeader("application/json")
        .contentTypeHeader("application/json");

Zugrif auf die VMs

Da die VMs nicht über Web erreichbar gemacht werden können, muss der Zugriff über ssh erfolgen. Dafür muss die HAW Usershell mit 2-Faktor Authentifizierung eingerichtet werden, siehe Usershell Einrichtung

Basic connection zur VM

  1. Anmelden in der Usershell

    ssh inf[W_KENNUNG]@usershell.informatik.haw-hamburg.de

    W_KENNUNG: W Kennung des Benutzers

  2. Anmelden auf der gewünschten WM

    ssh otto@[IP_ADRESSE]

    IP_ADRESSE: Die IP der VM zu der Connected werden soll (Siehe VM Adressen)

Aufbau eines Tunnels

Um auf der Lokalen Maschine auf die Services und insbesondere über den Browser auf das Frontend zugreifen zu können, müssen über SSH Ports weitergeleitet werden.

  1. SSH Tunnel von Client zu Usershell

    ssh -L [USERSHELL_SERVICE_PORT]:localhost:[LOCAL_PORT_MAPPING] inf[W_KENNUNG]@usershell.informatik.haw-hamburg.de

    USERSHELL_SERVICE_PORT: Port des Service der auf der Usershell läuft.

    LOCAL_PORT_MAPPING: Port auf der Client Maschine, auf den der Usershell Port gemappt werden soll. Dieser kann mit localhost aufgerufen werden.

  2. SSH Tunnel von Usershell zu VM

    ssh -L [VM_SERVICE_PORT]:localhost:[USERSHELL_PORT_MAPPING] otto@[IP_ADRESSE]

    VM_SERVICE_PORT: Port des Service der auf der VM läuft.

    LOCAL_PORT_MAPPING: Port auf der Usershell, auf den der VM Port gemappt werden soll. Dieser kann mit localhost aufgerufen werden.

    IP_ADRESSE: Die IP der VM zu der Connected werden soll (Siehe VM Adressen)

Aufbau des Tunnels zum Petclinic Frontend

Um das Frontend der Petclinic zu tunneln, müssen die folgenden Befehle eingegeben werden, sodass das Frontend dann unter localhost:8080 erreichbar ist.

ssh -L 8080:localhost:8080 inf[W_KENNUNG]@usershell.informatik.haw-hamburg.de
ssh -L 8080:localhost:8080 otto@141.22.10.81

Aufbau des Tunnels zum Testing Frontend

ssh -L 8082:localhost:8082 -L 8081:localhost:8081 inf[W_KENNUNG]@usershell.informatik.haw-hamburg.de
ssh -L 8082:localhost:8082 -L 8081:localhost:8081 otto@141.22.10.83

Info

Die -L flag des ssh Befehls kann beliebig oft gesetzt werden, damit können mehrere Ports gleichzeitig weitergeleitet werden.

Wird das Terminal geschlossen in dem der Tunnel aufgebaut ist, schließt sich dieser und die Portweiterleitung wird beendet.

Akutelle Projekt VMs

Adressen

Maschinenname: scha-1-hmn.ful.informatik.haw-hamburg.de IP: 141.22.10.81

Maschinenname: scha-2-hmn.ful.informatik.haw-hamburg.de IP: 141.22.10.82

Maschinenname: scha-3-hmn.ful.informatik.haw-hamburg.de IP: 141.22.10.83

Anmeldedaten

Benutzername: otto

Passwort: ***********