EFA Deployment for High Availability

You can deploy EFA in a two-node cluster for high availability.

Overview

A high-availability cluster is a group of servers that provide continuous up time, or at least minimum down time, for the applications on the servers in the group. If an application on one server fails, another server in the cluster maintains the availability of the application.

In the following diagram, EFA is deployed in the TPVM running on SLX-OS. The two EFA instances are clustered and configured with one IP address, so that clients need to reach only one endpoint. All EFA services are installed on each node. The node on which EFA is installed is the active node and processes all requests. The other node is the standby. The standby node runs processes all the requests when the active node fails.

Click to expand in new window
Two-node high-availability deployment

All operations provided by EFA services must be idempotent, meaning they produce the same result for multiple identical requests or operations. For more information, see the "Idempotency" section of the Extreme Fabric Automation Administration Guide, 2.7.0 .

EFA uses the following services to implement an HA deployment:

Note

Note

Although Kubernetes run as a single-node cluster tied to the virtual IP, EFA CLIs still operate correctly when they are run from active or standby node. Commands are converted to REST and issued over HTTPS to the ingress controller via the virtual IP tied to the active node.

EFA 2.7.0 de-emphasizes Kubernetes-specific outputs in its various informational CLIs. The SLX show efa status command now more closely matches the TPVM efa status command.

The efa status command becomes more conservative when you declare the EFA as fully operational. It confirms the following:

The efactl utility is updated in the following ways:

PV: Persistent Volume
A piece of storage in the cluster that was provisioned by an administrator.
PVC: Persistent Volume Claims
A request for storage, similar to how a Pod requests compute resources.
Brick
The basic unit of storage in GlusterFS, represented by an export directory on a server in the trusted storage pool.
SC: Storage Class
A description of the “classes” of storage in a Kubernetes realm.
SVC: Kubernetes Service
A logical set of Pods and a policy by which to access them.
ING: Kubernetes Ingress
A collection of routing rules that govern how external users access services running in a Kubernetes cluster.
RS: Kubernetes Replica Sets
Ensures how many replicas of a Pod should be running.
K3s
Manages the life cycle of the EFA services in failover or fallback scenarios.
Traefik
An embedded ingress controller (load balancer) packaged with K3s.
GlusterFS
A high-availability replicated volume that maintains the persistent storage for the K3s cluster, the EFA database, and EFA logs.
MariaDB
A database service deployed outside of the K3s cluster in active-standby mode.
RabbitMQ
A messaging service deployed in the cluster in active-active mode.

Services in high-availability mode

EFA services running on K3s are in active-standby mode.