Technik:API-Gateway: Unterschied zwischen den Versionen
Beispielkonfiguration für ein API-Gateway mit 2 Report Server Instanzen als Link. |
Keine Bearbeitungszusammenfassung |
||
| (3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
__TOC__ | __TOC__{{Hinweis|Text=Bis CoP 11 Release 1 2026. Ab CoP 11 Release 1 2026.gibt es das Report-Gateway um mehrere Reportserver pro CoPlanner Server zu verwenden.}} | ||
Über das API-Gateway kann z.B. ein CopServer mit zwei Reportservern betrieben werden, auf die mehrere Benutzer gleichmäßig aufgeteilt werden. | |||
=Einrichtung= | =Einrichtung= | ||
1.) Rest.Client-Ordner aus dem Serververzeichnis in das ApiGateway-Verzeichnis kopieren. | 1.) Rest.Client-Ordner aus dem Serververzeichnis in das ApiGateway-Verzeichnis kopieren. | ||
2.) In ApiGateway-Ordner in der Datei appsettings.json die Hosting-URL bzw. den Port festlegen (siehe Konfigurationsdateien) | 2.) In ApiGateway-Ordner in der Datei appsettings.json die Hosting-URL bzw. den Port festlegen (siehe Konfigurationsdateien) | ||
3.) In ApiGateway-Ordner in der Datei ocelot.json werden die Routen für die dahinterliegenden Services definiert. Dabei sind die Standardrouten, welche angepasst werden müssen: | |||
3.) In ApiGateway-Ordner in der Datei ocelot.json werden die Routen für die dahinterliegenden Services definiert. Dabei sind die Standardrouten, welche angepasst werden müssen: | |||
:* <nowiki>https://localhost:4443/coplanner</nowiki> für den Coplanner Server | :* <nowiki>https://localhost:4443/coplanner</nowiki> für den Coplanner Server | ||
:* <nowiki>https://localhost:4444/coplanner</nowiki> für ReportServer 1 und | :* <nowiki>https://localhost:4444/coplanner</nowiki> für ReportServer 1 und | ||
| Zeile 22: | Zeile 18: | ||
Die Clients sollten sich dann direkt auf die URL des API-Gateways verbinden und nicht direkt auf den Server. | Die Clients sollten sich dann direkt auf die URL des API-Gateways verbinden und nicht direkt auf den Server. | ||
Die Cop.ApiGateway.exe kann direkt gestartet werden mit Doppelklick oder mittels Konsole. Dann läuft sie als Konsolenapp. Sie kann aber auch als Windowsservice mit <pre>sc create <gewünschter Servicename> binPath=<Vollständiger Pfad zur EXE>"</pre> registriert werden und dann über die Windows-Serviceverwaltung verwaltet werden. Alternativ können weitere Parameter direkt beim Anlegen des Service definiert werden | Die Cop.ApiGateway.exe kann direkt gestartet werden mit Doppelklick oder mittels Konsole. Dann läuft sie als Konsolenapp. Sie kann aber auch als Windowsservice mit <pre>sc create <gewünschter Servicename> binPath=<Vollständiger Pfad zur EXE>"</pre> registriert werden und dann über die Windows-Serviceverwaltung verwaltet werden. Alternativ können weitere Parameter direkt beim Anlegen des Service definiert werden - welche es gibt finden Sie in der [https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/sc-create Microsoft-Dokumentation zu sc create]. | ||
| Zeile 31: | Zeile 27: | ||
:* JwtBearerIssuer: sollte nicht geändert werden | :* JwtBearerIssuer: sollte nicht geändert werden | ||
:* JwtBearerIssuerKey: sollte nicht geändert werden | :* JwtBearerIssuerKey: sollte nicht geändert werden | ||
:* PathBase: | :* PathBase: Sofern für den Aufruf des Gateways eine Erweiterung hinter dem Port notwendig ist, kann diese hier angegeben werden. Will man also z.B. nicht über <nowiki>https://servername.coplanner.com:4446</nowiki> zugreifen, sondern über <nowiki>https://servername.coplanner.com:4446/coplanner</nowiki>, muss hier /coplanner angegeben werden | ||
===Kestrel=== | ===Kestrel=== | ||
:* Endpoints: Hier wird definiert, wie auf das Service zugegriffen wird und sofern https verwendet wird, welches Zertifikat | :* Endpoints: Hier wird definiert, wie auf das Service zugegriffen wird und, sofern https verwendet wird, welches Zertifikat genutzt werden soll. | ||
Beispiele: | Beispiele: | ||
Verwendung bei nur http: | Verwendung bei nur http: | ||
< | <syntaxhighlight lang="json"> | ||
Http": { | "Http": { | ||
"Url": "http://+:4448" | |||
} | } | ||
</ | </syntaxhighlight> | ||
Verwendung, wenn das Zertifikat in einem Verzeichnis abgelegt wird (muss nicht installiert werden): | Verwendung, wenn das Zertifikat in einem Verzeichnis abgelegt wird (muss nicht installiert werden): | ||
< | <syntaxhighlight lang="json"> | ||
"HttpsInlineCertFile": { | "HttpsInlineCertFile": { | ||
"Url": "https://+:4448", | |||
"Certificate": { | |||
"Path": "./MeinZertifikat.pfx", | |||
"Password": "MeinPasswort" | |||
} | |||
} | } | ||
</ | </syntaxhighlight> | ||
Verwendung, wenn das Zertifikat in einem Zertifikatsspeicher liegt: | Verwendung, wenn das Zertifikat in einem Zertifikatsspeicher liegt: | ||
< | <syntaxhighlight lang="json"> | ||
"HttpsInlineCertStore": { | "HttpsInlineCertStore": { | ||
"Url": "https://+:4448", | |||
"Certificate": { | |||
"Subject": "myservername.coplanner.com", | |||
"Store": "Root", | |||
"Location": "LocalMachine", | |||
"AllowInvalid": "false" | |||
} | |||
} | } | ||
</ | </syntaxhighlight> | ||
==ocelot.json== | ==ocelot.json== | ||
Hier werden die Routen angepasst. | Hier werden die Routen angepasst. | ||
:* DownstreamScheme: | :* DownstreamScheme: Gibt an, ob per http oder https zugegriffen wird. | ||
:* DownstreamPathTemplate: | :* DownstreamPathTemplate: Hier wird definiert, wie die URL hinter <DownstreamScheme>://<Host>:<Port> weitergeht. In der Standardkonfiguration wird davon ausgegangen, dass die WebAppUrl des Servers <nowiki>https://localhost:4443/coplanner ist. Ist das /coplanner in der WebAppUrl nicht verwendet, so muss es hier aus den DownStreamPathTemplate entfernt werden. | ||
:* Host: Hostname unter dem das Service erreichbar ist | :* Host: Hostname unter dem das Service erreichbar ist. | ||
:* Port: Port unter dem das Service erreichbar ist | :* Port: Port unter dem das Service erreichbar ist. | ||
z.B.: | z.B.: | ||
< | <syntaxhighlight lang="json"> | ||
"DownstreamPathTemplate": "/coplanner/api/v1.0/commands/{url}", | "DownstreamPathTemplate": "/coplanner/api/v1.0/commands/{url}", | ||
"DownstreamScheme": "https", | "DownstreamScheme": "https", | ||
"DownstreamHostAndPorts": [ | "DownstreamHostAndPorts": [ | ||
{ | { | ||
"Host": "servername.coplanner.com", | |||
"Port": 4443 | |||
} | } | ||
</ | ] | ||
</syntaxhighlight> | |||
Gibt es Routen, wie den Reportserver, bei dem | Gibt es Routen, wie den Reportserver, bei dem mehr als eine Instanz betrieben werden soll, wird das folgendermaßen angegeben: | ||
< | <syntaxhighlight lang="json"> | ||
// reports | |||
{ | |||
"DownstreamPathTemplate": "/coplanner/api/v1.0/reports/{everything}", | |||
"DownstreamScheme": "https", | |||
"DownstreamHostAndPorts": [ | |||
{ | { | ||
"Host": "servername.coplanner.com", | |||
"Port": 4444 | |||
}, | }, | ||
{ | { | ||
"Host": "servername.coplanner.com", | |||
"Port": 4445 | |||
} | } | ||
], | |||
</ | </syntaxhighlight> | ||
==NLog.Server.config bzw. NLog.Service.config== | ==NLog.Server.config bzw. NLog.Service.config== | ||
Prinzipiell kann hier mehr angepasst werden, aber die grundlegenden Eigenschaften: | Prinzipiell kann hier mehr angepasst werden, aber die grundlegenden Eigenschaften: | ||
:* logDirectory: Verzeichnis ohne den Dateinamen, wo hingeloggt werden soll | :* logDirectory: Verzeichnis ohne den Dateinamen, wo hingeloggt werden soll. | ||
:* fileName: Hier kann man den Dateinamen anpassen oder wenn man möchte auch den gesamten Pfad | :* fileName: Hier kann man den Dateinamen anpassen oder wenn man möchte auch den gesamten Pfad. | ||
:* archiveAboveSize: | :* archiveAboveSize: Gibt an, ab welcher Dateigröße eine neue Datei geschrieben wird. Der Standard von 10000000 entspricht 10 MB. | ||
==[[Technik:CoPlanner-Server#SvrConfig.xml|SvrConfig.xml]]== | ==[[Technik:CoPlanner-Server#SvrConfig.xml|SvrConfig.xml]]== | ||
| Zeile 118: | Zeile 115: | ||
== Beispielkonfiguration für 2 Report Server Instanzen == | == Beispielkonfiguration für 2 Report Server Instanzen == | ||
[https:// | [https://oc.coplanner.com/index.php/s/DtC7LdMjgr42s33 Beispiel] | ||
Aktuelle Version vom 2. April 2026, 07:40 Uhr
| Hinweis Bis CoP 11 Release 1 2026. Ab CoP 11 Release 1 2026.gibt es das Report-Gateway um mehrere Reportserver pro CoPlanner Server zu verwenden. |
Über das API-Gateway kann z.B. ein CopServer mit zwei Reportservern betrieben werden, auf die mehrere Benutzer gleichmäßig aufgeteilt werden.
Einrichtung
1.) Rest.Client-Ordner aus dem Serververzeichnis in das ApiGateway-Verzeichnis kopieren. 2.) In ApiGateway-Ordner in der Datei appsettings.json die Hosting-URL bzw. den Port festlegen (siehe Konfigurationsdateien) 3.) In ApiGateway-Ordner in der Datei ocelot.json werden die Routen für die dahinterliegenden Services definiert. Dabei sind die Standardrouten, welche angepasst werden müssen:
- https://localhost:4443/coplanner für den Coplanner Server
- https://localhost:4444/coplanner für ReportServer 1 und
- https://localhost:4445/coplanner für ReportServer 2.
Sollten diese unter anderen Ports betrieben werden, sind entsprechend Anpassungen notwendig.
Zwei ReportServer kann man anlegen, indem der ReportServer-Ordner kopiert und mit einer angepassten Konfiguration gestartet wird.
Die Clients sollten sich dann direkt auf die URL des API-Gateways verbinden und nicht direkt auf den Server.
Die Cop.ApiGateway.exe kann direkt gestartet werden mit Doppelklick oder mittels Konsole. Dann läuft sie als Konsolenapp. Sie kann aber auch als Windowsservice mit
sc create <gewünschter Servicename> binPath=<Vollständiger Pfad zur EXE>"
registriert werden und dann über die Windows-Serviceverwaltung verwaltet werden. Alternativ können weitere Parameter direkt beim Anlegen des Service definiert werden - welche es gibt finden Sie in der Microsoft-Dokumentation zu sc create.
Konfigurationsdateien
appsettings.json
WebConfig
- JwtBearerIssuer: sollte nicht geändert werden
- JwtBearerIssuerKey: sollte nicht geändert werden
- PathBase: Sofern für den Aufruf des Gateways eine Erweiterung hinter dem Port notwendig ist, kann diese hier angegeben werden. Will man also z.B. nicht über https://servername.coplanner.com:4446 zugreifen, sondern über https://servername.coplanner.com:4446/coplanner, muss hier /coplanner angegeben werden
Kestrel
- Endpoints: Hier wird definiert, wie auf das Service zugegriffen wird und, sofern https verwendet wird, welches Zertifikat genutzt werden soll.
Beispiele:
Verwendung bei nur http:
"Http": {
"Url": "http://+:4448"
}Verwendung, wenn das Zertifikat in einem Verzeichnis abgelegt wird (muss nicht installiert werden):
"HttpsInlineCertFile": {
"Url": "https://+:4448",
"Certificate": {
"Path": "./MeinZertifikat.pfx",
"Password": "MeinPasswort"
}
}Verwendung, wenn das Zertifikat in einem Zertifikatsspeicher liegt:
"HttpsInlineCertStore": {
"Url": "https://+:4448",
"Certificate": {
"Subject": "myservername.coplanner.com",
"Store": "Root",
"Location": "LocalMachine",
"AllowInvalid": "false"
}
}ocelot.json
Hier werden die Routen angepasst.
- DownstreamScheme: Gibt an, ob per http oder https zugegriffen wird.
- DownstreamPathTemplate: Hier wird definiert, wie die URL hinter <DownstreamScheme>://<Host>:<Port> weitergeht. In der Standardkonfiguration wird davon ausgegangen, dass die WebAppUrl des Servers <nowiki>https://localhost:4443/coplanner ist. Ist das /coplanner in der WebAppUrl nicht verwendet, so muss es hier aus den DownStreamPathTemplate entfernt werden.
- Host: Hostname unter dem das Service erreichbar ist.
- Port: Port unter dem das Service erreichbar ist.
z.B.:
"DownstreamPathTemplate": "/coplanner/api/v1.0/commands/{url}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "servername.coplanner.com",
"Port": 4443
}
]
Gibt es Routen, wie den Reportserver, bei dem mehr als eine Instanz betrieben werden soll, wird das folgendermaßen angegeben:
// reports
{
"DownstreamPathTemplate": "/coplanner/api/v1.0/reports/{everything}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "servername.coplanner.com",
"Port": 4444
},
{
"Host": "servername.coplanner.com",
"Port": 4445
}
],NLog.Server.config bzw. NLog.Service.config
Prinzipiell kann hier mehr angepasst werden, aber die grundlegenden Eigenschaften:
- logDirectory: Verzeichnis ohne den Dateinamen, wo hingeloggt werden soll.
- fileName: Hier kann man den Dateinamen anpassen oder wenn man möchte auch den gesamten Pfad.
- archiveAboveSize: Gibt an, ab welcher Dateigröße eine neue Datei geschrieben wird. Der Standard von 10000000 entspricht 10 MB.
SvrConfig.xml
Wenn mehrere Reportserver vorhanden sind, dann wird die ReportServerUrl hier nicht angegeben.