Dette dokument indeholder en beskrivelse af hvordan National Adviseringsservice 2 (herefter NAS2) driftes på et NSP Backend miljø.
Læseren forventes at have kendskab til Sundhedsdatastyrelsens platform NSP, samt generelt kendskab til WildFly applikation server, Docker, Docker Compose samt Ubuntu Linux operativ system.
Dato | Ansvarlig | Beskrivelse |
---|---|---|
TBD | Jacob Qvortrup | Draft udgave af driftvejledningen |
Reference | Beskrivelse |
---|---|
NAS2 | National Adviseringsservice 2 |
NAS1 | National Adviseringsservice 1 |
NSP | Den nationale service platform |
Driften | NSP Leverandøren og NSP Driftleverandøren |
SDS | Sundhedsdatastyrelsen |
Installationsvejledning | NAS2 - Installationsvejledning |
Konfiguration af NAS2 sker i filerne i "compose/configuration" mappen som beskrevet i installationsvejledningen. I det følgende gennemgåes hver enkelt services konfigurationsfiler i detaljer.
Denne service konfigureres i filerne "notificationbroker.properties" og "log4j-notificationbroker.xml".
Property | Beskrivelse |
---|---|
kafka.producer.bootstrap.servers | Kommasepareret liste af Kafka servere som NAS2 skal anvende. Denne liste bør indeholde alle noderne i Kafka clusteret |
kafka.producer.client.id | Navnet som NAS2 vil fremgå med i listen af Producers på et Kafka Cluster. |
nsp.kafka.producer.component.name | Navnet på NAS2 komponenten |
nsp.kafka.producer.component.abbreviation | Kort navn på NAS2 komponenten |
nsp.kafka.producer.component.version | Versionen af NAS2 komponenten |
nsp.kafka.producer.service.name | Navnet på den service i NAS2 der anvender Kafka |
datasource.jndi | JNDI navnet på den datasource der giver adgang til NAS2 databasen. |
app.endpoint | Service endpoint (anvendes i DKS servlet) |
Alle properties der starter med "kafka.producer." vil blive givet videre til NSP Kafka Clients API'et og derved videre til Kafka Clients. Det er derved muligt at konfigurere alle aspekter af Kafka klienten som måtte være ønsket, blot ved at tilføje nye properties. Hvis f.eks. Kafka konfigurationen "abc" skulle sætte til "42" så tilføjes blot linien "kafka.producer.abc=42".
Denne fil indeholder en Log4J opsætning der følger gængs standard på NSP.
Denne service konfigureres i filerne "idlist.properties" og "log4j-idlist.xml"
Property | Beskrivelse |
---|---|
datasource.jndi | JNDI navnet på den datasource der giver adgang til NAS2 databasen. |
app.endpoint | Service endpoint (anvendes i DKS servlet) |
Denne fil indeholder en Log4J opsætning der følger gængs standard på NSP.
Denne service konfigureres i filerne "subscriptionmanager.properties" og "log4j-subscriptionmanager.xml"
Property | Beskrivelse |
---|---|
kafka.consumer.bootstrap.servers | Kommasepareret liste af Kafka servere som NAS2 skal anvende. Denne liste bør indeholde alle noderne i Kafka clusteret |
kafka.consumer.client.id | Navnet som NAS2 vil fremgå med i listen af Consumers på et Kafka Cluster. |
nsp.kafka.consumer.component.name | Navnet på NAS2 komponenten |
nsp.kafka.consumer.component.abbreviation | Kort navn på NAS2 komponenten |
nsp.kafka.consumer.component.version | Versionen af NAS2 komponenten |
nsp.kafka.consumer.service.name | Navnet på den service i NAS2 der anvender Kafka |
datasource.jndi | JNDI navnet på den datasource der giver adgang til NAS2 databasen. |
app.endpoint | Service endpoint (anvendes i DKS servlet) |
Denne fil indeholder en Log4J opsætning der følger gængs standard på NSP.
Denne service konfigureres i filerne "pullpointfactory.properties" og "log4j-pullpointfactory.xml"
Property | Beskrivelse |
---|---|
kafka.consumer.bootstrap.servers | Kommasepareret liste af Kafka servere som NAS2 skal anvende. Denne liste bør indeholde alle noderne i Kafka clusteret |
kafka.consumer.client.id | Navnet som NAS2 vil fremgå med i listen af Consumers på et Kafka Cluster. |
nsp.kafka.consumer.component.name | Navnet på NAS2 komponenten |
nsp.kafka.consumer.component.abbreviation | Kort navn på NAS2 komponenten |
nsp.kafka.consumer.component.version | Versionen af NAS2 komponenten |
nsp.kafka.consumer.service.name | Navnet på den service i NAS2 der anvender Kafka |
datasource.jndi | JNDI navnet på den datasource der giver adgang til NAS2 databasen. |
app.endpoint | Service endpoint (anvendes i DKS servlet) |
Denne fil indeholder en Log4J opsætning der følger gængs standard på NSP.
Denne service konfigureres i filerne "pullpoint.properties" og "log4j-pullpoint.xml"
Property | Beskrivelse |
---|---|
kafka.consumer.bootstrap.servers | Kommasepareret liste af Kafka servere som NAS2 skal anvende. Denne liste bør indeholde alle noderne i Kafka clusteret |
kafka.consumer.client.id | Navnet som NAS2 vil fremgå med i listen af Consumers på et Kafka Cluster. |
nsp.kafka.consumer.component.name | Navnet på NAS2 komponenten |
nsp.kafka.consumer.component.abbreviation | Kort navn på NAS2 komponenten |
nsp.kafka.consumer.component.version | Versionen af NAS2 komponenten |
nsp.kafka.consumer.service.name | Navnet på den service i NAS2 der anvender Kafka |
datasource.jndi | JNDI navnet på den datasource der giver adgang til NAS2 databasen. |
app.endpoint | Service endpoint (anvendes i DKS servlet) |
Denne fil indeholder en Log4J opsætning der følger gængs standard på NSP.
Adgang til NAS2 databasen styres gennem filen "nas-ds.xml" - Denne skal matche det NSP miljø hvor komponenten afvikles i.
NAS2 skal anvender NSP Kafka Clusteret på NSP Backend miljøet. Der kræves ikke nogen særlig opsætning af Kafka i forhold til det eksisterende NSP Kafka Cluster.
I det følgende gennemgåes de manuelle aktiviteter der skal ske i databasen og i Kafka ifm driften af NAS2.
For at NAS2 skal kunne modtage adviseringer på et Topic skal dette oprettes i Kafka og i databasen.
Først oprettes Kafka Topic via følgende kommando:
bin/kafka-topics.sh --create --bootstrap-server kafka-host:port --replication-factor 2 --partitions 15 --topic dk.nsp.nas.fmk.MedicineCard |
Herefter mappes dette Kafka Topic til et WS-Notification Topic i databasen på følgende måde:
INSERT INTO TopicMapping (topic, internal_topic) VALUES ('http://www.dkma.dk/medicinecard/xml.schema/2012/06/01:MedicineCard', 'dk.nsp.nas.fmk.MedicineCard'); |
For at lukke for nye adviseringer til et Topic opdateres rækken i "TopicMapping" på følgende måde:
UPDATE TopicMapping SET active = false where topic ="http://www.dkma.dk/medicinecard/xml.schema/2012/06/01:MedicineCard"; |
For at slette et topic bør det først være inaktivt i en periode således at der ikke kan afleveres nye data og modtagere kan nå at afhente alle deres adviseringer. Derefter skal nedenstående udføres.
Nedenstående sletter topic fra NAS databasen.
delete from TopicMapping where topic = 'http://www.dkma.dk/medicinecard/xml.schema/2012/06/01:MedicineCard'; |
Nedenstående sletter topic i kafka.
bin/kafka-topics.sh --delete --bootstrap-server kafka-host:port --topic dk.nsp.nas.fmk.MedicineCard |
Hvis der opstår et behov i Kafka for at udvide antallet af partitioner for et Topic, skal der ikke foretages noget i NAS2 idet den selv opdager dette og tilpasser sig det nye antal.
Alle services i NAS udstiller en status side. På denne side fremgår servicens versionsnummer samt status for adgang til database og/eller Kafka. Status siden kan tilgås via http://CAVE/larservice/health
Eksempel på svar på fra status-siden.
HTTP/1.1 200 OK Connection: keep-alive X-Powered-By: Undertow/1 Server: WildFly/8 Content-Type: application/json Content-Length: 82 Date: Fri, 10 May 2019 08:06:26 GMT { "version": "1.0.0-SNAPSHOT" ,"database": "OK" ,"kafka streamer": "OK" } |
Status-siden returnerer følgende status koder afhængig af servicens status.
200: Applikationen er sund
500: Der er opstået en fejl i applikationen eller en af de services der integreres med.
Såfremt der er problemer med adgang til servicens database, vises nedenstående fejl. Bemærk at den giver en HTTP statuskode 500, og at man i body kan se, at det er cave servicen der ikke er OK.
|
Følgende årsager kan resultere i en statuskode 500.
Hvis status-siden returnerer HTTP status 500 bør man tjekke applikationsloggen, da fejl logges her til.
Servicen kan genstartes ved at genstarte den docker container, som servicen den kører i.
Database modellen er beskrevet i Design og Arkitektur dokumentet (LINK MANGLER)