Version

    Optional Cluster Properties

    Optional General Properties

    Optional Remote Edge Properties

    Optional General Properties

    These properties are not vital for Cluster configuration - default values are sufficient.

    Table 85. Optional general properties
    Name Type Description Default

    cluster.jgroups.external_address

    String, IP address

    The IP address of the Cluster node. Configure this only if the Cluster nodes are on different sub-nets, so the IP address of the network interface isn’t directly accessible from the other Cluster nodes.

    cluster.jgroups.external_port

    int, port

    The port for asynchronous messaging. Configure this only if the Cluster nodes are on different sub-nets and the port opened on the IP address is different than the port opened on the node’s network interface IP address.

    cluster.jgroups.protocol.NAKACK.gc_lag

    int

    The number of delivered messages kept in the sent messages buffer of each jGroups view member. Messages are kept in a sender cache even though they were reported as delivered by existing view members, because there may be some other member temporarily not in the view. The higher the number, the higher the chance of reliable messages delivery in an unreliable network environment. However the messages consume memory: approximately 4kB for each message.

    10000

    cluster.jgroups.protocol.NAKACK.xmit_table_obsolete_member_timeout

    long

    How long (in milliseconds) we keep an obsolete member in the xmit-table. It is necessary for recognition of a member temporarily unaccessible and removed from the view. With previous NAKACK implementation, the member removed from the view was also automatically removed from xmit-table, so it appeared as a new member when it re-joined the view. With current modified implementation, the member is kept in the xmit-table for a configured interval longer, so when it re-joins the view, it is a known member and undelivered messages may be re-delivered to it. A member in the xmit-table isn’t consuming memory.

    3600000

    cluster.jgroups.protocol.AUTH.value

    String

    String used by a jgroups member to authenticate to the group. Must be the same on all Cluster nodes. It is a protection against fake messages.

    sandboxes.home.partitioned

    String

    Intended as a placeholder in the location path. So the sandbox path is specified with the placeholder and it is resolved to the real path just before it is used. For backward compatibility, the default value uses the clover.home configuration property.

    ${clover.home}/sandboxes-partitioned

    sandboxes.home.local

    String

    Intended as a placeholder in the location path. So the sandbox path is specified with the placeholder and it is resolved to the real path just before it is used. For backward compatibility, the default value uses the clover.home configuration property.

    ${clover.home}/sandboxes-local

    cluster.shared_sandboxes_path

    String

    This property is deprecated. This property still works but is used only when a shared sandbox doesn’t have its own path specified. It is just for backward compatibility and it is not recommended for new deployments. Since 3.5, we recommend to specify the sandbox path explicitly and use the sandboxes.home property/placeholder.

    cluster.node.sendinfo.interval

    int

    A time interval in milliseconds. Each node sends a heart-beat with information about itself to another nodes. This interval specifies how often the information is sent under common circumstances.

    2000

    cluster.node.sendinfo.min_interval

    int

    A specified minimum interval (in milliseconds) between two heart-beats. A heart-beat may be send more often than specified by cluster.node.sendinfo.interval, e.g. when jobs start or finish. However the interval will never be shorter then this minimum.

    500

    cluster.node.sendinfo.history.interval

    int

    A time interval in milliseconds, for which each node stores a heart-beat in the memory. It is used for rendering figures in the web GUI-monitoring section.

    240000

    cluster.node.remove.interval

    int

    A time interval in milliseconds. If no node info comes in this interval, the node is considered as lost and it is removed from the Cluster.

    50000

    cluster.max_allowed_time_shift_between_nodes

    int

    A maximum allowed time shift between nodes. All nodes must have system time synchronized, otherwise the Cluster may not work properly. So if this threshold is exceeded, the node will be set as invalid.

    2000

    cluster.group.name

    String

    Each Cluster has its unique group name. If you need 2 Clusters in the same network environment, each of them would have its own group name.

    cloverCluster

    cluster.jgroups.protocol.AUTH.value

    String

    The authentication string/password used for verification Cluster nodes accessing the group. If this property is not specified, the Cluster should be protected by firewall settings.

    cluster.datasource.type

    String

    Change this property to remote if the node doesn’t have a direct connection to the CloverDX Server database, so it has to use some other Cluster node as proxy to handle persistent operations. In such a case, the cluster.datasource.delegate.nodeIds property must be properly configured, as well. Properties jdbc.* will be ignored. Note that scheduler is active only on nodes with a direct connection.

    local

    cluster.datasource.delegate.nodeIds

    String

    The list of Cluster node IDs (separated by a comma) which this node may use as a proxy to handle persistent operations. At least one of the listed node IDs must be running, otherwise this node will fail. All listed node IDs must have a direct connection to CloverDX Server database properly configured. Property cluster.datasource.delegate.nodeIds is ignored by default. Property cluster.datasource.type must be set to remote to enable the feature.

    cluster.node.check.checkMinInterval

    int

    Periodicity of Cluster node checks, in milliseconds, i.e. the time period after which the Server checks whether the Cluster node is running.

    20000

    cluster.sync.connection.connectTimeout

    int

    Specifies the connection timeout (in milliseconds) when performing remote procedure call (RPC) between Cluster nodes.

    7000

    cluster.sync.connection.readTimeout

    int

    Specifies the read timeout (in milliseconds) when performing RPC between Cluster nodes. Increasing the read timeout can help to suppress SocketReadTimeout errors in communication with a Cluster node under heavy load.

    90000

    cluster.sync.connection.nodeInfo.connectTimeout

    int

    Checks the node connection availability. If the node doesn’t respond in the set number of milliseconds, it is suspended. Under heavy load, a node may fail to respond in time; in such a case, increasing the value may prevent the node from suspension.

    5000

    cluster.sync.connection.nodeInfo.readTimeout

    int

    Checks the node read availability. If the node doesn’t respond in the set number of milliseconds, it is suspended. Under heavy load, a node may fail to respond in time; in such a case, increasing the value may prevent the node from suspension.

    5000

    Optional Remote Edge Properties

    Below is a list of names and default values of properties used to configure remote edges in a Clustered environment.

    Table 86. Optional remote edge properties
    Name Description Default

    cluster.edge.chunkSize

    Specifies the size of a chunk created by the right side of a remote edge (in bytes).

    524288

    cluster.edge.chunkWaitTimeout

    Specifies how long should the servlet wait for a next chunk to become available (in milliseconds).

    60000

    cluster.edge.connectTimeout

    Specifies a socket connection timeout when fetching a chunk (in milliseconds).

    30000

    cluster.edge.readTimeout

    Specifies a socket read timeout when fetching a chunk (in milliseconds).

    90000

    cluster.edge.handshakeTimeout

    Specifies how long should the client wait until a remote edge is registered by a data producing job (in milliseconds).

    120000

    cluster.edge.chunkReadRetries

    Specifies how many times should be a chunk fetch re-attempted before reporting an error to the consumer.

    2

    cluster.edge.disableChunkProtocol

    Disables the chunked data transfer protocol, switching to the old implementation.

    false

    cluster.ssl.disableCertificateValidation

    Disables validation of certificates in HTTPS connections of remote edges. Disabling the validation affects jobs run on both Worker and Server Core.

    false