Add clients to a WEKA cluster on AWS

Introduction

When launching a WEKA cluster, either through the Self-service portal or via a CloudFormation template, it is also possible to launch client instances. However, sometimes it may be required to add more clients after the cluster has been installed. To add more clients as separate instances, follow the instructions below.

Add clients as separate instances

Step 1: Launch the new instances

When launching new clients, ensure the following concerning networking and root volume:

Networking

  • For best performance, it is recommended that the new clients will be in the same subnet as the backend instances. Alternatively, they can be in a routable subnet to the backend instances in the same AZ (note that cross-AZ traffic also incurs expensive network charges).

  • They must use the same security group as the backends they will connect to, or alternatively, use a security group that allows them to connect to the backend instances.

IAM instance profile

When adding a client, it is required to provide permissions to several AWS APIs, as described in IAM role created in the template.

These permissions are automatically created in an instance profile as part of the CloudFormation stack. It is possible to use the same instance profile as one of the backend instances to ensure the same credentials are given to the new client.

The network interface permissions are required to create and attach a network interface to the new client. A separate NIC is required to allow the WEKA client to preallocate the network resource for the fastest performance.

If the client is not provided with these permissions, it can only provide ec2:* and create an additional NIC in the same security group and subnet described above when mounting a second cluster from a single client (see Mount filesystems from multiple clusters on a single client).

Root volume

The client's root volume must be at least 48 GiB in size and either GP2 or IO1 type.

The WEKA software is installed under /opt/weka. If it is not possible to change the size of the root volume, an additional EBS volume can be created, formatted, and mounted under /opt/weka. Make sure that the new volume is either GP2 or IO1 type.

Step 2: Mount the filesystems

To mount a filesystem in this manner, first install the WEKA agent from one of the backend instances and then mount the filesystem. For example:

# Agent Installation (one time)
curl http://Backend-1:14000/dist/v1/install | sh

# Creating a mount point (one time)
mkdir -p /mnt/weka

# Mounting a filesystem
mount -t wekafs Backend-1/my_fs /mnt/weka

For the first mount, this will install the WEKA software and automatically configure the client. For more information on mount and configuration options, see the Mount filesystems using the stateless clients feature section.

It is possible to configure the client OS to mount the filesystem at boot time automatically. For more information, see the Mount filesystems using fstab or Mount filesystems using autofs sections.

Add clients that are always part of the cluster

This is the same step as in the previous method of adding a client.

Step 2: Install the WEKA software

To download the WEKA software, go to https://get.weka.io and select the software version. After selecting the version, select the operating system to install and run the download command line as root on all the new client instances.

When the download is complete, untar the downloaded package and run the install.sh command in the package directory.

Example:

If you downloaded version 3.6.1, run cd weka-3.6.1 and then run ./install.sh.

Step 3: Add clients to the cluster

Once the WEKA software is installed, the clients are ready to join the cluster. To add the clients, run the following command line on each of the client instances:

weka local run -e WEKA_HOST=<backend-ip> aws-add-client <client-instance-id>

where <backend-ip> is the IP address or hostname of one of the backend instances.

On most shells the following would get the client instance ID and add it to the cluster:

weka local run -e WEKA_HOST=<backend-ip> aws-add-client $(curl -s http://169.254.169.254/latest/meta-data/instance-id)

If successful, running theaws-add-client command will display the following line:

Client has joined the cluster

Step 4: Mount filesystems on the clients

It is now possible to mount the filesystems on the client instances.

Example:

Using the mkdir -p /mnt/weka && mount -t wekafs default /mnt/weka command will mount the default filesystem under /mnt/weka.

Last updated