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

ParameterDefaultvärde/exempelKommentar
server.port8881Spring-boot serverport
update.webservice.urlhttp://localhost:8081/skltp-ei/update-service/v1URL för Update webbtjänsten
processnotification.webservice.url
http://localhost:8081/skltp-ei/notification-service/v1URL för ProcessNotification webbtjänsten
findcontent.webservice.url
http://localhost:8082/skltp-ei/find-content-service/v1URL för FindContent webtjänsten
management.endpoints.web.exposure.include
hawtio,jolokiaBehöver vara 'hawtio,jolokia' för att hawtio ska köras, 'health' behövs för probes
management.endpoint.health.probes.enabledtrue (sedan v3.2.1)Exponera liveness/readiness probes
management.endpoint.health.show-detailsalways (sedan v3.2.1)Visa detaljer om health indicators
management.health.livenessState.enabledtrue (sedan v3.2.1)Aktivera inbyggd livess-indikator
management.health.readinessState.enabledtrue (sedan v3.2.1)Aktivera inbyggd readiness-indikator
ei.hsa.id
ei-hsa-idEIs egna HSA id
ei.alternative.hsa.id
ei-hsa-idAlternativ till EIs HSA-ID
vp.hsa.id
vp-hsa-idVP's sender-ID för interna anrop
vp.instance.id
vp-instance-idVP's instans-ID för interna anrop
getlogicaladdresses.serviceEndpointUrl
http://localhost:8080/vp/getlogicaladdreessesUtgå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 5000Connect timeout ms för GLABSC anrop
getlogicaladdresses.requestTimeoutMs 5000Request timeout ms för GLABSC anrop
processnotification.serviceEndpointUrl http://localhost:8080/vp/processnotificationUtgå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 7200Timeout innan subscriber cachen förnyas genom anrop med GLABSC tjänsten
subscriber.cache.reset.urlhttp://localhost:8083/skltp-ei/resetcacheAdress för att tömma prenumerantcachen
subscriber.cache.status.urlhttp://localhost:8083/skltp-ei/subscriber/statusAdress för att få status på prenumeranter
ei.status.urlhttp://localhost:8083/skltp-ei/statusAdress 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:

ParameterVärdeKommentar
innodbonDefault engine ska vara InnoDB
innodb_log_buffer_size8MRekommendation
innodb_file_per_tableonReorganisering av data underlättas om en tabell har egen fil för lagring
innodb_buffer_pool_size2GNågonstans mellan 50-75% av RAM är rekommenderat
innodb_log_file_size512MRunt 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_pathibdata1: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 
bort i globala filen (/etc/mysql/my.cnf)
default-character-setutf8TBD
collation-serverutf8_unicode_ciTBD
character-set-serverutf8TBD



 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.

Observera att databasen ska backas upp online, dvs. en så kallad "hot" backup där rekommendation är:
  • 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.

ParameterExempel
spring.datasource.urljdbc:mysql://ei-db:3306/ei?serverTimezone=Europe/Stockholm
spring.datasource.usernameei
spring.datasource.passwordsecret
spring.datasource.driver-class-namecom.mysql.jdbc.Driver
spring.datasource.jpa.database-platformorg.hibernate.dialect.MySQL5InnoDBDialect
spring.datasource.jpa.hibernate.ddl-autoupdate

Köhantering Active MQ

ParameterVärdeKommentar
collect.queue.nameskltp.ei.collectNamn på collect kön i AMQ
collect.queue.completion.size1000Antal anrop i kön innan den collectas och skickas till process kön |
collect.queue.completion.timeout5Max sekunder meddelande kan ligga i collect kön innan de skickas till processkön
update.collect.threshold1Tröskelvärde för antal engagemang i ett anrop för att de ska hamna direkt i Processkön
process.queue.nameskltp.ei.processNamn på processkön i AMQ
notification.queue.prefixEI.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=falseURL till AMQ broker
activemq.broker.user
adminAnvändarnamn för ActiveMQ-användare
activemq.broker.password
secretLösenord för ActiveMQ-användare
activemq.broker.maximum-redeliveries
2Antal leveransförsök som görs innan meddelanden hamnar i dead letter-kön. Standardinställningen är 2
activemq.broker.redelivery-delay
5000Tid mellan leveransförsök i millisekunder. Standardinställningen är 5000 ms
activemq.broker.use-exponential-backoff (1)falseSä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)600000Maximal 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-packagestrueStandard 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

log4j2.xml
  <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>