There are a number of system, process, and application options that can impact the performance or behavior of your VoltDB database. You control these options when initializing and/or starting VoltDB. The configuration options fall into five main categories:
Network ports used by the database cluster
This appendix describes each of the configuration options, how to set them, and their impact on the resulting VoltDB database and application environment.
VoltDB provides mechanisms for setting a number of options. However, it also relies on the base operating system and network infrastructure for many of its core functions. There are operating system configuration options that you can adjust to to maximize your performance and reliability, including:
VoltDB creates a network mesh among the database cluster nodes. To do that, all nodes must be able to resolve the IP address and hostnames of the other server nodes. Make sure all nodes of the cluster have valid DNS entries or entries in the local hosts files.
For servers that have two or more network interfaces — and consequently two or more IP addresses — it is possible to assign different functions to each interface. VoltDB defines two sets of ports:
External ports, including the client and admin ports. These are the ports used by external applications to connect to and communicate with the database.
Internal ports, including all other ports. These are the ports used by the database nodes to communicate among themselves. These include the internal port, the zookeeper port, and so on. (See Section A.5, “Network Ports” for a complete listing of ports.)
You can specify which network interface the server expects to use for each set of ports by specifying the internal and external interface when starting the database. For example:
$ voltdb start --dir=~/mydb \ --externalinterface=10.11.169.10 \ --internalinterface=10.12.171.14
Note that the default setting for the internal and external interface can be overridden for a specific port by including the interface and a colon before the port number when specifying a port on the command line. See Section A.5, “Network Ports” for details on setting specific ports.
Keeping VoltDB cluster nodes in close synchronization is important for the ongoing performance of your database. At a minimum, use of a time service such as NTP or chrony to synchronize time across the cluster is recommended. If the time difference between nodes is too large (greater than 200 milliseconds) VoltDB refuses to start. It is also important to avoid having nodes adjust time backwards, or VoltDB will pause while it waits for time to "catch up" to its previous setting.