-
Notifications
You must be signed in to change notification settings - Fork 0
VMs
Die Services werden wie folgt auf VMs aufgeteilt:
Für das Deployment des Projektes werden 3 VMs benötigt. Die Aufteilung erfolgt wie oben bereits gezeichent.
Benötigt wird auf allen VMs:
- Docker (>24.0.5)
- Docker-Compose (>1.29.2)
- Das Repository muss via Git auf die VM geklont werden.
- Navigiere in das Hauptverzeichnis
- 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
- Überprüfe ob das Gateway auf VM1 antwortet, über
curl http://localhost:8080
- Überprüfe ob das Testing Frontend auf VM3 antwortet, über
curl http://localhost:8082
- Erstelle Tunnel um das Gateway und Testing Frontend über deinen Browser aufrufen zu können, siehe Tunnel Aufbau
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
unddocker-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");
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
-
Anmelden in der Usershell
ssh inf[W_KENNUNG]@usershell.informatik.haw-hamburg.de
W_KENNUNG: W Kennung des Benutzers
-
Anmelden auf der gewünschten WM
ssh otto@[IP_ADRESSE]
IP_ADRESSE: Die IP der VM zu der Connected werden soll (Siehe VM Adressen)
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.
-
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.
-
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)
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
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
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.
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
Benutzername: otto
Passwort: ***********