Files
xrpl-dev-portal/docs/infrastructure/configuration/peering/cluster-rippled-servers.md
2024-10-09 15:26:34 -07:00

4.1 KiB

html, parent, seo, labels
html parent seo labels
cluster-rippled-servers.html configure-peering.html
description
Set up a group of servers that share work for higher efficiency.
Core Server

Cluster rippled Servers

If you run multiple rippled servers in the same data center, you can configure them in a cluster to maximize efficiency. To configure clustering:

  1. For each of your servers, note the IP address of the server.

  2. For each of your servers, generate a unique seed using the [validation_create method][].

    For example, using the commandline interface:

    $ rippled validation_create
    
    Loading: "/etc/rippled.cfg"
    Connecting to 127.0.0.1:5005
    {
       "result" : {
          "status" : "success",
          "validation_key" : "FAWN JAVA JADE HEAL VARY HER REEL SHAW GAIL ARCH BEN IRMA",
          "validation_public_key" : "n9Mxf6qD4J55XeLSCEpqaePW4GjoCR5U1ZeGZGJUCNe3bQa4yQbG",
          "validation_seed" : "ssZkdwURFMBXenJPbrpE14b6noJSu"
       }
    }
    

    Save the validation_seed and validation_public_key parameters from each response somewhere secure.

  3. On each server, edit the config file, modifying the following sections:

    1. In the [ips_fixed] section, list the IP address and port of each other member of the cluster. For each of those servers, the port number should match the protocol = peer port (usually 51235) from that server's rippled.cfg. For example:

      [ips_fixed]
      192.168.0.1 51235
      192.168.0.2 51235
      

      This defines specific peer servers to which this server should always attempt to maintain a direct peer-to-peer connection.

      {% admonition type="info" name="Note" %}If you omit the port number, the server uses port 2459, the IANA-assigned port for the XRP Ledger protocol.{% /admonition %}

    2. In the [node_seed] section, set the server's node seed to one of the validation_seed values you generated using the [validation_create method][] in step 2. Each server must use a unique node seed. For example:

      [node_seed]
      ssZkdwURFMBXenJPbrpE14b6noJSu
      

      This defines the key pair the server uses to sign peer-to-peer communications, excluding validation messages.

    3. In the [cluster_nodes] section, set the members of the server's cluster, identified by their validation_public_key values. Each server should list the public keys of all other members of the cluster here. Optionally, add a custom name for each server. For example:

      [cluster_nodes]
      n9McNsnzzXQPbg96PEUrrQ6z3wrvgtU4M7c97tncMpSoDzaQvPar keynes
      n94UE1ukbq6pfZY9j54sv2A1UrEeHZXLbns3xK5CzU9NbNREytaa friedman
      

      This defines the key pairs the server uses to recognize members of its cluster.

  4. After saving the config file, restart rippled on each server.

    # systemctl restart rippled
    
  5. To confirm that each server is now a member of the cluster, use the [peers method][]. The cluster field should list the public keys and (if configured) the custom names for each server.

    For example, using the commandline interface:

    $ rippled peers
    
    Loading: "/etc/rippled.cfg"
    Connecting to 127.0.0.1:5005
    {
      "result" : {
        "cluster" : {
            "n9McNsnzzXQPbg96PEUrrQ6z3wrvgtU4M7c97tncMpSoDzaQvPar": {
              "tag": "keynes",
              "age": 1
            },
            "n94UE1ukbq6pfZY9j54sv2A1UrEeHZXLbns3xK5CzU9NbNREytaa": {
              "tag": "friedman",
              "age": 1
            }
        },
        "peers" : [
          ... (omitted) ...
        ],
        "status" : "success"
      }
    }
    

See Also

{% raw-partial file="/docs/_snippets/common-links.md" /%}