> ## Documentation Index
> Fetch the complete documentation index at: https://anaconda.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Adding and removing nodes

You can view, add, edit and delete server nodes from Anaconda Enterprise using
the Admin Console’s Operations Center. If you would prefer to use a command
line to join additional nodes to the AE master, follow [the instructions
provided below](#using-the-command-line-to-add-nodes).

<Note>
  * Anaconda Enterprise does not support running heterogeneous versions in the same
    cluster. Before adding a new node, *verify that the node is operating the same
    version of the OS as the rest of the cluster*.
  * If you’re adding a GPU node, make sure it meets the [GPU requirements](../../install/reqs#gpu-requirements).
  * Each installation can only support a single AE master node, as this node
    includes storage for the platform. **DO NOT add an additional AE master node
    to your installation**.
</Note>

***

**To manage the servers on your system:**

1. Log in to Anaconda Enterprise, select the **Menu** icon <Icon icon="user" iconType="regular" /> in the top
   right corner and click the **Administrative Console** link displayed at the
   bottom of the slide out window. You must be logged in with a user assigned to
   the `ae-admin` role.

2. Click **Manage Resources**.

3. Log in to the Operations Center using the Administrator credentials
   [configured after installation](../../install/config).

4. Select **Nodes** from the menu on the left to display the configured nodes
   in your cluster, their IP address, hostname and profile.

**To add an existing server to Anaconda Enterprise:**

1. Click the **Add Node** button at the top right.

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/IBO7780zo4xe9zAp/images/add_node.png?fit=max&auto=format&n=IBO7780zo4xe9zAp&q=85&s=9dea1f9e63a40d6f769795fd642b8d78" alt="" width="2540" height="1182" data-path="images/add_node.png" />
</Frame>

2. Select an appropriate profile for the server and click **Continue**.
3. Copy and paste the command provided into a terminal window to add the server.

   When you refresh the page, your server will appear in the list.

**To remove a server node:**

Click the Actions menu <Icon icon="ellipsis" iconType="regular" /> at the far right of the node you want to remove and select **Delete…**.

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/SgtHPGS_3WUV3NOk/images/server-delete.png?fit=max&auto=format&n=SgtHPGS_3WUV3NOk&q=85&s=a8ba602a0319e61e44530b82cb56fc33" alt="" width="440" height="294" data-path="images/server-delete.png" />
</Frame>

**To log on to a server:**

Click on the terminal icon of the server you want to work with,

and select **root** to open a terminal window. It will open a new tab in your
browser.

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/SgtHPGS_3WUV3NOk/images/server-log-in.png?fit=max&auto=format&n=SgtHPGS_3WUV3NOk&q=85&s=7062e08e77a953347e985bc8f8ee9181" alt="" width="452" height="400" data-path="images/server-log-in.png" />
</Frame>

When you are finished, simply close the console window by clicking the icon.

***

## Using the command line to add nodes

1. Download the gravity binary that corresponds to your version of Anaconda Enterprise from the S3 location provided to you by Anaconda onto the server you’re adding to the cluster.

2. Rename the file to something simpler, then make it executable. For example:

   ```
   mv gravity-binary-6.1.9 gravity
   chmod +x gravity
   ```

3. *On the AE master*, run the following command to obtain the join token and IP address for the AE master node:

   ```
   gravity status
   ```

   The results should look similar to the following:

   <Frame>
     <img src="https://mintcdn.com/anaconda-29683c67/QCWY8EsGZWJYinOU/images/join-token.png?fit=max&auto=format&n=QCWY8EsGZWJYinOU&q=85&s=ea157f69547bb47ddea5478d23826836" alt="" width="1606" height="904" data-path="images/join-token.png" />
   </Frame>

4. Copy and paste the join token for the cluster and the IP address for the AE master somewhere accessible. You’ll need to provide this information when you add a new worker node. You’ll also need the IP address of the server node you’re adding.

5. *On the worker node*, run the following command to add the node to the cluster:

   ```
   ./gravity join --token JOIN-TOKEN --advertise-addr=NODE-IP --role=NODE-ROLE --cloud-provider=CLOUD-PROVIDER MASTER-IP-ADDR
   ```

   Where:

   `JOIN-TOKEN` = The join token that you obtained in Step 3.

   `NODE-IP` = The IP address of the worker node. This can be a private IP address, as long as the network it’s on can access the AE master.

   `NODE-ROLE` = The type of node you’re adding: `ae-worker`, `gpu-worker`, or `k8s-master`.

   `CLOUD-PROVIDER` = This is auto-detected, and can therefore be excluded unless you don’t have Internet access. In this case, use `generic`.

   `MASTER-IP-ADDR` = The IP address of the AE master that you obtained in Step 3.

   <Warning>
     The `--role` flag must be provided and assigned to either `ae-worker`, `gpu-worker` or `k8s-master`. Without it the node will be added with the role `ae-master` and may cause your cluster to crash.
   </Warning>

   The progress of the join operation is displayed:

   <Frame>
     <img src="https://mintcdn.com/anaconda-29683c67/QCWY8EsGZWJYinOU/images/join-status2.png?fit=max&auto=format&n=QCWY8EsGZWJYinOU&q=85&s=eab0ba75146089d01027cd6123a6c2f9" alt="" width="1231" height="190" data-path="images/join-status2.png" />
   </Frame>

6. To monitor the impact of the join operation on the cluster, run the `gravity status` command *on the AE master*.

The output will look similar to the following:

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/QCWY8EsGZWJYinOU/images/join-status.png?fit=max&auto=format&n=QCWY8EsGZWJYinOU&q=85&s=101e78f061439c4db6625a379062604c" alt="" width="1442" height="1050" data-path="images/join-status.png" />
</Frame>

Note that the size of the cluster is `expanding` and the status of the new node being added is `offline`. When the node has successfully joined, the cluster returns to an `active` state, and the status of the new node changes to `healthy`:

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/QCWY8EsGZWJYinOU/images/join-complete.png?fit=max&auto=format&n=QCWY8EsGZWJYinOU&q=85&s=bee3209efc214a4ed2e309397919a620" alt="" width="1438" height="892" data-path="images/join-complete.png" />
</Frame>
