Settings reference

Parameter Explanation

initial.server.mode_constraint

This setting constrains the operating mode of the database to be used only in primary or secondary mode. Default setting is NONE, ie. no constraint. As an initial setting, the value set here is used when a server is first enabled. Once enabled, a server’s mode constraint can only be changed with ALTER SERVER 'name' SET OPTIONS {modeConstraint:'PRIMARY'}.

Example: a server configured with initial.server.mode_constraint=SECONDARY is only allocated databases whose topologies contain 1 or more secondary. This server always only hosts those databases in SECONDARY mode.

initial.dbms.automatically_enable_free_servers

This setting allows for auto-enable of servers in the FREE state. After startup, it can be changed with the dbms.cluster.setAutomaticallyEnableFreeServers procedure.

server.cluster.system_database_mode

Every cluster member hosts the system database. This config controls what mode a given instance hosts the system database in: PRIMARY or SECONDARY.

Example: server.cluster.system_database_mode=SECONDARY means that this instance holds only a secondary copy of the system database.

There should be a relatively high number (5-7) of system primaries, spread across availability zones. However, if enabling more than 10 servers, it is recommended to start making the later ones secondaries.

dbms.cluster.minimum_initial_system_primaries_count

Minimum number of servers configured with server.cluster.system_database_mode=PRIMARY required to form a cluster.

Example: dbms.cluster.minimum_initial_system_primaries_count=3 specifies that the cluster is considered bootstrapped and the DBMS online when at least 3 system database primaries have discovered one another.

dbms.cluster.discovery.resolver_type

This setting specifies the strategy that the instance uses to determine the addresses for other instances in the cluster to contact for bootstrapping. Possible values are:

LIST

Treats dbms.cluster.discovery.endpoints as a list of addresses of servers to contact for discovery.

DNS

Treats dbms.cluster.discovery.endpoints as a domain name to resolve via DNS. Expect DNS resolution to provide A records with hostnames or IP addresses of servers to contact for discovery, on the port specified by dbms.cluster.discovery.endpoints.

SRV

Treats dbms.cluster.discovery.endpoints as a domain name to resolve via DNS. Expect DNS resolution to provide SRV records with hostnames or IP addresses and ports, of servers to contact for discovery.

K8S

Accesses the Kubernetes list service API to derive addresses of servers to contact for discovery. Requires dbms.kubernetes.label_selector to be a Kubernetes label selector for Kubernetes services running a server each and dbms.kubernetes.service_port_name to be a service port name identifying the discovery port of cluster servers services. The value of dbms.cluster.discovery.endpoints is ignored for this option.

The value of this setting determines how dbms.cluster.discovery.endpoints is interpreted. Detailed information about discovery and discovery configuration options is given in Discovery using DNS with multiple records.

Example: clustering-discovery-dns=DNS combined with dbms.cluster.discovery.endpoints=cluster01.example.com:5000 fetch all DNS A records for cluster01.example.com and attempt to reach Neo4j instances listening on port 5000 for each A record’s IP address.

dbms.cluster.discovery.endpoints

One or more network addresses used to discover other servers in the cluster. The exact method by which endpoints are resolved to other cluster members is determined by the value of dbms.cluster.discovery.resolver_type. In the default case, the initial discovery members are given as a comma-separated list of address/port pairs, and the default port for the discovery service is :5000.

It is good practice to set this parameter to the same value on all servers in the cluster.

The behavior of this setting can be modified by configuring the setting dbms.cluster.discovery.resolver_type. This is described in detail in Discovery using DNS with multiple records.

Example: dbms.cluster.discovery.resolver_type=LIST combined with server01.example.com:5000,server02.example.com:5000,server03.example.com:5000 attempt to reach Neo4j instances listening on server01.example.com, server02.example.com and server03.example.com; all on port 5000.

server.discovery.advertised_address

The address/port setting that specifies where the instance advertises that it listens for discovery protocol messages from other members of the cluster. If this server is included in the discovery.endpoints of other cluster members, the value there must exactly match this advertised address.

Example: server.discovery.advertised_address=192.168.33.21:5001 indicates that other cluster members can communicate with this server using the discovery protocol at host 192.168.33.20 and port 5001.

server.cluster.raft.advertised_address

The address/port setting that specifies where the Neo4j server advertises to other members of the cluster that it listens for Raft messages within the cluster.

Example: server.cluster.raft.advertised_address=192.168.33.20:7000 listens for cluster communication in the network interface bound to 192.168.33.20 on port 7000.

server.cluster.advertised_address

The address/port setting that specifies where the instance advertises it listens for requests for transactions in the transaction-shipping catchup protocol.

Example: causal_clustering.transaction_advertised_address=192.168.33.20:6001 listens for transactions from cluster members on the network interface bound to 192.168.33.20 on port 6001.

server.discovery.listen_address

The address/port setting that specifies which network interface and port the Neo4j instance binds to for the cluster discovery protocol.

Example: server.discovery.listen_address=0.0.0.0:5001 listens for cluster membership communication on any network interface at port 5001.

server.cluster.raft.listen_address

The address/port setting that specifies which network interface and port the Neo4j instance binds to for cluster communication. This setting must be set in coordination with the address this instance advertises it listens at in the setting server.cluster.raft.advertised_address.

Example: server.cluster.raft.listen_address=0.0.0.0:7000 listens for cluster communication on any network interface at port 7000.

server.cluster.listen_address

The address/port setting that specifies which network interface and port the Neo4j instance binds to for cluster communication. This setting must be set in coordination with the address this instance advertises it listens at in the setting server.cluster.advertised_address.

Example: server.cluster.listen_address=0.0.0.0:6001 listens for cluster communication on any network interface at port 6001.