3 node cluster mit pacemaker/corosync Ubuntu

In diesem Atrikel möchte ich die Einrichtung und Verwaltung eines Pacemaker / Corosync 3 Node Cluster erklären.

Die Idee von Pacemaker ist es, Ressourcen auf mehreren Servern hochverfügbar zu halten. Ressourcen können hier sowohl Dienste wie ein Webserver oder eine Datenbank, aber auch eine IP Adresse sein.

In diesem Beispiel ist die Ressource ein Apache Webserver auf Ubuntu 18.04.

Installation

(Führt die Schritte auf allen nodes aus)
Zunächst installieren wir die Pakete pacemaker, pcs und crmsh.

sudo apt install -y pacemaker pcs crmsh

Startet pcsd (pacemaker corosync daemon) und aktiviert ihn, damit er auch nach einem Neustart wieder zur Verfügung steht.

sudo systemctl start pcsd
sudo systemctl enable pcsd

Pacemaker kommt mit dem user hacluster daher.
Diesen könnt ihr in euerer /etc/passwd sehen.

Dieser user wird verwendet um den Node in einem Cluster zu authentifizieren. Gebt ihm daher mit passwd ein neues passwort.

Damit der Pacemaker Cluster eingerichtet und alle Nodes zum Cluster werden können müssen ein paar Dingege gegeben sein:
- Die Nodes müssen sich sich gegenseitig per DNS auflösen können
- Die nodes müssen sich erreichen können
- Die Nodes müssen traffic auf Port 2224 zulassen

Tragt also zunächst die IPs und Hostnames die /etc/hosts Datei ein…

... und prüft, dass Ihr die anderen Hosts erreichen könnt.

Fügt jetzt noch eine IP Tables Regel hinzu, welche 2224 für eingehenden Traffic öffnet.

sudo iptables -A INPUT -p tcp -m tcp --dport 2224 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 3121 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 5404 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 5405 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 21064 -j ACCEPT

Cluster einrichten

Wir werden nun erstmal die Nodes untereinander authentifizieren.

sudo pcs cluster auth [node1] [node2] [node3]

(Sollte hierbei was schief gehen, könnt ihr mit pcs pscd clear-auth [node] auths wieder aufheben)

Diese Autentifizierungen sind unidirektional, die Nodes sind also untereinander authentifiziert. Das könnt ihr sehen, wenn ihr auf einem anderen Node versucht die Authentifizierung vorzunehmen.

Die Authorizierungen unseres 3 Node Clusters untereinander verhalten sich jetzt ungefähr so.

Das macht aber noch keinen Cluster, sondern erstmal nur drei untereinander mit pcs authorizierte Nodes. Also erstellen wir jetzt einen Cluster.

sudo pcs cluster setup --name [name] [node] [node] [node]

Solltet ihr meldungen erhalten, ein node wäre bereits in einem cluster, führ auf diesem pcs cluster destroy aus.

 


Awsome things: regextester

Ich habe grade die Seite regextester.com entdeckt und dachte, die kann ich einfach mal hier festhalten. :)


Wordpress passwort über die DB zurücksetzen

Sollte man mal für eine der Wordpress Instzanzen das Passwort vergessen haben (oder es im keepass nicht mehr finden *hust*) hier eine kurze Anleitung, wie ihr das passwort fix neu setzen könnt.

  1. Mit der DB verbinden
    root@server# mysql -u root
  2. Die wordpress db finden und damit verbinden
    mysql> use wordpress;
  3. User finden, dessen pw Ihr setzen wollt
    mysql> UPDATE `wp_users` SET `user_pass` = MD5( 'SOMEPASSWORD' ) WHERE `wp_users`.`user_login` = "SOMEUSER";


Awesome things: atome bauen mit sed

mit sed -e 's/REGEX/suchwort/g' kann man "suchwort" durch "REGEX" ersetzen. So weit so bekannt.

Man kann mit sed allerdings auch Atome bauen.
Das ermöglicht es beispielsweise einen Satz neu zu sortieren.

echo "hallo test world" | sed -e 's/\(.*\) \(.*\) \(.*\)/\1 \3 \2/'

Ein Atom wird in Runde klammern gefasst und ist ein regex.
(regex1) (regex2) (regex3) (regex4)
Der regex in diesem Fall ist .* matcht auf alles.

Somit ist folgendes in den Atomen gespeichert:
ATOM1=dies
ATOM2=ist
ATOM3=ein
ATOM4=satz

Jetzt können diese Atome mit \<Atom> neu angeordnet werden.


Awsome Things: column

Column bereitet daten in spalten auf.
Mit -t werden die columns als table aufgezeigt.
Mit -s kann ein Delimiter definiert werden, wird -s nicht definiert ist blankspace der Delimiter.

Beispiel: mount

Beispiel: mount mit column -t


Awesome one-liners: disk usage

Hier ein netter one-liner, um schnell rauszufinden, wo große Datenmengen liegen:

du -cshx /* | grep G

stderr nach /dev/null, da das proc sonst errors wirft. Bei dem Grep allerdings ohne Sinn :-)

Erklärung:
-c "produce a grand total" rechnet die Dateigrößen in dem Verzeichnis zusammen
- s (seperate-dirs) for directories do not include size of subdirectories
-h human readable
-x skip directories on different file systems


Awesome things: lolcat

Einfach mal sachen nach lolcat -a pipen.
Macht die Welt besser :)


Awesome things: colordiff

Ähnlich wie vimdiff macht colordiff das was der Name vermuten lässt.
Es zeigt den Unterschied zwischen zwei Dateien an, farbig.


Awesome things: vimdiff

Ich möchte euch vimdiff vorstellen.
Es macht genau das, was der name sagt.

Es vergleicht zwei oder mehr Dateien in vim.

NAME
vimdiff - edit two, three or four versions of a file with Vim and show
differences

SYNOPSIS
vimdiff [options] file1 file2 [file3 [file4]]


Magic SysRq Keys

Magic System Request Keys sind Tastenkombinationen, die sich direkt an den Linux Kernel wenden.

Wikipedia dazu

Mit Ihnen ist es beispielsweise möglich einen Kernel Crashdump (was ist passiert als das system abgestürzt ist?) auf die Festplatte zu schreiben, bevor man den Server neustartet.