Changing an IP Address in a Rolling Fashion (no downtime for reads)

This topic describes how to change the IP addresses for one or more hosts in a SingleStore cluster.

    Part 1 - Change the IP of leaf nodes one availability group at a time

  1. disable-nodes-autostart - Use this only if you need to restart the host to change the IP else skip this step.

  2. Shut down the node:

    If it is a leaf, first remove the leaf entry by running:

    REMOVE LEAF '<IP of OLD leaf>':<port> FORCE;
  3. Change the IP address.

  4. Unregister the old leaf from sdb-toolbox-config:

    sdb-toolbox-config unregister-host --host <old_ip_address_here>
  5. When you re-register the host under the new IP, by default it should automatically find the old nodes.hcl file (as it should be the same host, just with a new IP) andyou can skip this step as the nodes will already be registered. However, if you have lost a config file then you need to register the new leaf to sdb-toolbox-config:

    sdb-toolbox-config register-host --host <new_ip_address_here>
  6. Add the leaf node to the cluster:

    ADD LEAF user[:'password']@'<new_ip_address_here>':<node_port>;sdb-admin start-node --all
  7. Enable autorestart, if you had executed Step 1.

Part 2 - Change the IP of the Child Aggregator (one Child Aggregator at a time)

  1. disable-nodes-autostart - Use this only if you need to restart the host to change the IP else skip this step.

  2. Stop the child aggregator node.

  3. Remove the aggregator from the cluster:

    REMOVE AGGREGATOR 'host':port;
  4. Change the IP address of the host.

  5. Unregister the old host from sdb-toolbox-config:

    sdb-toolbox-config unregister-host --host <old_ip_address_here>
  6. Register the new host to sdb-toolbox-config:

    sdb-toolbox-config register-host --host <new_ip_address_here>
  7. Register the node to sdb-admin:

    sdb-admin register-node --memsql-config /path/to/memsql.cnf --host <new_ip_address_here>
  8. Start the node.

  9. Add the node as an aggregator to cluster:

    ADD AGGREGATOR user[:'password']@'<new_ip_address_here>':port;
  10. Enable autostart., if you had executed Step 1.

Part 3 - PROMOTE one of the Child Aggregators to Master Aggregator

To promote a child aggregator to master aggregator, execute:

PROMOTE AGGREGATOR '<host>':<port> TO MASTER;

Part 4 - Change the old Master Aggregator IP

See the steps in Part 2. The process is the same as removing a child aggregator as now the original MA is currently a CA since we promoted an existing CA to master.

Part 5 - PROMOTE the previous Master Aggregator back to a Master Aggregator, if needed

To promote the original master aggregator back to a master aggregator if needed, execute:

PROMOTE AGGREGATOR '<new_ip_of_original_MA>':<port> TO MASTER;

Last modified: August 10, 2023

Was this article helpful?

Verification instructions

Note: You must install cosign to verify the authenticity of the SingleStore file.

Use the following steps to verify the authenticity of singlestoredb-server, singlestoredb-toolbox, singlestoredb-studio, and singlestore-client SingleStore files that have been downloaded.

You may perform the following steps on any computer that can run cosign, such as the main deployment host of the cluster.

  1. (Optional) Run the following command to view the associated signature files.

    curl undefined
  2. Download the signature file from the SingleStore release server.

    • Option 1: Click the Download Signature button next to the SingleStore file.

    • Option 2: Copy and paste the following URL into the address bar of your browser and save the signature file.

    • Option 3: Run the following command to download the signature file.

      curl -O undefined
  3. After the signature file has been downloaded, run the following command to verify the authenticity of the SingleStore file.

    echo -n undefined |
    cosign verify-blob --certificate-oidc-issuer https://oidc.eks.us-east-1.amazonaws.com/id/CCDCDBA1379A5596AB5B2E46DCA385BC \
    --certificate-identity https://kubernetes.io/namespaces/freya-production/serviceaccounts/job-worker \
    --bundle undefined \
    --new-bundle-format -
    Verified OK