...
Innehållsförteckning |
---|
För att överlagra defaultinställningar behöver en fil med namnet ei-config-override.properties finnas på classpath.
Generellt
Parameter | Defaultvärde | Kommentar | Inför i version |
---|---|---|---|
EI_HSA_ID | logical-adress | HSA ID för EI, samma som ägare | |
VP_HSA_ID | vp-hsa-id | HSA ID vid kommunikation med Tjänsteplattformen, tex GetLogicalAddresseesByServiceContract | |
GET_LOGICAL_ADDRESSES_BY_SERVICE_CONTRACT_OUTBOUND_URL | Adressen till ändpunkten som exponerar tjänsten GetLogicalAddresseesByServiceContract. http://<host>:<port>/vp/GetLogicalAddresseesByServiceContract/1/rivtabp21. | ||
UPDATE_NOTIFICATION_NOT_ALLOWED_HSA_ID_LIST | ${EI_HSA_ID},${VP_HSA_ID} | En kommaseparerad lista med HSA-Id:n som ej får lov att användas fälten logialaddress eller sourceSystem. Detta gäller för anrop till både Update- och Processnotificationtjänsterna. | 1.1.0 |
LOCAL_EI_SUBSCRIBER_CACHE | /tmp/ei.localCache3 | Sökväg till den fil där cachen med resultatet från GetLogicalAddresseesByServiceContract ska sparas. | 1.1.0 |
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 en sk. pool av JDBC Connections och då även vad gäller JDBC PreparedStatements. Nuvarande implementation är baserad på Apache Commons bibliotek.
Parameter | Defaultvärde | För MYSQL | Kommentar |
---|---|---|---|
EI_JDBC_DRIVER | org.hsqldb.jdbcDriver | com.mysql.jdbc.Driver | |
EI_JDBC_URL | jdbc:hsqldb:mem:. | jdbc:mysql://localhost:3306/ei | |
EI_JDBC_USR | sa | ei_user | |
EI_JDBC_PWD | **** | ||
EI_JDBC_CON_POOL_INIT_SIZE | 1 | Initial storlek för poolen med JDBC Connections | |
EI_JDBC_CON_POOL_MAX_ACTIVE | 10 | Max storlek för poolen med JDBC Connections | |
EI_JDBC_CON_POOL_MAX_IDLE | 2 | Max antal JDBC Connections som får ligga oanvända i poolen |
Köhantering Active MQ
Köhantering är konfigurerbart genom ei-config-override.properties.
http://activemq.apache.org/redelivery-policy.html
Parameter | Värde | Kommentar |
---|---|---|
SOITOOLKIT_MULE_AMQ_MAX_REDELIVERIES | -1 | Antalet försök innan ett meddelande anses felaktigt och skickas till dead letter kön, -1 betyder oändligt antal försök. |
SOITOOLKIT_MULE_AMQ_REDELIVERY_DELAY | 60 000 (60 sek) | Sätter tiden mellan nya omsändningsförsök |
Loggning
Konfigurera applikationsloggning
Applikationsloggning konfigureras i <MULE_HOME>/apps/<EI [frontend|backend]>/classes/log4j.xml, som paketeras med default i applikationen. De log4j.xml som är paketerade i applikationen innehåller default-inställningar typsikst för en produktionsmilj.
Default loggas EI backend till <MULE_HOME>/logs/mule-app-skltp-ei-application-mule-backend-app.log
Default loggas EI frontend till <MULE_HOME>/logs/mule-app-skltp-ei-application-mule-frontend-app.log
Uppdatera lognivåer om det skulle behövas, kräver ingen omstart av applikationer.
Exempel på definitionen av filnamn och placering av logfil för ei frontend:
Kodblock | ||
---|---|---|
| ||
<appender name="ROLLINGFILE" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${mule.home}/logs/mule-app-skltp-ei-application-mule-frontend-app.log" />
<param name="MaxFileSize" value="50MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %-30C - %m%n" />
</layout>
</appender> |
Konfigurera loggning till meddelandekö
I ei-config-override.properties konfigureras till vilka köer logevents skall hamn på.
Parameter | Värde | Kommentar |
---|---|---|
SOITOOLKIT_LOG_INFO_QUEUE | SOITOOLKIT.LOG.STORE | Konfigurera vilken kö INFO events skall hamna på. |
SOITOOLKIT_LOG_ERROR_QUEUE | SOITOOLKIT.LOG.ERROR | Konfigurera vilken kö ERROR events skall hamna på. |
Konfigurera loggnivå för meddelanden
I log4j.xml på respektive app, skltp-ei-application-mule-[front|backend]-app/classes, kan konfiguration av logevents göras.
Slå på loggning till meddelandekö för INFO (ger även ERROR och WARN)
Kodblock | ||
---|---|---|
| ||
<!-- Message logging using soi-toolkit LogTransformer class -->
<logger name="org.soitoolkit.commons.mule.messageLogger">
<level value="INFO" />
</logger> |
Slå på loggning till meddelandekö för WARN (ger endast WARN)
Kodblock | ||
---|---|---|
| ||
<!-- Message logging using soi-toolkit LogTransformer class -->
<logger name="org.soitoolkit.commons.mule.messageLogger">
<level value="WARN" />
</logger> |
Innehållsförteckning |
---|
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
Kodblock | ||||
---|---|---|---|---|
| ||||
<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> |