SKLTP EI - Konfiguration
Generellt
En vanlig fil med Java-properties kan användas för att ändra inställningar. Aktivera genom att sätta flaggan -Dspring.config.import=/etc/ei-backend/application.properties
Parameter | Defaultvärde/exempel | Kommentar |
---|---|---|
server.port | 8881 | Spring-boot serverport |
update.webservice.url | http://localhost:8081/skltp-ei/update-service/v1 | URL för Update webbtjänsten |
processnotification.webservice.url | http://localhost:8081/skltp-ei/notification-service/v1 | URL för ProcessNotification webbtjänsten |
findcontent.webservice.url | http://localhost:8082/skltp-ei/find-content-service/v1 | URL för FindContent webtjänsten |
management.endpoints.web.exposure.include | hawtio,jolokia | Behöver vara 'hawtio,jolokia' för att hawtio ska köras, 'health' behövs för probes |
management.endpoint.health.probes.enabled | true (sedan v3.2.1) | Exponera liveness/readiness probes |
management.endpoint.health.show-details | always (sedan v3.2.1) | Visa detaljer om health indicators |
management.health.livenessState.enabled | true (sedan v3.2.1) | Aktivera inbyggd livess-indikator |
management.health.readinessState.enabled | true (sedan v3.2.1) | Aktivera inbyggd readiness-indikator |
ei.hsa.id | ei-hsa-id | EIs egna HSA id |
ei.alternative.hsa.id | ei-hsa-id | Alternativ till EIs HSA-ID |
vp.hsa.id | vp-hsa-id | VP's sender-ID för interna anrop |
vp.instance.id | vp-instance-id | VP's instans-ID för interna anrop |
getlogicaladdresses.serviceEndpointUrl | http://localhost:8080/vp/getlogicaladdreesses | Utgående URL till GLABSC tjänsten |
getlogicaladdresses.logicalAddress | ${vp.hsa.id} | HSA id till GLABSC producenten |
getlogicaladdresses.vpSenderId | ${vp.hsa.id} | VP's sender-ID för interna anrop |
getlogicaladdresses.vpInstanceId | ${vp.instance.id} | VP's instans-ID för interna anrop |
getlogicaladdresses.connectTimeoutMs | 5000 | Connect timeout ms för GLABSC anrop |
getlogicaladdresses.requestTimeoutMs | 5000 | Request timeout ms för GLABSC anrop |
processnotification.serviceEndpointUrl | http://localhost:8080/vp/processnotification | Utgående URL för ProcessNotifications |
processnotification.vpSenderId | ${vp.hsa.id} | VP's sender-ID för interna anrop |
processnotification.vpInstanceId | ${vp.instance.id} | VP's instans-ID för interna anrop |
subscriber.cache.file.name | Filnamn för lokal cache av subscribers | |
subscriber.cache.timeToLiveSeconds | 7200 | Timeout innan subscriber cachen förnyas genom anrop med GLABSC tjänsten |
subscriber.cache.reset.url | http://localhost:8083/skltp-ei/resetcache | Adress för att tömma prenumerantcachen |
subscriber.cache.status.url | http://localhost:8083/skltp-ei/subscriber/status | Adress för att få status på prenumeranter |
ei.status.url | http://localhost:8083/skltp-ei/status | Adress för att få status på EI |
update-notification.not.allowed.hsaid.list | ${ei.hsa.id},${vp.hsa.id} | Otillåtna HSA-IDn för att undvika recirkulation av anrop |
Databas
Serverinställningar
Servern ska sättas upp med olika disk-partitioner för log-, data-, och operativsystem.
En riktlinje för storleken på databasen är att det krävs ca 8GB per 10 millioner poster. Dvs. utrymmet som krävs för en kapacitet om 250 millioner poster är då 200GB disk för datalagring.
Som server kan ett standardblock användas med följande rekommendationer med avseende på resurser:
- 1x CPU (2.5GHz) med dubbla kärnor eller liknande
- 4GB RAM
- 200GB disk-partition för Datafiler
- 8GB separat disk-partition för OS
- 4GB separat disk-partition för Logfiler
- Linux OS
- MySQL 5.5 eller senare
Rekommendation avseende inställningar för MySQL:
Parameter | Värde | Kommentar |
---|---|---|
innodb | on | Default engine ska vara InnoDB |
innodb_log_buffer_size | 8M | Rekommendation |
innodb_file_per_table | on | Reorganisering av data underlättas om en tabell har egen fil för lagring |
innodb_buffer_pool_size | 2G | Någonstans mellan 50-75% av RAM är rekommenderat |
innodb_log_file_size | 512M | Runt 25% av innodb_buffer_pool_size är rekommenderat |
innodb_log_group_home_dir | <på egen partition> | Logfiler ska inte lagras på samma disk-partition som datafiler. |
innodb_data_home_dir | <på egen partition> | Datafiler ska lagras på separat egen disk-partition, dvs. ej samma som root eller logfiler. |
innodb_data_file_path | ibdata1:100M:autoextend:max:5G | ...vad är kravet till denna parameter? |
innodb_log_arch_dir | <på egen partition> | Arkivfiler ska lagras på separat egen disk-partition, dvs. ej samma som root eller logfiler. |
bind-address | <ipadress> | Ipadress mysql skall lyssna på. Notera att bind-address behöver kommenteras |
default-character-set | utf8 | TBD |
collation-server | utf8_unicode_ci | TBD |
character-set-server | utf8 | TBD |
Det ska baktas att inställningar som ökar prestanda på bekostnad av transaktionssäkerhet som tex innodb_flush_method och innodb_flush_log_at_trx_commit inte ska ställas in på ett sätt som äventyrar konsistensen i databasen.
- Full backup 1 ggr per vecka
- Inkrementell backup 2 ggr per dygn
- Media för backup ska lagras på annan geografisk plats
Applikationsinställningar
Inställningar för applikation:
Applikationen använder Springs standardinställningar för JDBC.
Parameter | Exempel |
---|---|
spring.datasource.url | jdbc:mysql://ei-db:3306/ei?serverTimezone=Europe/Stockholm |
spring.datasource.username | ei |
spring.datasource.password | secret |
spring.datasource.driver-class-name | com.mysql.jdbc.Driver |
spring.datasource.jpa.database-platform | org.hibernate.dialect.MySQL5InnoDBDialect |
spring.datasource.jpa.hibernate.ddl-auto | update |
Köhantering Active MQ
Parameter | Värde | Kommentar |
---|---|---|
collect.queue.name | skltp.ei.collect | Namn på collect kön i AMQ |
collect.queue.completion.size | 1000 | Antal anrop i kön innan den collectas och skickas till process kön | |
collect.queue.completion.timeout | 5 | Max sekunder meddelande kan ligga i collect kön innan de skickas till processkön |
update.collect.threshold | 1 | Tröskelvärde för antal engagemang i ett anrop för att de ska hamna direkt i Processkön |
process.queue.name | skltp.ei.process | Namn på processkön i AMQ |
notification.queue.prefix | EI.NOTIFICATION. | Prefix för namn på notification-köer i AMQ. Kö-namnet bildas av prefixet och prenumerantens logiska adress. Konfigurerbar sedan v3.2.1, default är tidigare hårdkodat värde. |
activemq.broker.url | vm://localhost?broker.persistent=false | URL till AMQ broker |
activemq.broker.user | admin | Användarnamn för ActiveMQ-användare |
activemq.broker.password | secret | Lösenord för ActiveMQ-användare |
activemq.broker.maximum-redeliveries | 2 | Antal leveransförsök som görs innan meddelanden hamnar i dead letter-kön. Standardinställningen är 2 |
activemq.broker.redelivery-delay | 5000 | Tid mellan leveransförsök i millisekunder. Standardinställningen är 5000 ms |
activemq.broker.use-exponential-backoff (1) | false | Sätt till true om exponential backoff ska användas, annars false. |
activemq.broker.backoff-multiplier (1) | 3 | Om exponential backoff ovan är satt till true, kommer varje omsändningsförsök n att fördröjas med föregående delay * multiplier. Det första omsändningsförsöket sker efter 5 sekunder i exemplet. Exempel: försök 1: 5 sek försök 2: 5* 3 = 15 sek försök 3: 15* 3 = 45 sek försök 4: 45 * 3 = 135 sek försök 5: 135 * 3 = 405 sek |
activemq.broker.maximum-redelivery-delay (1) | 600000 | Maximal tid mellan leveransförsök i millisekunder, om exponential backoff används. Standardinställningen är 600000 ms (10 minuter). |
activemq.broker.notification.maximum-redeliveries (1) | ${activemq.broker.maximum-redeliveries} | Frivillig parameter med möjlighet att sätta activemq.broker.maximum-redeliveries endast för notification-köer. |
activemq.broker.notification.redelivery-delay (1) | ${activemq.broker.redelivery-delay} | Frivillig parameter med möjlighet att sätta activemq.broker.redelivery-delay endast för notification-köer. |
activemq.broker.notification.use-exponential-backoff (1) | ${activemq.broker.use-exponential-backoff} | Frivillig parameter med möjlighet att sätta activemq.broker.use-exponential-backoff endast för notification-köer. |
activemq.broker.notification.backoff-multiplier (1) | ${activemq.broker.backoff-multiplier} | Frivillig parameter med möjlighet att sätta activemq.broker.backoff-multiplier endast för notification-köer. |
activemq.broker.notification.maximum-redelivery-delay (1) | ${activemq.broker.maximum-redelivery-delay} | Frivillig parameter med möjlighet att sätta activemq.broker.maximum-redelivery-delay endast för notification-köer. |
camel.component.activemq.broker-url | ${activemq.broker.url} | Adress till ActiveMQ |
camel.component.activemq.trust-all-packages | true | Standard för ActiveMQ är att inte tillåta serialisering av godtyckliga Javaobjekt. Denna inställning ändrar detta beteende. |
Not (1): Tillagd i EI version 3.2.0
Loggning
Exempel på loggfil för ei-backend
<Configuration status="WARN" monitorInterval="30"> <Properties> <Property name="LOG_PATTERN"> %d %-5p [%t] %-30c - %X{corr.id} %m%n </Property> <Property name="log.dir"> /var/log/ei-backend </Property> </Properties> <Appenders> <RollingRandomAccessFile name="BackendLogFile" fileName="${log.dir}/skltp-ei-backend-app.log" filePattern="${log.dir}/skltp-ei-backend-app.%i"> <PatternLayout pattern="${LOG_PATTERN}"/> <Policies> <!-- KB, MB --> <SizeBasedTriggeringPolicy size="50 MB"/> </Policies> <DefaultRolloverStrategy fileIndex="min" max="10"/> </RollingRandomAccessFile> </Appenders> <Loggers> <!-- Ei application--> <Logger name="se.skltp.ei" level="INFO"/> <Logger name="se.skltp.ei.subscriber" level="INFO"/> <Logger name="se.skltp.ei.service.GetLogicalAddresseesServiceClient" level="WARN"/> <Logger name="se.skltp.ei.EiApplication" level="INFO"/> <!-- Ei application routes--> <Logger name="eiBackendLog" level="debug"/> <!--Apache camel--> <Logger name="org.apache.camel" level="INFO"/> <Logger name="org.apache.camel.impl.engine.InternalRouteStartupManager" level="INFO"/> <!--Jetty--> <Logger name="org.eclipse.jetty" level="WARN"/> <!-- ActiveMQ--> <Logger name="org.apache.activemq" level="WARN"/> <!-- Hibernate --> <Logger name="org.hibernate.SQL" level="WARN"/> <!-- Cxf --> <Logger name="org.apache.cxf" level="WARN"/> <Root level="WARN"> <AppenderRef ref="BackendLogFile"/> </Root> </Loggers> </Configuration>