{
  "schema_version": 2,
  "id": "operate/rs/references/cli-utilities/rladmin/cluster/join",
  "title": "rladmin cluster join",
  "url": "https://redis.io/docs/latest/operate/rs/references/cli-utilities/rladmin/cluster/join/",
  "summary": "Adds a node to an existing cluster.",
  "tags": [
    "docs",
    "operate",
    "rs"
  ],
  "last_updated": "2026-09-24T10:14:21+01:00",
  "page_type": "content",
  "content_hash": "acf13f3c1516e447550d3e1339bbb1d4772036d04f8dcbe4ae257ead0bdddd36",
  "sections": [
    {
      "id": "overview",
      "title": "Overview",
      "role": "overview",
      "text": "Adds a node to an existing cluster.\n\n[code example]"
    },
    {
      "id": "parameters",
      "title": "Parameters",
      "role": "parameters",
      "text": "| Parameter | Type/Value | Description |\n|-----------|------------|-------------|\n| accept_servers | 'enabled'<br />'disabled' | Allows allocation of resources on the new node when enabled (optional) |\n| addr | IP address | Sets a node's internal IP address. If not provided, the node sets the address automatically. (optional) |\n| ccs_persistent_path | filepath (default:&nbsp;/var/opt/redislabs/persist) | Path to the CCS snapshot location (the default is the same as persistent_path) (optional) |\n| client_cert | filepath | Path to a file containing the client certificate in PEM format. Use either a username and password or certificate credentials to join a node. Required with `client_key`. See [Certificate-based authentication for cluster management](https://redis.io/docs/latest/operate/rs/security/certificates/certificate-based-authentication#certificate-based-authentication-for-cluster-management). |\n| client_key | filepath | Path to a file containing the client certificate's private key in PEM format. Required with `client_cert`. |\n| cnm_http_port | integer | Joins a cluster that has a non-default cnm_http_port (optional) |\n| ephemeral_path | filepath | Path to the ephemeral storage location (optional) |\n| external_addr | list of IP addresses | Sets a node's external IP addresses (space-delimited list). If not provided, the node sets the address automatically. (optional) |\n| flash_enabled |  | Enables flash capabilities for a database (optional) |\n| flash_path | filepath (default:&nbsp;/var/opt/redislabs/flash) | Path to the flash storage location in case the node does not support CAPI (required if flash_enabled) |\n| nodes | IP address | Internal IP address of an existing node in the cluster |\n| override_rack_id |  | Changes to a new rack, specified by `rack_id` (optional) |\n| override_repair |  | Enables joining a cluster with a dead node (optional) |\n| password | string | Admin user's password. Required unless you use certificate credentials. |\n| persistent_path | filepath (default:&nbsp;/var/opt/redislabs/persist) | Path to the persistent storage location (optional) |\n| rack_id | string | Moves the node to the specified rack (optional) |\n| replace_node | integer | Replaces the specified node with the new node (optional) |\n| second_rack_id | string | The unique identifier of the node's second rack ID for two-dimensional rack awareness (optional) |\n| trusted_ca | filepath | Path to a file containing the CA that validates the API certificate the cluster presents, in PEM format. If you omit it, the node uses the certificates in the cluster's `mtls_trusted_ca.pem` file. (optional) |\n| username | email address | Admin user's email address. Required unless you use certificate credentials. |"
    },
    {
      "id": "returns",
      "title": "Returns",
      "role": "returns",
      "text": "Returns `ok` if the node joined the cluster successfully. Otherwise, it returns an error message."
    },
    {
      "id": "example",
      "title": "Example",
      "role": "example",
      "text": "[code example]\n\nTo join a node using certificate credentials instead of a username and password, pass the file paths to the certificate, key, and CA:\n\n[code example]"
    }
  ],
  "examples": [
    {
      "id": "overview-ex0",
      "language": "sh",
      "code": "rladmin cluster join\n        nodes <node IP address>\n        { username <admin user email> password <admin password>\n          | client_cert <path> client_key <path> [ trusted_ca <path> ] }\n        [ ephemeral_path <path> ]\n        [ persistent_path <path> ]\n        [ ccs_persistent_path <path> ]\n        [ rack_id <node rack ID> ]\n        [ second_rack_id <node's second rack ID> ]\n        [ override_rack_id ]\n        [ replace_node <node UID> ]\n        [ flash_enabled ]\n        [ flash_path <path> ]\n        [ addr <IP.address> ]\n        [ external_addr <IP.address.1> [<IP.address.2> ... <IP.address.N>] ]\n        [ override_repair ]\n        [ accept_servers { enabled | disabled } ]\n        [ cnm_http_port <port> ]",
      "section_id": "overview"
    },
    {
      "id": "example-ex0",
      "language": "sh",
      "code": "$ rladmin cluster join nodes 192.0.2.2 \\\n        username admin@example.com \\\n        password admin-password\nJoining cluster... ok",
      "section_id": "example"
    },
    {
      "id": "example-ex1",
      "language": "sh",
      "code": "$ rladmin cluster join nodes 192.0.2.2 \\\n        client_cert /etc/opt/redislabs/client.pem \\\n        client_key /etc/opt/redislabs/client.key \\\n        trusted_ca /etc/opt/redislabs/ca.pem\nJoining cluster... ok",
      "section_id": "example"
    }
  ]
}
