Mal eben schnell HA

2 Nov 2020 Lesezeit: 3 Minuten

Ich stehe ja total auf diesen ganzen HA Kram in "good old standard" manier. Darunter zu finden ist dann auch Pacemaker als Tooling, welches man für seine Failover oder eben HA Cluster in größeren Dimensionen nutzen kann.

In diesem Beitrag beschreibe ich, wie man sich fix ein HA Setup bauen kann, bei dem N Knoten eine (virtuelle) IP-Adresse hin und her reichen. Nutzen kann man das zum Beispiel bei identisch eingerichteten Webserver, als klassisches Failover, oder - wie in meinem Fall - um damit einen Kubernetes Cluster anzusprechen und somit die Master verfügbar zu halten.

installation der notwendigen Software (Debian)

apt install --assume-yes pacemaker corosync pcs

start and enable services

systemctl start pcsd pacemaker corosync
systemctl enable pacemaker corosync pcsd

set password for user hacluster

Mit diesem Benutzer wird das pairing versucht. Das bedeutet, das in den nächsten Schritten die Nodes versuchen werden sich mit diesem Benutzernamen und Kennwort gegenüber den anderen Teilnehmenden Knoten zu authentifizieren.

echo "d3fcCfcjumK3zPvnVFpp" | passwd hacluster --stdin
passwd hacluster

setup the cluster

Jetzt geht es ans eingemachte: Wir setzen den Cluster auf. Wir beginnen nach einer frischen Installation damit, das wir zunächst

  • den vorhandenen Cluster ansprechen
  • dann die die Hosts authentifizieren
  • später dann das Setup auf den Hosts starten
  • den Cluster starten und enablen
pcs cluster auth -u hacluster -p d3fcCfcjumK3zPvnVFpp
pcs host auth server1 server2 server3 -u hacluster
pcs cluster setup superdupercluster server1 server2 server3
pcs cluster start --all
pcs cluster enable --all

create cluster ressource for failover IP

jetzt wo wir einen funktionieren Cluster haben, werden wir die gewünschte virtuelle IP-Adresse einrichten, damit wir unserem Ziel näher kommen.

pcs resource create cluster_ip ocf:heartbeat:IPaddr2 ip=111.222.333.444 cidr_netmask=24 op monitor interval=30s

Optional - Loadbalancing

Richtig cool ist eigentlich, das wir einen rudimentären Loadbalancer haben (können). Die nun vorhandene virtuelle IP-Adresse wird im Cluster geclont und auf mehreren Knoten bereitgestellt.

pcs resource clone cluster_ip clone-max=2 clone-node-max=2 globally-unique=true
pcs resource update cluster_ip clusterip_hash=sourceip

check status

Zu guter letzt wollen wir natürlich wissen wie es unserem Cluster geht. Das erfahren wir durch

pcs status

Quellen und Links


Proxmox CEPH Upgrade Luminous zu Nautilus (mit filestore)

12 Mär 2020 Lesezeit: 3 Minuten

Wenn man mal richtig bock darauf hat sich den Tag zu versauen, dann macht man genau das: ein Upgrade von Ceph Version Luminous auf Ceph Version Nautilus mit Filestore.

PARTITION=4
for i in a b c d e f g h 
do
    ceph-volume simple scan /dev/sd$i$PARTITION
done

/etc/ceph/osd/0-908444d5-2b4e-48e7-8780-58c2679c4db0.json

{
    "active": "ok", 
    "ceph_fsid": "b8f7fd3a-471a-42bc-9bdf-23694508646f", 
    "cluster_name": "ceph", 
    "data": {
        "path": "/dev/sda4", 
        "uuid": "a47683ae-1b32-45b1-b48c-adb3ad52037e"
    }, 
    "fsid": "908444d5-2b4e-48e7-8780-58c2679c4db0", 
    "keyring": "AQAVX+5daGvXNBAA8QMsdjVaDwNzTmY6qbY/Fw==", 
    "magic": "ceph osd volume v026", 
    "ready": "ready", 
    "require_osd_release": 12, 
    "systemd": "", 
    "type": "filestore", 
    "whoami": 0
}

zu

{
    "active": "ok", 
    "ceph_fsid": "b8f7fd3a-471a-42bc-9bdf-23694508646f", 
    "cluster_name": "ceph", 
    "data": {
        "path": "/dev/sda4", 
        "uuid": "a47683ae-1b32-45b1-b48c-adb3ad52037e"
    }, 
    "journal": {
        "path": "/var/lib/ceph/osd/ceph-0/journal"
        },
    "fsid": "908444d5-2b4e-48e7-8780-58c2679c4db0", 
    "keyring": "AQAVX+5daGvXNBAA8QMsdjVaDwNzTmY6qbY/Fw==", 
    "magic": "ceph osd volume v026", 
    "ready": "ready", 
    "require_osd_release": 12, 
    "systemd": "", 
    "type": "filestore", 
    "whoami": 0
}
ceph-volume simple activate --all
...
Running command: /bin/mount -v /dev/sdf4 /var/lib/ceph/osd/ceph-17
 stdout: mount: /dev/sdf4 mounted on /var/lib/ceph/osd/ceph-17.
Running command: /bin/systemctl enable ceph-volume@simple-17-ed611cec-c4c2-4c8b-934c-69292305c63c
 stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@simple-17-ed611cec-c4c2-4c8b-934c-69292305c63c.service → /lib/systemd/system/ceph-volume@.service.
Running command: /bin/ln -sf /dev/null /etc/systemd/system/ceph-disk@.service
--> All ceph-disk systemd units have been disabled to prevent OSDs getting triggered by UDEV events
Running command: /bin/systemctl enable --runtime ceph-osd@17
 stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph-osd@17.service → /lib/systemd/system/ceph-osd@.service.
Running command: /bin/systemctl start ceph-osd@17
--> Successfully activated OSD 17 with FSID ed611cec-c4c2-4c8b-934c-69292305c63c

Quellen und Links:


Proxmox Update von 5.X auf 6.x

24 Jan 2020 Lesezeit: 5 Minuten

Ich mach es kurz: ich liebe Proxmox als einfache und potente Lösung für die Virtualisierung. Es macht einfach Spaß und bedient viele Bedürfnisse die man so in der IT-Infrastruktur hat.

Das Update auf Version 6 hat bei mir einige Probleme gelöst und dem ganzen natürlich einen neuen Anstrich gegeben. Gleichzeitig war es cool, das man zweigleisig fahren konnte - also Hosts mit Version 5 und Hosts mit Version 6 im Cluster mischen kann.

In meinem Beitrag zeige ich auf, wie ich as Upgrade möglich kompakt durchgeführt habe und die notwendigen Schritte quasi mit Copy and Paste gegangen bin.

Ziel ist: Proxmox upgrade von Version 5.X zu 6.x

upgrade was da ist

Zunähchst einmal wollen wir aktualisieren was wir unter den Fingern haben. Das ist immer gut und minimiert die Stolpersteine.

apt-get update && apt-get dist-upgrade -y && apt-get autoclean -y && apt-get autoremove -y

checken was zu tun ist

Nach dem Update wollen wir schauen, was wir überhaupt zu tun haben. Dafür wird ein kleines Skript mitgeliefert, welches wir gefahrlos ausfühen können.

pve5to6

shutdown der HA services

Normaler Weise wollen wir HA. So jedoch nicht wenn wir updaten - andernfalls haben wir russisch Roulette mit den Diensten. Daher schalten wir auf allen Knoten die HA-Services ab.

systemctl stop pve-ha-lrm
systemctl stop pve-ha-crm
systemctl status pve-ha-lrm pve-ha-crm | grep -i active

kein rebalancing (ceph ony)

Sofern CEPH im Einsatz ist, wollen wir ausnahmesweise mal kein rebalancing solange wir die Software aktualisieren und die Kisten rebooten.

ceph osd set noout

Proxmox Corosync 3 Stretch repository

Jetzt geht es los: damit wir nicht alles still legen, aktualisieren wir zunächst Corosync - das ist einfach gemacht und funktionierte bei mir auch ohne sorgen im Cluster - quasi on the fly

echo "deb http://download.proxmox.com/debian/corosync-3/ stretch main" > /etc/apt/sources.list.d/corosync3.list
apt update
apt dist-upgrade --download-only
apt dist-upgrade -y

check the nodes

Ob alles richtig gelaufen ist, sehen wir durch das folgende Kommando.

pvecm status

start der HA Services

Jetzt könnte man die HA-Dienste wieder starten - ich mache das nicht, ich will schnell fertig werden.

systemctl start pve-ha-lrm
systemctl start pve-ha-crm
systemctl status pve-ha-lrm pve-ha-crm | grep -i active

Update der APT repositories

Damit wir nun das gesamte System aktualisieren können, müssen wir auch die vorhandenen Repos anfassen. Ich bin faul und mache das mit sed.

sed -i 's/stretch/buster/g' /etc/apt/sources.list
sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/pve-*

(Ceph only)

Wenn Ceph im Einsatz ist empfiehlt es sich wirklich das auch gleich mit zu aktualisieren. Bei meinem drei Knoten Backup Cluster hat es wunder gewirkt.

echo "deb http://download.proxmox.com/debian/ceph-luminous buster main" > /etc/apt/sources.list.d/ceph.list

upgrade to Proxmox v6

Jetzt wird es ernst. Bitte anschnallen und die Hosen hochziehen. Wir aktualisieren.

apt update
apt-get dist-upgrade -y

Aufräumen

Wenn wir fertig sind, die Hosts und VMs alle wieder laufen, dann können wir auch ein wenig aufräumen.

rm /etc/apt/sources.list.d/corosync3.list
apt-get autoclean -y 
apt-get autoremove -y

Ceph only

ceph osd unset noout