Zum Hauptinhalt springen
Version: 4.0

Node

The node is practically the head of CloudNet and the application that is installed on the server. CloudNet starts services with the wrapper (LINK HERE) on a node. A node can be installed and created on both virtual and physical hosts.

A node can form a so-called cluster (HERE LINK) together with other nodes, in which the various services can be distributed and the nodes can exchange information, such as players.

Language

The Language setting offers the possibility to change the display language of a node. By changing the language, all messages within the terminal of the cloud are displayed in the respective language.

Currently, the languages en_US (English USA) and de_DE (German Germany) are available.

Identity - UniqueId

The UniqueId setting in the Identity of the node determines the name of the node. This name is freely selectable, but must be uniquely assigned within a cluster. If names are assigned twice, synchronization problems occur within the cluster since the name is an identifying feature of a node.

By default, number-based node names are recommended such as:

Node-1
Node-2
...
Node-11

Other names, such as names based on the NATO alphabet, are also possible:

Node-Alpha
Node-Bravo
...
Node-Tango

Identity - Listeners

The Listeners option of a node offers the possibility to determine on which IP addresses and ports the node should be accessible for other nodes in the cluster.

An entry in the listener array could look as follows:

"listeners": [
{
"host": "192.168.0.3",
"port": 1410
}
],

For configurations where multiple listeners are needed for a node, the entry can look as follows:

"listeners": [
{
"host": "192.168.0.3",
"port": 1410
},
{
"host": "192.168.10.17",
"port": 1870
}
],

This IP address and port combination should never be occupied by another program. If not a single one of the specified listeners can be successfully bound, the node does not start.

Identity - Listeners - Host

The Host option is the IP address to which the node binds a listener, which is then used by the other nodes in the cluster to address this node.

warnung

The IP address specified here must be configured on one of the network adapters of the host system on which the node is running. The IP address must not be behind a NAT router. This means that the publicly accessible IP addresses from most home networks cannot be used as CloudNet host addresses, as they are not directly configured on the host system.

info

It is recommended to choose a host address from a LAN, VLAN or VPN range to ensure that the other nodes within the cluster can establish a stable, undisturbed connection.

Identity - Listeners - Port

The Port option is the port on which the node binds a listener together with the host address. The port must not be used by any other application, otherwise this listener will not be used.

warnung

The port entered here is not the port of the Minecraft proxy (Velocity, BungeeCord, etc.). This is only used internally by CloudNet.

Identity - Properties

The Properties setting offers the possibility to add any kind of JSON structure to a node identity. By default, CloudNet does not use these properties. Modules and plugins can use these properties for their own advanced functions.

Cluster Config - ClusterId

The ClusterId option serves as an identifying feature of a cluster. The ClusterId is shared by all Nodes in a cluster. Furthermore, the ClusterId should be kept secret, as it is one of the features for the connection of a node to the cluster. If the ClusterId of the other nodes does not match your own, no connection between the nodes can be established.

warnung

The ClusterId must be the same on all Nodes of a cluster and should not be shared with outsiders.

Cluster Config - Nodes

The Nodes option in the cluster config represents the other Nodes within the cluster. In this array, all other nodes of the cluster must be added so that a connection to these nodes can be established. The elements of the array follow the schema of the Identity from the previous section.

A configuration from the perspective of e.g. Node-1 can look as follows:

"nodes": [
{
"uniqueId": "Node-2",
"listeners": [
{
"host": "192.168.3.3",
"port": 1415
}
],
"properties": {}
},
{
"uniqueId": "Node-3",
"listeners": [
{
"host": "192.168.3.4",
"port": 1415
}
],
"properties": {}
}
]

Cluster Config - Nodes - UniqueId

The UniqueId setting within the Node Array is the Identity-UniqueId of the corresponding node in the cluster. This must exactly match the UniqueId from the Identity for a connection to this node to be established.

Cluster Config - Nodes - Listener

The Listeners option in the cluster offers the possibility to determine on which IP addresses and ports the own node can reach the other nodes in the cluster.

An entry in the listener array could look as follows:

"listeners": [
{
"host": "192.168.0.3",
"port": 1410
}
],

For configurations where multiple listeners are used for a node, the entry can look as follows:

"listeners": [
{
"host": "192.168.0.3",
"port": 1410
},
{
"host": "192.168.10.17",
"port": 1870
}
],
info

For these listeners to be used, they must additionally be entered on the target node under Listeners.

IP-Whitelist

The IP-Whitelist array offers the possibility to determine from which IP addresses a connection to the own node may be established. This filter applies to both services and other nodes. This means that the IP address of the own services and all IP addresses of the other nodes in the cluster must be added to this list.

For a node that starts its own Services on 192.168.0.3 and should allow a connection to another node on 192.168.240.1, the IP whitelist can look as follows:

"ipWhitelist": [
"192.168.0.3",
"127.0.1.1",
"127.0.0.1",
"192.168.240.1"
],

If you want the node to be accessible from all IP addresses in an address range, the CIDR notation can be used in the IP whitelist. To allow all IP addresses of the local machine, for example, the IP whitelist can look as follows:

"ipWhitelist": [
"127.0.0.0/8"
],
info

If an attempt is made to establish a connection from an IP address not entered in the IP whitelist, it will be closed. At the same time, a warning is issued in the console that a connection was prevented, as the node should not be accessible from unknown IP addresses in the first place.

MaxCPUUsageToStartServices

The MaxCPUUsageToStartServices option offers the possibility to specify up to which CPU utilization on the system Services continue to be started.

If the system now has a CPU utilization of 90% and the value is set to 95.0, a Service can still be started. If the CPU utilization now rises above 95.0, e.g. 96%, the service will not be started.

MaxMemory

The MaxMemory option offers the possibility to determine how much memory on the node may be assigned to services in total. Each Service is assigned memory through the maxHeapMemory option when starting, the maxMemory option described here determines how much all services may use together.

If the maxMemory value would be exceeded by starting another service, the services are not started.

MaxServiceConsoleLogCacheSize

The MaxServiceConsoleLogCacheSize option offers the possibility to determine how many log entries of each service should be cached. The stored log entries are used e.g. for the ser <service> screen command.

When a new message is sent to the console on the service, this message is also placed in the so-called ServiceConsoleLogCache. If adding now exceeds the set limit, the oldest message is removed from the cache, as the cache follows the FIFO principle.

ProcessTerminationTimeoutSeconds

The ProcessTerminationTimeoutSeconds option determines how long a Service may stop at maximum. If the user requests the stop of a service, CloudNet gives this service the time specified in processTerminationTimeoutSeconds in seconds to stop. If the service is not finished in this time, it is terminated by CloudNet.

warnung

Minecraft servers with particularly large worlds may need several seconds to save the world. In these cases, the timeout should be set high to prevent data loss.

ForceInitialClusterDataSync

The ForceInitialClusterDataSync option offers the possibility to automatically accept changes to e.g. Tasks and Groups when starting your own node. If this option is disabled, the user must choose between the following options:

  1. Accept changes from the cluster
  2. Apply local changes
  3. Skip the change and make no modification

PrintErrorStreamLinesFromServices

The PrintErrorStreamLinesFromServices option determines whether error messages from the logs of services should be sent to the console of the node.

An error on e.g. Lobby-1 would look as follows:

[08.09 15:28:16.383] WARN : [Lobby-1/WARN]: [08.09 15:28:16.383] WARN : Failed to parse level-type default, defaulting to minecraft:normal
[08.09 15:28:35.472] WARN : [Lobby-1/WARN]: *** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message can't create name string at s\src\java.instrument\share\native\libinstrument\JPLISAgent.c line: 838
[08.09 15:28:36.900] WARN : [Lobby-1/WARN]: Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "JNA Cleaner"
[08.09 15:28:38.538] WARN : [Lobby-1/WARN]: Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Paper Common Worker #0"

RunBlockedServiceStartTryLaterAutomatic

The RunBlockedServiceStartTryLaterAutomatic option allows you to determine what happens to a service that could not be started because not enough resources (CPU / RAM) were available. If the option is enabled, another start of this service is tried after 100ms, otherwise the service remains in the PREPARED state.

JvmCommand

The JvmCommand option allows you to specify which Java installation should be used by CloudNet by default for starting services. By default, the option points to java and thus uses the Java installation set in the environment variables.

To change the installation for services of a task, the javaCommand option in the task can be used.

HostAddress

The HostAddress option is used as a fallback address for services of tasks that have not specified an extra address.

More information and restrictions of this option can be found here.

IPAliases

The IpAliases option offers the possibility to define alternative IP addresses for various purposes on a node. These aliases act as placeholders for actual IP addresses and allow IP assignments to be designed dynamically and flexibly, which is particularly useful in environments with multiple nodes or clusters.

If you want, for example, to have an alias for internal IP addresses for e.g. downstream services and a public IP address for proxy services, the configuration in the node can look as follows:

{
"ipAliases": {
"externalNetwork": "203.0.113.5",
"internalNetwork": "10.0.0.1"
}
}

These aliases can then be used in the HostAddress option in the corresponding tasks.

Properties

The Properties setting offers the possibility to set additional options for the node. By default, CloudNet only uses the database_provider option. With this option, you can determine which Database Provider should be used by CloudNet for storing data. The node itself brings support for xodus. Additional providers can be added through modules.