Operation

Clustering


This section addresses the situation where a Plume cluster needs to be deployed if session affinity is not preserved. In this case, several aspects need to be taken into account.

To centralise the various data stored at cluster instance level, you need to install the Redis key-value database and configure access to it from Plume. To do this, the following properties must be defined:

spring.redis.host=<redis host>
spring.redis.port=6379


For more information, see the [Spring Data Redis] documentation (https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/)

Sessions

Plume relies on the user session to save emails as they are being written. It is therefore necessary to store sessions in Redis. To use Redis as a backend for storing HTTP sessions, add the property:

spring.session.store-type=redis

Caches

Various data are cached for performance reasons. These caches must therefore be replicated on each cluster instance. To do this, add the following property:

spring.cache.type=redis

Temporary files

The final aspect to consider is the management of temporary files used to store email attachments. These are stored temporarily in a directory (default: ${java.io.tmpdir}/plume/attachments ). This directory must be shared between the different instances of the cluster. To do this, you can change the location of the directory used with the plume.tmp.dir property.

Logs

Log management is based on Spring and its Logback integration. To configure the logs generated by the application, simply add the required properties to the property file.

The default log level is INFO.

Here are some configuration examples:

  • To modify the application log level:

    logging.level.root=trace
  • To modify the application log level:

    logging.level.com.arondor=ERROR
  • To define the log file used:

    logging.file=plume.log  


For more information, see the [Spring Boot Logging] documentation (https://docs.spring.io/spring)-boot/docs/current/reference/html/howto-logging.html)

Session

It can be configured with the following parameters:

server.servlet.session.timeout=30
server.servlet.session.cookie.max-age=30