Overview

main.yml file is located in $JLUPIN_HOME/platform/start/configuration (or %JLUPIN_HOME%\platform\start\configuration) directory and it contains general configuration that controls all function of Main Server.


main.yml parameters

The main configuration file consists of the following sections:

Section 'ZONE'

The appropriate part of the configuration file:

ZONE:
  name: default
[...]

Description:

Parameter Description
name The name of the zone, to which JLupin Node belongs to. This parameter is managed only by JLupin Control Center.

The idea of zone is described in this chapters.

Section 'MAIN_SERVER'

The appropriate part of the configuration file:

[...]
MAIN_SERVER:
  name: NODE_1
  location: DC1
[...]

Description:

Parameter Description
name The name of jBrick - a node identifier used by built-in load balancers and by JLupin Control Center to manage nodes in zones.
location The physical location of jBrick (in which DC is operating). It is used for deployment strategies in JLupin Control Center

Section 'SERVERS'

This section contains infrastructural definitions of an interface (logical server). The detailed description is provided in chapter about Automatic interfaces.

Section 'ENTRY_POINT'

This section contains the logical definitions of an interface (entry point). The detailed description is provided in chapter about Automatic interfaces.

Section 'INITIALIZING_LOGGER'

This section contains configuration of main server logger.

The appropriate part of the configuration file:

[...]
INITIALIZING_LOGGER:
  #directoryPath: 'c:/server/alternative_path/logs'
  fileName: 'main_server_initialize'
  fileExtension: 'log'
  fileSizeInMB: 10
  maxFiles: 10
[...]

Description:

Parameter Description
fileName The prefix main server log file.
fileExtension the extension of main server log file.
fileSizeInMB The maximum log file size, expressed in MB.
maxFiles The maximum number of files. If the limit is exceeded, the first file is used again.

Section 'PROCESS_MANAGER' and 'TECHNICAL_PROCESS_MANAGER'

This section contains the logical definitions of an interface (entry point). The detailed description is provided in chapter about Process managers.

Section 'EVENT_LOG_MANAGER'

Event log manager handles internal events regarding JLupin Platform components and managed microservices. For example, if a microservice disappears the process manager will recover this microservice while putting appropriate message to event log about taken actions. Event log can accessed though different tools:

  • JLupin Local Console (see events list command)
  • HTTP INFORMATION PORT (see /getEventLog URI)

The appropriate part of the configuration file:

[...]
EVENT_LOG_MANAGER:
    howOftenCheckingExpireTimeInMillis: 20000
    logExpireTimeInMillis: 120000
    maximumSizeInMegabytes: 5
[...]

Description:

Parameter Description
howOftenCheckingExpireTimeInMillis How often (the period is expressed in milliseconds) event log manager checks the event log against expired events that should be removed.
logExpireTimeInMillis The expiration time of events, expressed in milliseconds.
maximumSizeInMegabytes The maximum size od event log , expressed in MB. If it is exceeded the event log is flushed immediately.

Section 'MONITORING_MANAGER'

Monitoring manager is responsible for collecting monitoring data from enviroment and provide them do access channels:

  • JMX interface
  • HTTP INFORMATION PORT
  • JLupin Local Console

The appropriate part of the configuration file:

[...]
MONITORING_MANAGER:
    howOftenRefreshAllEnvironmentStateInMillis: 10000
    isJMXEnable: true
[...]

Description:

Parameter Description
howOftenRefreshAllEnvironmentStateInMillis How often (the period is expressed in milliseconds) monitoring manager collects data from the environment.
isJMXEnable The switch that determines is JMX service is enabled.

Section 'LOCK_MANAGER'

The lock manager supports concurrency in accessing individual components of the JLupin node. For example, after microservice restart is initialized no other commands can be performed on that microservice.

The appropriate part of the configuration file:

[...]
LOCK_MANAGER:
    isTurnedOn: true
[...]

Description:

Parameter Description
isTurnedOn The switch that determines of lock manager is turned on. We strongly recommend to keep it running in the production environments.

Section 'SERIALIZER'

In this section you can define which serializer is used for serializing messages being exchanges during microservice to microservice communication.

The appropriate part of the configuration file:

[...]
SERIALIZER:
  microserviceTransmissionEntryPointSerializerProducer: 'com.jlupin.impl.functional.supplier.serializer.JLupinJAVASerializerSupplierImpl'
  microserviceLogicSerializerProducer: 'com.jlupin.impl.functional.supplier.serializer.JLupinFSTSerializerSupplierImpl'
  mainServerInformationEntryPointSerializerProducer: 'com.jlupin.impl.functional.supplier.serializer.JLupinJAVASerializerSupplierImpl'
[...]

Description:

Parameter Description
microserviceTransmissionEntryPointSerializerProducer Serializer class name for microservice communication over transmission entry point. The default serializer is standard one, incl. in JAVA, if you would like to change it for example to FST, please change the value to com.jlupin.impl.functional.supplier.serializer.JLupinFSTSerializerSupplierImpl.
microserviceLogicSerializerProducer Serializer class name for microservice communication over jlrmc entry point. The default serializer is FST, if you would like to change it for example to standard one, incl. in JAVA, please change the value to com.jlupin.impl.functional.supplier.serializer.JLupinJAVASerializerSupplierImpl.
mainServerInformationEntryPointSerializerProducer Serializer class name for main server communication over information entry point. The default serializer is standard one, incl. in JAVA, if you would like to change it for example to FST, please change the value to com.jlupin.impl.functional.supplier.serializer.JLupinFSTSerializerSupplierImpl.

Section 'PROPERTIES'

The set of parameters that controls Main Server operations.

The appropriate part of the configuration file:

[...]
PROPERTIES:
  # 52428800 bytes = 50MB
  maxRequestSizeInBytes: 52428800
  maxResponseSizeInBytesDuringMicroserviceStart: 52428800
  binaryProtocolBufferSizeInBytes: 8192
  CONFIGURATION_UPGRADER_SETTINGS:
    MICROSERVICE_SETTINGS:
      isUpgradeAutomatically: true
      upgraderClassName: 'com.jlupin.impl.util.configuration.microservice.upgrade.upgrader.impl.JLupinMicroserviceConfigurationUpgraderImpl'
    TECHNICAL_PROCESS_SETTINGS:
      isUpgradeAutomatically: true
      upgraderClassName: 'com.jlupin.impl.util.configuration.technical.upgrade.upgrader.impl.JLupinTechnicalConfigurationUpgraderImpl'
  platformVersion: '1.6.1.0'

Description:

Parameter Description
maxRequestSizeInBytes The maximum size of a request, expressed in bytes.
maxResponseSizeInBytesDuringMicroserviceStart The maximum size of an output stream, that Main Sever can read properly during startup procedure of a microservice (including technical)
binaryProtocolBufferSizeInBytes The size of buffer for JLupin Protocol, expressed in bytes.
platformVersion Version of Main Server configuration file (main.yml). If it's lower than binaries - automated upgrade of main.yml is performed during startup.

Section 'CONFIGURATION_UPGRADER_SETTINGS'

In this section you can define settings for upgrader of microservices' configuration files.

Section 'MICROSERVICE_SETTINGS'

In this section configuration for microservices is done.

Description:

Parameter Description
isUpgradeAutomatically The switch specifying whether automation microservice configuration files update should be performed during platform startup.
upgraderClassName Name of class of upgrader to use.

Section 'TECHNICAL_PROCESS_SETTINGS'

In this section configuration for technical microservices is done.

Description:

Parameter Description
isUpgradeAutomatically The switch specifying whether automation technical microservice configuration files update should be performed during platform startup.
upgraderClassName Name of class of upgrader to use.


Default configuration file

ZONE:
  name: default
MAIN_SERVER:
  name: NODE_1
  location: DC1
SERVERS:
  JLRMC_BINARY: #JLupin Remote Method Call Fast Protocol
    port: 9090
    readTimeout: 480000
    waitForFinishExecuteAllRequests: true
    waitToShutdownThreadsOnStop: 60000
    backlog: 256
    receiveBufferSize: 256
    isReuseAddress: false
    threadPoolSize: 16
    logPeriodicOnDebug: true
    destroyThreadOnTimeout: false
    threadExecutingTimeOut: 240000
    isStartOnMainServerInitialize: true
    entryPoint: 'JLRMC_BINARY'
    SSL:
      isSSL: false
      isTwoWaySSLAuthentication: false
      X.509.Format:
        isActive: true
        #search in path $SERVER_HOME$/server-resources/ssl/server
        serverX509CertificateWithRSAPublicKeyFileName: 'serverX509Certificate.crt'
        serverPKCS8EncodedWithRSAPrivateKeyFileName: 'serverPrivateKey.pk'
        #clientsX509CertificateWithRSAPublicKeyDirectoryPath: 'C:/server/server-resources/ssl/client'
  ELASTIC_HTTP:
    port: 8082
    readTimeout: 480000
    waitForFinishExecuteAllRequests: true
    waitToShutdownThreadsOnStop: 60000
    backlog: 0
    receiveBufferSize: 0
    isReuseAddress: false
    threadPoolSize: 16
    logPeriodicOnDebug: true
    destroyThreadOnTimeout: false
    threadExecutingTimeOut: 240000
    isStartOnMainServerInitialize: true
    entryPoint: 'ELASTIC_HTTP'
    SSL:
      isSSL: false
      isTwoWaySSLAuthentication: false
      X.509.Format:
        isActive: true
        #search in path $SERVER_HOME$/server-resources/ssl/server
        serverX509CertificateWithRSAPublicKeyFileName: 'serverX509Certificate.crt'
        serverPKCS8EncodedWithRSAPrivateKeyFileName: 'serverPrivateKey.pk'
        #clientsX509CertificateWithRSAPublicKeyDirectoryPath: 'C:/server/server-resources/ssl/client'
  QUEUE_BINARY:
    port: 9095
    readTimeout: 480000
    waitForFinishExecuteAllRequests: true
    waitToShutdownThreadsOnStop: 60000
    backlog: 256
    receiveBufferSize: 256
    isReuseAddress: false
    threadPoolSize: 16
    logPeriodicOnDebug: true
    destroyThreadOnTimeout: false
    threadExecutingTimeOut: 240000
    isStartOnMainServerInitialize: true
    entryPoint: 'QUEUE_BINARY'
    SSL:
      isSSL: false
      isTwoWaySSLAuthentication: false
      X.509.Format:
        isActive: true
        #search in path $SERVER_HOME$/server-resources/ssl/server
        serverX509CertificateWithRSAPublicKeyFileName: 'serverX509Certificate.crt'
        serverPKCS8EncodedWithRSAPrivateKeyFileName: 'serverPrivateKey.pk'
        #clientsX509CertificateWithRSAPublicKeyDirectoryPath: 'C:/server/server-resources/ssl/client'
  TRANSMISSION_BINARY:
    port: 9096
    readTimeout: 480000
    waitForFinishExecuteAllRequests: false
    waitToShutdownThreadsOnStop: 60000
    backlog: 0
    receiveBufferSize: 0
    isReuseAddress: false
    threadPoolSize: 4
    logPeriodicOnDebug: true
    destroyThreadOnTimeout: false
    threadExecutingTimeOut: 240000
    isStartOnMainServerInitialize: true
    entryPoint: 'TRANSMISSION_BINARY'
    SSL:
      isSSL: true
      isTwoWaySSLAuthentication: true
      X.509.Format:
        isActive: true
        #search in path $SERVER_HOME$/server-resources/ssl/server
        serverX509CertificateWithRSAPublicKeyFileName: 'serverX509Certificate.crt'
        serverPKCS8EncodedWithRSAPrivateKeyFileName: 'serverPrivateKey.pk'
        #clientsX509CertificateWithRSAPublicKeyDirectoryPath: 'C:/server/server-resources/ssl/client'
  INFORMATION_BINARY:
    port: 9097
    readTimeout: 480000
    waitForFinishExecuteAllRequests: true
    waitToShutdownThreadsOnStop: 60000
    backlog: 0
    receiveBufferSize: 0
    isReuseAddress: false
    threadPoolSize: 4
    logPeriodicOnDebug: true
    destroyThreadOnTimeout: false
    threadExecutingTimeOut: 240000
    isStartOnMainServerInitialize: true
    entryPoint: 'INFORMATION_BINARY'
    SSL:
      isSSL: false
      isTwoWaySSLAuthentication: false
      X.509.Format:
        isActive: true
        #search in path $SERVER_HOME$/server-resources/ssl/server
        serverX509CertificateWithRSAPublicKeyFileName: 'serverX509Certificate.crt'
        serverPKCS8EncodedWithRSAPrivateKeyFileName: 'serverPrivateKey.pk'
        #clientsX509CertificateWithRSAPublicKeyDirectoryPath: 'C:/server/server-resources/ssl/client'
  INFORMATION_HTTP:
    port: 9098
    readTimeout: 480000
    waitForFinishExecuteAllRequests: true
    waitToShutdownThreadsOnStop: 60000
    backlog: 0
    receiveBufferSize: 0
    isReuseAddress: false
    threadPoolSize: 2
    logPeriodicOnDebug: true
    destroyThreadOnTimeout: false
    threadExecutingTimeOut: 240000
    isStartOnMainServerInitialize: true
    entryPoint: 'INFORMATION_HTTP'
    SSL:
      isSSL: false
      isTwoWaySSLAuthentication: false
      X.509.Format:
        isActive: true
        #search in path $SERVER_HOME$/server-resources/ssl/server
        serverX509CertificateWithRSAPublicKeyFileName: 'serverX509Certificate.crt'
        serverPKCS8EncodedWithRSAPrivateKeyFileName: 'serverPrivateKey.pk'
        #clientsX509CertificateWithRSAPublicKeyDirectoryPath: 'C:/server/server-resources/ssl/client'
ENTRY_POINTS:
  JLRMC_BINARY: #JLupin Remote Method Call Fast Protocol
    isSilentErrorMessageMode: false
    isSilentStackTraceMode: false
    logPeriodicOnDebug: false
  ELASTIC_HTTP:
    isSilentErrorMessageMode: false
    isSilentStackTraceMode: false
    keepAliveOverNetProtocolTimeInMillis: 1000
    checkKeepAlive: false
    logPeriodicOnDebug: false
    defaultSequenceName: jacksonParamArrayJsonInOutSequence
    defaultApiId: ROA
    simpleCORSEnabled: true
  TRANSMISSION_BINARY:
    isSilentErrorMessageMode: false
    isSilentStackTraceMode: false
    logPeriodicOnDebug: false
    SERIALIZER:
      producer: 'com.jlupin.impl.functional.supplier.serializer.JLupinJAVASerializerSupplierImpl'
  INFORMATION_BINARY:
    isSilentErrorMessageMode: false
    isSilentStackTraceMode: false
    logPeriodicOnDebug: false
    SERIALIZER:
      producer: 'com.jlupin.impl.functional.supplier.serializer.JLupinJAVASerializerSupplierImpl'
  INFORMATION_HTTP:
    isSilentErrorMessageMode: false
    isSilentStackTraceMode: false
    logPeriodicOnDebug: false
    keepAliveOverNetProtocolTimeInMillis: 1000
    checkKeepAlive: false
    simpleCORSEnabled: true
  QUEUE_BINARY:
    logPeriodicOnDebug: false
INITIALIZING_LOGGER:
  #directoryPath: 'c:/server/alternative_path/logs'
  fileName: 'main_server_initialize'
  fileExtension: 'log'
  fileSizeInMB: 10
  maxFiles: 10
PROCESS_MANAGER:
  isCheckAvailableOSMemoryOnMicroservicesStart: true
  startupOrder: 1
  externalHealthCheckPeriod: 4000
  MICROSERVICES_PORT_OFFSET:
    NATIVE:
      begin: 20001
      end: 30000
    SERVLET:
      begin: 30001
      end: 40000
  OS_PROCESSES_KEEPER:
    isCheckOSProcessAlive: true
    howOftenCheckingProcessInMillis: 5000
    restartDelayInMillis: 0
    #logPath: 'c:/server/alternative_path/process_errors'
  JVM_MEMORY_ERRORS_KEEPER:
    isCheckMemoryErrors: true
    howOftenCheckingProcessInMillis: 5000
    #heapDumpPath: c:/server/restart_log/heap_dump
    #logPath: 'c:/server/alternative_path/memory_errors'
    #archiveLogPath: 'c:/server/alternative_path/memory_errors_archive
    #restartLogPath: c:/server/restart_log/
  SERVICE_REPOSITORY_SETTINGS:
    howOftenCheckingMicroservicesInMillis: 5000
    externalNodePeersStartCheckDelayInMillis: 5000
    SOCKET_PROPERTIES_TO_CONNECT_WITH_PEERS:
      connectionTimeoutInMillis: 1000
      readTimeoutInMillis: 90000
      isKeepAlive: false
      isOOBInline: false
      isTcpNoDelay: false
      isReuseAddress: false
      sendBufferSize: 0
      receiveBufferSize: 0
      soLinger: 0
      trafficClass: 0
  LOAD_BALANCER_SETTINGS:
    JRMC_PROTOCOL_SETTINGS:
      ALGORITHM:
        type: priority
      PROPERTIES:
        changeServerIntervalInMillis: 5000
        repeatsAmount: 3
    QUEUE_PROTOCOL_SETTINGS:
      ALGORITHM:
        type: priority
      PROPERTIES:
        changeServerIntervalInMillis: 5000
        repeatsAmount: 3
TECHNICAL_PROCESS_MANAGER:
    isCheckOSProcessAlive: true
    howOftenCheckingProcessInMillis: 5000
    responseOSTimeToCheckProcessAliveInMillis: 30000
    startupOrder: 2
    restartDelayInMillis: 0
EVENT_LOG_MANAGER:
    howOftenCheckingExpireTimeInMillis: 20000
    logExpireTimeInMillis: 120000
    maximumSizeInMegabytes: 5
MONITORING_MANAGER:
    howOftenRefreshAllEnvironmentStateInMillis: 10000
    isJMXEnable: true
LOCK_MANAGER:
    isTurnedOn: true
SERIALIZER:
  microserviceTransmissionEntryPointSerializerProducer: 'com.jlupin.impl.functional.supplier.serializer.JLupinJAVASerializerSupplierImpl'
  microserviceLogicSerializerProducer: 'com.jlupin.impl.functional.supplier.serializer.JLupinFSTSerializerSupplierImpl'
  mainServerInformationEntryPointSerializerProducer: 'com.jlupin.impl.functional.supplier.serializer.JLupinJAVASerializerSupplierImpl'
PROPERTIES:
  # 52428800 bytes = 50MB
  maxRequestSizeInBytes: 52428800
  maxResponseSizeInBytesDuringMicroserviceStart: 52428800
  binaryProtocolBufferSizeInBytes: 8192
  CONFIGURATION_UPGRADER_SETTINGS:
    MICROSERVICE_SETTINGS:
      isUpgradeAutomatically: true
      upgraderClassName: 'com.jlupin.impl.util.configuration.microservice.upgrade.upgrader.impl.JLupinMicroserviceConfigurationUpgraderImpl'
    TECHNICAL_PROCESS_SETTINGS:
      isUpgradeAutomatically: true
      upgraderClassName: 'com.jlupin.impl.util.configuration.technical.upgrade.upgrader.impl.JLupinTechnicalConfigurationUpgraderImpl'
  platformVersion: '1.6.1.0'
NODE_PEERS:
  NODE_1:
    ip: 'localhost'
    jlrmcPort: 9090
    queuePort: 9095
    transmissionPort: 9096
    informationPort: 9097
  #NODE_2:
    #ip: '127.0.0.1'
    #jlrmcPort: 19090
    #queuePort: 19095
    #transmissionPort: 19096
    #informationPort: 19097