Unclear documentation / Issues when making an "in-use" incus server into a cluster bootstrap server

The “How to form a cluster” documentation suggests that the “bootstrap server can be an existing Incus server” (How to form a cluster - Incus documentation), but does not go on any further to list any adjustments or steps that might need to be applied exclusively to an existing incus server (rather than a freshly initialized one).

The only note is on the section about joining new members into the cluster, which states that they must be freshly initialized incus servers (How to form a cluster - Incus documentation).

What I’m trying to do:

  • I have an incus server to which I’ve already transferred some instances (from an old LXD cluster if that makes a difference)
  • Now we have more hardware, I’d like to make that incus server part of a cluster with the new hardware.
    • my understanding from the documentation was that I could use the existing incus server as the bootstrap without issue, then join in the fresh new servers

What happened:
When I ran “incus admin init” on the existing incus server and answered yes to clusting, then was asked “What IP address or DNS name should be used to reach this server?” I answered with the instance’s current IP address. I then got an error, stating: Invalid input: Can't bind address "192.168.2.2:8443": listen tcp 192.168.2.2:8443: bind: address already in use.

So I have questions:

  • What needs to be done when trying to turn an existing (and in-use) incus server into a bootstrap server for a cluster?
    • Is there any downtime or data loss as part of the conversion?

Just to provide a “version pinned” link to the documentation for people looking after it may have been updated: incus/doc/howto/cluster_form.md at 65f4b5aadac65e801da7e5c63a1a9439ffdfe3c5 · lxc/incus · GitHub

For reference, this is incus 6.0.0, taken from zabbly. Specifically 6.0-202404270857-ubuntu22.04

To turn an existing server into the initial member of a cluster incus cluster enable is probably best.

So you effectively want to do:

  • incus config set core.https_address :8443 (make sure that IP isn’t something that’s likely to change)
  • incus cluster enable SERVER-NAME

Once that’s done, you should see it in incus cluster list and can then add other servers through incus cluster add.

Thanks for the help!

Confirmed that this works on my cluster.

I’ve submitted a tiny PR with the update to the documentation: chore: update documentation for forming cluster with existing server by E314c · Pull Request #921 · lxc/incus · GitHub