Programming language: Go
License: Mozilla Public License 2.0
Tags: Cloud Orchestration    
Latest version: v0.9.5

serf alternatives and similar tools

Based on the "Cloud Orchestration" category.
Alternatively, view serf alternatives based on common mentions on social networks and blogs.

  • Kubernetes

    Production-Grade Container Scheduling and Management
  • etcd

    Distributed reliable key-value store for the most critical data of a distributed system
  • InfluxDB is the Time Series Platform where developers build real-time applications for analytics, IoT and cloud-native services. Easy to start, it is available in the cloud or on-premises.
  • consul

    Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
  • zookeeper

    Apache ZooKeeper
  • Salt

    9.2 10.0 L2 serf VS Salt
    Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:
  • Nomad

    Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.
  • StackStorm

    StackStorm (aka "IFTTT for Ops") is event-driven automation for auto-remediation, incident responses, troubleshooting, deployments, and more for DevOps and SREs. Includes rules engine, workflow, 160 integration packs with 6000+ actions (see https://exchange.stackstorm.org) and ChatOps. Installer at https://docs.stackstorm.com/install/index.html
  • Rundeck

    Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts
  • doozerd

    A consistent distributed data store.
  • BOSH

    6.5 9.8 L4 serf VS BOSH
    Cloud Foundry BOSH is an open source tool chain for release engineering, deployment and lifecycle management of large scale distributed services.
  • Juju

    Universal Operator Lifecycle Manager (OLM) for Kubernetes operators, and operators for traditional Linux apps, with declarative integration between operators for automated microservice integration.
  • Cloud Foundry

    Deprecated: Cloud Foundry Release
  • MCollective

    MCollective Server and Client Puppet Module
  • Overcast

    Orchestrate VMs from your terminal.
  • Spruce

    A BOSH template merge tool
  • CloudSlang

    Ready-Made CloudSlang Flows and Operations
  • Genesis

    A BOSH Deployment Paradigm
  • Cloudify

    Open source TOSCA-based cloud orchestration software platform written in Python and YAML.
  • Terraform

    Terraform works with many cloud providers and creates infrastructure from code.

Do you think we are missing an alternative of serf or a related project?

Add another 'Cloud Orchestration' Tool


Serf CircleCI Join the chat at https://gitter.im/hashicorp-serf/Lobby

Serf is a decentralized solution for service discovery and orchestration that is lightweight, highly available, and fault tolerant.

Serf runs on Linux, Mac OS X, and Windows. An efficient and lightweight gossip protocol is used to communicate with other nodes. Serf can detect node failures and notify the rest of the cluster. An event system is built on top of Serf, letting you use Serf's gossip protocol to propagate events such as deploys, configuration changes, etc. Serf is completely masterless with no single point of failure.

Here are some example use cases of Serf, though there are many others:

  • Discovering web servers and automatically adding them to a load balancer
  • Organizing many memcached or redis nodes into a cluster, perhaps with something like twemproxy or maybe just configuring an application with the address of all the nodes
  • Triggering web deploys using the event system built on top of Serf
  • Propagating changes to configuration to relevant nodes.
  • Updating DNS records to reflect cluster changes as they occur.
  • Much, much more.

Quick Start

First, download a pre-built Serf binary for your operating system, compile Serf yourself, or install using go get -u github.com/hashicorp/serf/cmd/serf.

Next, let's start a couple Serf agents. Agents run until they're told to quit and handle the communication of maintenance tasks of Serf. In a real Serf setup, each node in your system will run one or more Serf agents (it can run multiple agents if you're running multiple cluster types. e.g. web servers vs. memcached servers).

Start each Serf agent in a separate terminal session so that we can see the output of each. Start the first agent:

$ serf agent -node=foo -bind= -rpc-addr=

Start the second agent in another terminal session (while the first is still running):

$ serf agent -node=bar -bind= -rpc-addr=

At this point two Serf agents are running independently but are still unaware of each other. Let's now tell the first agent to join an existing cluster (the second agent). When starting a Serf agent, you must join an existing cluster by specifying at least one existing member. After this, Serf gossips and the remainder of the cluster becomes aware of the join. Run the following commands in a third terminal session.

$ serf join

If you're watching your terminals, you should see both Serf agents become aware of the join. You can prove it by running serf members to see the members of the Serf cluster:

$ serf members
foo    alive
bar    alive

At this point, you can ctrl-C or force kill either Serf agent, and they'll update their membership lists appropriately. If you ctrl-C a Serf agent, it will gracefully leave by notifying the cluster of its intent to leave. If you force kill an agent, it will eventually (usually within seconds) be detected by another member of the cluster which will notify the cluster of the node failure.


Full, comprehensive documentation is viewable on the Serf website:


Developing Serf

If you wish to work on Serf itself, you'll first need Go installed (version 1.10+ is required). Make sure you have Go properly installed, including setting up your GOPATH.

Next, clone this repository into $GOPATH/src/github.com/hashicorp/serf and then just type make. In a few moments, you'll have a working serf executable:

$ make
$ bin/serf

NOTE: make will also place a copy of the executable under $GOPATH/bin/

Serf is first and foremost a library with a command-line interface, serf. The Serf library is independent of the command line agent, serf. The serf binary is located under cmd/serf and can be installed stand alone by issuing the command go get -u github.com/hashicorp/serf/cmd/serf. Applications using the Serf library should only need to include github.com/hashicorp/serf.

Tests can be run by typing make test.

If you make any changes to the code, run make format in order to automatically format the code according to Go standards.