DRBD Reactor – Recovering an Isolated DRBD Primary

Recovering an Isolated DRBD Primary

This blog post will show how DRBD’s recently added support for secondary –force can be of great use when combined with DRBD Reactor. In short, secondary-force reconfigures the DRBD device so that the suspended I/O requests and newly submitted I/O requests will terminate with I/O errors. Motivation  Imagine a three-node setup where your current active node […]

DRBD Reactor – Promoter

DRBD Reactor Promoter

In this blog post, we discuss the Promoter plugin. For a more general introduction to ‘drbd-reactor,’ please read the overview blog post first. Motivation With many years of experience in high-availability (HA), we noticed that the typical Pacemaker stack used in such HA scenarios introduces great complexity. We have to deal with misconfigured Pacemaker setups […]

DRBD Reactor – Prometheus

DRBD Reactor Prometheus

This blog post discusses the ‘Prometheus’ plugin, which implements a prometheus.io compatible metrics endpoint. But, first, for a more general introduction to ‘drbd-reactor,’ please read the overview blog post. Motivation Proper monitoring of DRBD resources has been a messy task for too long. There are various monitoring solutions, and as DRBD is widely used, there […]

DRBD Reactor – User Mode Helper (UMH)

DRBD Reactor User Mode Helper (UMH)

This blog post discusses the User Mode Helper (UMH) plugin. Read the overview blog post first for a more general introduction to drbd-reactor. Motivation Experienced DRBD users will know that DRBD (the part in the Linux kernel) can call user-defined helper scripts if several important events happen, like before a resource becomes a sync target. […]

DRBD Reactor – Design & Features

DRBD Reactor

Over time, LINBIT has built a variety of software components for use in highly-available systems. These components range from DRBD for block device replication to LINSTOR, our SDS solution, to various plugins/scripts integrating DRBD into Pacemaker, OpenStack, OpenNebula, Proxmox, Kubernetes, and more. However, a missing component was a daemon that monitors DRBD events like a resource becoming […]

Using DRBD block devices for kubevirt

This demonstrates how to use DRBD block devices provisioned by the LINSTOR CSI driver. We assume that the CSI driver is working (e.g., by installing it via it operator/helm chart), and that kubevirt also works and that live migration is enabled and tested. Live migration is not a requirement, but it a lot more fun. […]

Kubernetes Operator: LINSTOR’s Little Helper

Before we describe what our LINSTOR Operator does, it is a good idea to discuss what a Kubernetes Operator actually is. If you are already familiar with Kubernetes Operators, feel free to skip the introduction. Introduction CoreOS describes Operators like this: An Operator is a method of packaging, deploying and managing a Kubernetes application. A […]

Key/Value Store in LINSTOR

Recently we introduced a Key/Value store in LINSTOR and exposed it in a developer-friendly way in the Python API (python-linstor). The first question is why would one want such a Key/Value store in LINSTOR when there are many high performance implementations such as etcd. The request for a K/V store was mainly driven by LINSTOR […]

Containerize LINSTOR

LINBIT and its Software-Defined Storage (SDS) solution LINSTOR has provided integration with Linux containers for quite some time. These range from a Docker volume plugin, to a Flexvolume plugin, and recently, a CSI plugin for Kubernetes. While we always provided excellent integration to the container world, most of our software itself was not available as […]

High Level Resource API – The simplicity of creating replicated volumes

In this blog post, we present one of our recent extensions to the LINSTOR ecosystem: A high-level, user-friendly Python API that allows simple DRBD resource management via LINSTOR. Background: So far LINSTOR components communicated by the following means: Via Protocol Buffers, or via the Python API that is used in the linstor command line client. Protocol […]