Etcd Quickstart Guide | Installation and Usage on Linux

Depiction of engineers setting up etcd on Linux in an IOFLOOD datacenter to optimize distributed systems

Enhancing system reliability and fault tolerance on Linux servers at IOFLOOD is important to maintain the infrastructure of our customer’s dedicated servers. While working to improve our systems, we have found that installing etcd alleviates the process of managing shared configuration data and coordinating distributed applications. This article aims to share our tips and processes so that others may implement a resilient and highly available distributed key-value store.

In this guide, we will navigate the process of installing etcd on your Linux system. We are going to provide you with installation instructions for Debian, Ubuntu, CentOS, and AlmaLinux, delve into how to compile etcd from the source, and install a specific version. Finally, we will show you how to use the etcd command and ascertain that the correctly installed version is in use.

Let’s get started with the step-by-step etcd installation on your Linux system!

TL;DR: How Do I Install etcd on Linux?

You can install etcd on Linux by downloading the latest release from GitHub. You can extract the downloaded file using the command tar -xvf etcd-vX.Y.Z-linux-amd64.tar.gz. After extraction, move the etcd and etcdctl binaries to /usr/local/bin using the command sudo mv etcd etcdctl /usr/local/bin/.

# Download the latest release
wget https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz

# Extract the tarball
tar -xvf etcd-v3.5.0-linux-amd64.tar.gz

# Move the binaries
sudo mv etcd-v3.5.0-linux-amd64/etcd* /usr/local/bin/

# Verify the installation
etcd --version

# Output:
etcd Version: 3.5.0
Git SHA: Not provided (use ./build instead)
Go Version: go1.16.3
Go OS/Arch: linux/amd64

This is a basic way to install etcd on Linux, but there’s much more to learn about installing and using etcd. Continue reading for more detailed information and advanced usage scenarios.

How to Install etcd on Linux

Etcd is a distributed key-value store that provides a reliable way to store data across a cluster of machines. It’s primarily used in distributed systems to hold and manage configuration details and service discovery. It is a core component in Kubernetes for storing and replicating all cluster data.

Now, let’s get into how to install etcd on Linux using different package managers.

Installing etcd using APT

For Debian-based systems like Ubuntu, we use the Advanced Packaging Tool (APT) to install etcd. Here’s a step-by-step guide:

# Update your system
sudo apt-get update

# Install etcd
sudo apt-get install etcd-server

# Verify the installation
etcd --version

# Output:
etcd Version: 3.2.26
Git SHA: 8cb03b6
Go Version: go1.10.4
Go OS/Arch: linux/amd64

This will install etcd on your Linux system and you can verify its installation by checking the version.

Installing etcd using YUM

For RHEL-based systems like CentOS or AlmaLinux, we use the Yellowdog Updater, Modified (YUM) to install etcd. Here’s a step-by-step guide:

# Update your system
sudo yum update

# Install etcd
sudo yum install etcd

# Verify the installation
etcd --version

# Output:
etcd Version: 3.3.11
Git SHA: 2fb27896e
Go Version: go1.10.3
Go OS/Arch: linux/amd64

This will install etcd on your Linux system and you can verify its installation by checking the version. Remember, the version might differ based on the repository of your Linux distribution.

Installing etcd using DNF

For Fedora-based systems, we use the Dandified YUM (DNF) to install etcd. Here’s a step-by-step guide:

# Update your system
sudo dnf update

# Install etcd
sudo dnf install etcd

# Verify the installation
etcd --version

# Output:
etcd Version: 3.3.10
Git SHA: 27fc7e2
Go Version: go1.11.2
Go OS/Arch: linux/amd64

This will install etcd on your Linux system and you can verify its installation by checking the version. Remember, the version might differ based on the repository of your Linux distribution.

Installing etcd from Source Code

If you prefer to install etcd directly from its source code, you can do so by cloning the etcd repository and building it using Go. This method requires Go to be installed on your system.

Here’s how you can do it:

# Install Go
sudo apt install golang

# Verify Go installation
go version

# Output:
go version go1.16.3 linux/amd64

# Clone the etcd repository
git clone https://github.com/etcd-io/etcd.git

# Switch to the etcd directory
cd etcd

# Build etcd
make

# Verify the installation
bin/etcd --version

# Output:
etcd Version: 3.5.0
Git SHA: Not provided (use ./build instead)
Go Version: go1.16.3
Go OS/Arch: linux/amd64

Installing Different Versions of etcd

Different versions of etcd can be installed depending on your requirements. You might need to install a specific version due to software compatibility, feature availability, or stability reasons.

Installing Specific Versions from Source

You can checkout to a specific version of etcd using git and then build it. Here’s an example of how to install version 3.3.10:

cd etcd

git checkout v3.3.10

make

bin/etcd --version

# Output:
etcd Version: 3.3.10
Git SHA: 27fc7e2
Go Version: go1.10.3
Go OS/Arch: linux/amd64

Installing Specific Versions using Package Managers

You can also install a specific version of etcd using package managers like apt and yum. However, the available versions might be limited based on the repository of your Linux distribution.

Using apt

sudo apt install etcd-server=3.2.26

etcd --version

# Output:
etcd Version: 3.2.26
Git SHA: 8cb03b6
Go Version: go1.10.4
Go OS/Arch: linux/amd64

Using yum

sudo yum install etcd-3.3.11

etcd --version

# Output:
etcd Version: 3.3.11
Git SHA: 2fb27896e
Go Version: go1.10.3
Go OS/Arch: linux/amd64

Version Comparison

Different versions of etcd come with their own set of features, improvements, and bug fixes. Here’s a brief comparison:

VersionKey FeaturesGo Version
3.2.26Stable, widely usedgo1.10.4
3.3.11Improved performance, added featuresgo1.10.3
3.3.10Improved performance, added featuresgo1.11.2
3.5.0Latest, comes with the newest features and improvementsgo1.16.3

Basic Usage of etcd

Once you’ve installed etcd, you can start using it. Here are some basic commands to get you started:

Using etcd

# Start etcd
etcd

# Output:
2021-09-30 10:43:09.276629 I | etcdmain: etcd Version: 3.2.26
2021-09-30 10:43:09.276663 I | etcdmain: Git SHA: 8cb03b6
2021-09-30 10:43:09.276669 I | etcdmain: Go Version: go1.10.4
2021-09-30 10:43:09.276674 I | etcdmain: Go OS/Arch: linux/amd64
2021-09-30 10:43:09.276680 I | etcdmain: setting maximum number of CPUs to 4, total number of available CPUs is 4

This command starts etcd. You’ll see logs that indicate etcd is running.

Verifying the Installation

You can verify the installation of etcd by checking its version:

etcd --version

# Output:
etcd Version: 3.2.26
Git SHA: 8cb03b6
Go Version: go1.10.4
Go OS/Arch: linux/amd64

This command will display the installed version of etcd along with the Go version used to build it.

Installing etcd with Docker

Docker provides an alternative method to install etcd. It’s a platform that allows you to automate the deployment, scaling, and management of applications using containerization. Here’s how you can install etcd using Docker:

# Pull the latest etcd image
sudo docker pull quay.io/coreos/etcd

# Run an etcd container
sudo docker run -d -p 2379:2379 -p 2380:2380 --name etcd quay.io/coreos/etcd

# Verify the installation
sudo docker exec etcd /bin/sh -c "ETCDCTL_API=3 etcdctl version"

# Output:
etcdctl version: 3.5.0
API version: 3.5

This will pull the latest etcd image from Docker Hub and run it in a new container. You can verify the installation by checking the version of etcd inside the container.

Installing etcd with Kubernetes

Kubernetes is an open-source platform for managing containerized applications. If you’re running a Kubernetes cluster, you can install etcd using a Kubernetes Deployment or a StatefulSet. Here’s an example of how to install etcd using a Kubernetes Deployment:

# Create a deployment.yaml file

cat <<EOF > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: etcd
spec:
  replicas: 1
  selector:
    matchLabels:
      app: etcd
  template:
    metadata:
      labels:
        app: etcd
    spec:
      containers:
      - name: etcd
        image: quay.io/coreos/etcd
        ports:
        - containerPort: 2379
EOF

# Create the Deployment
kubectl apply -f deployment.yaml

# Verify the Deployment
kubectl get pods -l app=etcd

# Output:
NAME                    READY   STATUS    RESTARTS   AGE
etcd-7b8f6d49f7-qw4k7   1/1     Running   0          1m

This will create a Kubernetes Deployment that runs an etcd container. You can verify the Deployment by checking the status of the pod.

Comparison of Installation Methods

Different methods of installing etcd have their own advantages and disadvantages. Here’s a brief comparison:

MethodAdvantagesDisadvantages
Package ManagerEasy, quick, managed by the systemLimited versions, not always up-to-date
Source CodeLatest version, more controlRequires Go, more steps
DockerIsolated, easy to manage and updateRequires Docker, not as integrated with the system
KubernetesScalable, managed by KubernetesRequires Kubernetes, more complex

Choose the method that best fits your needs and environment. If you’re just getting started with etcd, using a package manager might be the easiest option. If you need the latest version or more control, installing from source code might be better. If you’re using Docker or Kubernetes, installing etcd using these platforms could provide additional benefits.

Common etcd Install Issues

While installing etcd on Linux, you might encounter some common issues. Here, we discuss these issues and provide solutions to ensure a smooth installation process.

Issue: Unable to Locate Package

This error occurs when the package manager can’t find the etcd package in its repositories. Here’s an example of this error:

sudo apt install etcd-server

# Output:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package etcd-server

Solution: Update your package manager’s repository and try again. If the issue persists, consider adding a repository that contains the etcd package.

Issue: Incorrect etcd Version

Sometimes, you might find that the installed version of etcd is not what you expected. This could be due to the package manager installing an outdated version, or you might have multiple versions of etcd installed.

Solution: Check the version of etcd using etcd --version. If it’s not the version you want, consider installing etcd from source or using Docker to get the specific version you need.

Issue: etcd Service Not Starting

After installing etcd, you might encounter issues with starting the etcd service. This could be due to various reasons, such as incorrect configuration or port conflicts.

Solution: Check the status of the etcd service using systemctl status etcd. Look at the logs to identify any issues. Ensure that the ports etcd uses (typically 2379 and 2380) are not being used by other services.

Considerations for Using etcd

When using etcd, there are several considerations to keep in mind:

  1. Security: etcd stores sensitive data, so it’s crucial to secure your etcd installation. Consider using SSL/TLS for client-server communication and peer-to-peer communication.

  2. Backup: Regularly back up your etcd data to prevent data loss. You can use the etcdctl snapshot save command to create a snapshot of the etcd data.

  3. Performance: Monitor the performance of etcd using metrics exposed by the etcd server. You can use tools like Prometheus and Grafana for this purpose.

  4. Updates: Regularly update etcd to benefit from the latest features and security updates. However, ensure to test the updates in a non-production environment first.

What are Distributed Key-Value Stores

Before diving deeper into the usage of etcd, it’s important to understand the concept of distributed key-value stores and their importance in system administration.

A key-value store is a simple database that uses an associative array as the fundamental data model where each key is associated with one and only one value in a collection. This data structure is designed to store, retrieve, and manage associative arrays.

# Example of a key-value pair

Key: 'Username'
Value: 'admin'

In this example, ‘Username’ is the key and ‘admin’ is the value. This pair can be stored in a key-value store and retrieved using the key.

A distributed key-value store extends this concept across multiple machines, ensuring that the data is always available even if a single machine fails. This is achieved through data replication and partitioning.

# Example of data replication in a distributed key-value store

Machine 1:
Key: 'Username'
Value: 'admin'

Machine 2:
Key: 'Username'
Value: 'admin'

In this example, the same key-value pair is stored on two different machines. If Machine 1 fails, the data can still be retrieved from Machine 2.

System Administration and etcd

Etcd plays a crucial role in system administration as a distributed key-value store. It is used to hold and manage configuration details and service discovery, making it an essential component in distributed systems.

Etcd provides a reliable way to store data across a cluster of machines. This data is accessible to all nodes in the cluster, which makes etcd a great choice for implementing distributed systems coordination primitives like leader election, distributed locks, and distributed barriers.

Etcd is also used by Kubernetes as a backing store for all cluster data. It’s the place where Kubernetes stores all its cluster state, including the configuration data of the cluster, the state of the system, and the metadata about the deployed applications.

In conclusion, understanding the concept of distributed key-value stores and their implementation in etcd is crucial for effective system administration. This knowledge forms the basis for installing and using etcd on Linux, which we will explore in the following sections.

Practical Uses of Key-Value Stores

Distributed key-value stores like etcd are not just for system administration. They play a pivotal role in the architecture of large-scale applications. The ability to store, retrieve, and manage data across a cluster of machines makes them a powerful tool for maintaining consistency and high availability.

Data Replication and Consistency

One of the key advantages of distributed key-value stores is data replication. By storing the same data on multiple machines, they ensure that the data remains available even if one machine fails. This is crucial for large-scale applications that need to be up and running 24/7.

# Example of data replication in a distributed key-value store

Machine 1:
Key: 'Username'
Value: 'admin'

Machine 2:
Key: 'Username'
Value: 'admin'

In this example, the same key-value pair is stored on two different machines. If Machine 1 fails, the data can still be retrieved from Machine 2.

However, data replication also raises the issue of consistency. If the data is updated on one machine, it needs to be updated on all the other machines as well. This is where etcd shines. It uses the Raft consensus algorithm to ensure that the data remains consistent across all machines.

Exploring Related Concepts

If you’re interested in learning more about distributed systems and key-value stores, you might want to explore related concepts like data partitioning, consensus algorithms, and distributed transactions. These concepts provide a deeper understanding of how distributed systems work and how they maintain consistency and availability.

Further Resources for Mastering etcd

There are many resources available online to learn more about etcd and distributed key-value stores. Here are a few recommendations:

  1. CoreOS etcd GitHub Repository: The official GitHub repository of etcd where you can find the source code, issues, and discussions related to etcd.

  2. etcd Documentation: The official documentation of etcd provides a comprehensive guide on how to install, use, and troubleshoot etcd.

  3. Distributed systems for fun and profit: This book provides a great introduction to distributed systems, including key-value stores and consensus algorithms.

Recap: etcd Linux Quickstart

In this comprehensive guide, we’ve explored the ins and outs of installing and using etcd, a distributed key-value store, on Linux systems. We’ve delved deep into the world of distributed key-value stores, discussing the role of etcd in system administration and its importance in large-scale applications.

We began with the basics, guiding you through the process of installing etcd on Linux using a package manager. We then ventured into more advanced territory, demonstrating how to install etcd from source code, and how to install specific versions of etcd. We also discussed how to use etcd, providing you with basic commands to get started.

Moving further, we explored alternative approaches to installing etcd, such as using Docker and Kubernetes. We also discussed common issues you might encounter when installing and using etcd and provided solutions to help you overcome these challenges.

Here’s a quick comparison of the installation methods we’ve discussed:

MethodAdvantagesDisadvantages
Package ManagerEasy, quick, managed by the systemLimited versions, not always up-to-date
Source CodeLatest version, more controlRequires Go, more steps
DockerIsolated, easy to manage and updateRequires Docker, not as integrated with the system
KubernetesScalable, managed by KubernetesRequires Kubernetes, more complex

Whether you’re just starting out with etcd or you’re looking to level up your system administration skills, we hope this guide has given you a deeper understanding of etcd and its capabilities.

With its efficient management of key-value pairs and its crucial role in distributed systems, etcd is a powerful tool for system administration. Now, you’re well equipped to install and use etcd on Linux. Happy coding!