Bau einer K8s bare-metal-cloud mit RaspberryPI: Von einem, der auszog das Fürchten zu lernen.
()
About this ebook
Darum: eine Cloud muss her.
Related to Bau einer K8s bare-metal-cloud mit RaspberryPI
Related ebooks
K8s Applications mit MicroK8S auf Raspberry PI Rating: 0 out of 5 stars0 ratingsWicket: Komponentenbasiert und objektorientiert - das alternative Java-Webframework Rating: 0 out of 5 stars0 ratingsCloud Computing Grundlagen: Technisch / rechtlich / wirtschaftlich und architekturell Rating: 0 out of 5 stars0 ratingsOpenLaszlo: schnell + kompakt Rating: 0 out of 5 stars0 ratings.NET-Praxis: Tipps und Tricks zu .NET und Visual Studio Rating: 0 out of 5 stars0 ratingsDSL mit Xtext/Xtend. 4GL-Entwicklung produktiver gestalten Rating: 0 out of 5 stars0 ratingsDocker: Webseiten mittels Containerarchitektur erstellen Rating: 3 out of 5 stars3/5Grails: Webanwendungen mit Groovy und Grails schnell+kompakt Rating: 0 out of 5 stars0 ratingsVaadin mit Eclipse, Clojure und OSGi Rating: 0 out of 5 stars0 ratingsEclipse SmartHome und Smart Office: Intelligente Lösungen in der Heimautomation Rating: 0 out of 5 stars0 ratingsASP.NET Core: Eine Einführung Rating: 0 out of 5 stars0 ratingsDRBD-Kochbuch: Hochverfügbarkeitslösungen selbst erstellen - ohne SAN oder NAS! Rating: 0 out of 5 stars0 ratingsSilverlight 2.0: schnell + kompakt Rating: 0 out of 5 stars0 ratingsApache Tapestry: Einstieg in die komponentenorientierte Webentwicklung Rating: 0 out of 5 stars0 ratingsWebentwicklung mit dem Play Framework Rating: 0 out of 5 stars0 ratingsDie Oracle Datenbank 19c: Eine Einführung für DBAs Rating: 0 out of 5 stars0 ratingsMicrosoft AJAX: AJAX Libary, ASP .NET 2.0 Extensions, AJAX Control Toolkit Rating: 0 out of 5 stars0 ratingsDas Vulkan-API: Teil 2: Wie man ein Framework erstellt und Shader programmiert Rating: 0 out of 5 stars0 ratingsDocker und die Containerwelt: Einstieg und Expertentipps rund um Docker-Container Rating: 1 out of 5 stars1/5Selfhosting: Server aufsetzen und betreiben Rating: 0 out of 5 stars0 ratingsJava FX - Embedded Rating: 0 out of 5 stars0 ratingsCDI - Dependency Injection in Java EE 7: Dependency Injection in Java EE 7 Rating: 0 out of 5 stars0 ratingsPowerShell: Grundlagen für .NET-Entwickler Rating: 0 out of 5 stars0 ratingsEIGENE Blockchain und Smart Contract's erstellen: Für Anfänger geeignet, Schritt für Schritt Erklärung Rating: 0 out of 5 stars0 ratingsSprachenkompendium: Vala, Go und Rust Rating: 0 out of 5 stars0 ratingsAutodesk Inventor 2019 - Aufbaukurs Konstruktion: Viele praktische Übungen am Konstruktionsobjekt Getriebe Rating: 0 out of 5 stars0 ratingsSchnelleinstieg Banana Pi: 160 Seiten Boards, Installation, Programmierung, Elektronikprojekte und Zubehör nutzen Rating: 0 out of 5 stars0 ratingsErfahrungen mit Eclipse 4: aus der Praxis für die Praxis Rating: 0 out of 5 stars0 ratingsBig Data, Fast Data Rating: 0 out of 5 stars0 ratingsZend Framework 2: Für Einsteiger und Umsteiger Rating: 0 out of 5 stars0 ratings
Computers For You
Einstieg in ChatGPT: Künstliche Intelligenz verstehen und nutzen: Ein praktischer Ratgeber für Einsteiger Rating: 0 out of 5 stars0 ratingsWeg ins Darknet und Im Darknet Rating: 0 out of 5 stars0 ratingsDie KI sei mit euch: Macht, Illusion und Kontrolle algorithmischer Vorhersage Rating: 0 out of 5 stars0 ratingsDie 10 besten Regal-Lautsprecher: 1hourbook Rating: 0 out of 5 stars0 ratingsLaws of UX: 10 praktische Grundprinzipien für intuitives, menschenzentriertes UX-Design Rating: 0 out of 5 stars0 ratingsRaspberry Pi Kinderleicht: Pi 4 mit 8 GB Rating: 0 out of 5 stars0 ratingsTaschen-Guide zur Professional Scrum Master-Zertifizierung (PSM 1) Rating: 0 out of 5 stars0 ratingsSteampunk kurz & geek Rating: 3 out of 5 stars3/5Die KI Bibel, mit künstlicher Intelligenz Geld verdienen: Echte Fallbeispiele und Anleitungen zum Umsetzen Rating: 1 out of 5 stars1/5Neuronale Netze selbst programmieren: Ein verständlicher Einstieg mit Python Rating: 0 out of 5 stars0 ratingsKünstliche Intelligenz Rating: 0 out of 5 stars0 ratingsNew Game Plus: Perspektiven der Game Studies. Genres - Künste - Diskurse (Bild und Bit. Studien zur digitalen Medienkultur) Rating: 0 out of 5 stars0 ratingsDas Minecraft-Server-Buch Rating: 0 out of 5 stars0 ratingsSAP Business One® Dashboards: Bessere Ergebnisse mit SAP Business One® Rating: 0 out of 5 stars0 ratingsProgrammieren in C: Programmieren lernen von Anfang an - Mit vielen Programmierbeispielen - Geeignet zum Selbststudium Rating: 0 out of 5 stars0 ratings...Als die Noten laufen lernten...Band 2: Kabarett-Operette-Revue-Film-Exil. Unterhaltungsmusik bis 1945 Rating: 0 out of 5 stars0 ratingsDigitalisierung verstehen: Was wir über Arbeit, Bildung und die Gesellschaft der Zukunft wissen müssen Rating: 0 out of 5 stars0 ratingsEinführung ins Darknet: Darknet ABC Rating: 0 out of 5 stars0 ratingsLinux-Musikserver - Die Anleitung: 1hourbook Rating: 0 out of 5 stars0 ratingsIndustrie 4.0 und Digitalisierung – Innovative Geschäftsmodelle wagen! Rating: 0 out of 5 stars0 ratingsShopware 6 Handbuch Rating: 0 out of 5 stars0 ratingsGrundlagen und Methoden der Wirtschaftsinformatik: Eine anwendungsorientierte Einführung Rating: 0 out of 5 stars0 ratingsBig Data - Apache Hadoop Rating: 0 out of 5 stars0 ratings60+ Webtools - Für den Unterricht und mehr: Unterricht Digital gestalten und spielerisch Online Unterrichten Rating: 0 out of 5 stars0 ratingsKybernetik, Kommunikation und Konflikt: Gregory Bateson und (s)eine kybernetische Konflikttheorie Rating: 0 out of 5 stars0 ratingsScribus Desktop Publishing: Das Einsteigerseminar Rating: 0 out of 5 stars0 ratingsErste Schritte mit dem Raspberry Pi: Installation, Konfiguration, Tuning und Praxis für alle aktuellen Raspberry-Pi-Modelle Rating: 0 out of 5 stars0 ratingsDatenbanken: Grundlagen und Entwurf Rating: 0 out of 5 stars0 ratingsDie Geschichte des Computers: Wie es bis zur Form des heutigen 'PC' kam. Rating: 0 out of 5 stars0 ratings
Reviews for Bau einer K8s bare-metal-cloud mit RaspberryPI
0 ratings0 reviews
Book preview
Bau einer K8s bare-metal-cloud mit RaspberryPI - Alfred Sabitzer
Bau einer K8s bare-metal-cloud mit RaspberryPI
Ein Kubernetes-Cluster auf Basis RaspberryPi 4 und Microk8s.
Integration der notwendigen EDV-Umgebung.
„Von einem der auszog, das Fürchten zu lernen".
Alfred Sabitzer
https://www.linkedin.com/in/alfred-sabitzer-805312183/
https://www.xing.com/profile/Alfred_Sabitzer/cv
Vorwort
Die Idee eine „Cloud zu bauen entstand während der Corona-Zeit. Anstatt „Fernsehen
könnte man doch was Sinnvolles ausprobieren. Außerdem ist der vorhandene Raspberry 4 bereits überlastet, und kann schwerlich neue Dienste anbieten. Da wäre doch ein System, das skalierbar ist, beliebig viele Services anbieten kann usw. doch genau das Richtige. Außerdem sind Microservices leichter auf neue Hardware portierbar! Ich erinnere mich noch genau, wie aufwändig der Umstieg vom Raspberry 2 auf den Raspberry 3 und dann auf den Raspberry 4 war. Ich musste jedes mal aufs Neue nachdenken, wie den die Installation genau geht, habe viel Zeit investiert und erreichte am Ende bestenfalls, dass ich nachher dieselben Dienste nutzen konnte wie vorher:)
Darum: eine Cloud muss her.
Generell: Der Bau einer Cloud ist ein komplexes Unternehmen (am einfachsten ist es, wenn man sich in einer bereits existenten Cloud einmietet – da gibt es genug Anbieter am Markt).
Dieses Buch beschreibt die einzelnen Schritte, die ich durchgeführt habe um mir meine eigene Cloud zu bauen. Hier wird nur der Hardwareaufbau sowie die Basiseinrichtung beschrieben. Der Bau von Microservices, das Einrichten einer CI/CD-Strecke, ja selbst das konfigurieren von Prometheus und Grafana überschreitet den Rahmen dieses Buches. Hier werden wirklich nur die Basisfunktionen (HA-Cluster, Cluster-Storage, Ingress, Zertifikate, Dashboard …) gestreift.
Hier finden sich viele Codefragmente, die eine Idee geben können, wie jemand das bei sich zu Hause selbst tun könnte. Diese Codeteile erheben keinen Anspruch auf Funktionalität oder dergleichen. Die Verwendung erfolgt auf eigenes Risiko.
Generell würde mich der Austausch mit anderen „Cloud"-Bauern interessieren. Ideen, Verbesserungen, Anregungen udglm. sind herzlich willkommen. Der Auto ist erreichbar unter microk8s.raspberry@slainte.at erreichbar. Teile des Buches gibt es online auf https://whttps://www.slainte.at/index.php/k8s/cloudww.slainte.at/index.php/k8s/cloud.
Unzmarkt, im Mai 2021.
Prinzipieller Aufbau einer Cloud
OEBPS/images/image0001.jpgSchaubild 1: Cloud Struktur
Diese Abbildung beschreibt den Aufbau meiner „On-Premise-Cloud mit allen vorhanden Komponenten. Die „Cloud
selbst wird durch die Umrandung für Infrastruktur, Dämonset und Service dargestellt. Alles innerhalb dieser Umrandung ist in der Cloud bzw. Teil der Cloud.
Eine allgemeine Cloud besteht im wesentlichen aus den folgenden Kernkomponenten:
Infrastruktur – Alles was physikalisch vorhanden sein muss
Dämonsets – Alle Softwarekomponenten zum Betrieb eines Clusters
Service – Alle Infrastruktservices, die notwendig sind um Business-Services anzubieten bzw. zu betreiben
Konfiguration – Alle Konventionen/Konfiguration die zum Betrieb der Business-Services notwendig sind
Umsysteme – Alle Systeme, die aus verschiedenen Gründen nicht (nur) im Cluster vorhanden sind (z.b. Internet-Router)
Entwicklungssysteme – Alle System- und Softwarekomponenten die notwendig sind, um Business-Services zu entwickeln.
Die nachfolgenden Kapitel versuchen diesen prinzipiellen Cloud-Aufbau auf einer privaten „On-Premise"-Cloud nachzubilden und zu beschreiben.
Die CNCF Cloud Native Interactive Landscape auf https://www.cncf.io/ nennt derzeit folgende Applikationen:
OEBPS/images/image0002.jpgSchaubild 2: Cloud Native Landscape
Prinzipiell sollte der Aufbau einer Cloud nicht unterschätzt werden. Auf humorige Weise ist das im folgenden Bild dargestellt.
OEBPS/images/image0003.jpgSchaubild 3: Cloud Eisberg
Aufbau des Gesamtsystemes
OEBPS/images/image0004.pngSchaubild 4: Gesamtsystem
Ein Raspberry Steuernode (für Monitoring, Backup, ansible, Entwicklung …) sowie ein Raspberry-Cluster mit fünf Raspberry’s.
Auf dem Cluster werden die folgenden K8s installiert.
Kustomize # k8s native configuration management
linkerd # Linkerd is a service mesh for Kubernetes
Webservice # einfacher Webservice
cert-manager # Zertifikatsmanager
portainer # Portainer UI for your Kubernetes cluster
prometheus # Prometheus operator for monitoring and logging
registry # Private image registry
dashboard # The Kubernetes dashboard
metrics-server # K8s Metrics Server for API access to service metrics
ingress # Ingress controller for external access
longhorn # ClusterStorage
helm3 # Helm 3 - Kubernetes package manager
metallb # Loadbalancer for your Kubernetes cluster
ha-cluster # Configure high availability on the current node
rbac # Role-Based Access Control for authorisation
dns # CoreDNS
storage # Storage class; allocates storage from host directory
disabled:
helm # Helm 2 - the package manager for Kubernetes
host-access # Allow Pods connecting to Host services smoothly
Die Installationsreihenfolge ist von unten nach oben.
Der Raspberry-Steuernode wird für Monitoring, Backup, dhcp, ntp usw. benutzt. Weiters ist dieser Raspberry auch der Entwicklungsrechner. Dh. Dort wird neben Docker, Arkade, Ansible usw. auch ein separates microk8s installiert.
Hier werden dann alle Komponenten getestet, bevor die Konfiguration am Cluster installiert wird. Ziel ist es ein versioniertes Deployment mit einer integrierten CI/CD-Strecke zu haben.
Aufbau der Hardware
Inspiration:
https://www.picocluster.com/blogs/picocluster-assembly-instructions/assemble-pico-5h-rpi4
https://www.reichelt.at/at/de/raspberry-pi-fan-tower-4-stoeckig-rpi-fan-tower-4-p299268.html?PROVID=2807&gclid=EAIaIQobChMItIXp4e_N8AIVBigYCh1V6QINEAYYBiABEgKeRPD_BwE
https://www.amazon.de/GeeekPi-6-Layers-Raspberry-K%C3%BChlk%C3%B6rper-Stapelbares/dp/B085ZJQMXF/ref=sr_1_5?adgrpid=70647801065&dchild=1&gclid=EAIaIQobChMItIXp4e_N8AIVBigYCh1V6QINEAAYAyAAEgI5Z_D_BwE&hvadid=391629950630&hvdev=c&hvlocphy=20047&hvnetw=g&hvqmt=e&hvrand=8703768946581253209&hvtargid=kwd-296167140860&hydadcr=27956_1978103&keywords=raspberry+pi+cluster&qid=1621156967&sr=8-5
https://www.reichelt.at/at/de/gehaeuse-fuer-raspberry-pi-4-alu-schwarz-rpi-case-alu07-p261677.html?PROVID=2807&gclid=EAIaIQobChMI54DQs_HN8AIV0gCiAx2dYQPpEAQYBiABEgLjHfD_BwE
https://www.amazon.de/Geekworm-Raspberry-Aluminum-Passive-Dissaption/dp/B07ZVJDRF3
https://magpi.raspberrypi.org/articles/group-test-best-raspberry-pi-4-thermal-cases-tested-and-ranked
https://raspberrytips.com/raspberry-pi-4-passive-cooling/
Ich habe mir einen Pico-Cluster bestellt. Diese Hardware hat ein sympathisches Gehäuse, in dem alle Komponenten ihren Platz haben. Diese Hardware kommt aus den USA, was zu folgenden Problemen führt
Der Stromstecker ist aus den USA. Für Europa braucht man einen eigenen. Ein altes PC-Stromkabel reicht
Es wird Zoll fällig. Die Höhe des Zolls berechnet sich an der Höhe des Einkaufwertes.
Dh. nur das Notwendigste aus den USA kaufen. Die Raspberrys und die SD-Speicherkarten gibt es auch in Europa (und sind teilweises sogar billiger).
Es gibt aber auch noch andere Hardwareanbieter (siehe Links).
Prinzipiell braucht man ein paar Raspberrys, SD-Karten, einen Nway-Switch, Netzwerkkabel, passendes Power-Supply, Kühlung. Ob es ein aktiver Lüfter sein muß, oder ob man mit passiven Kühlteilen das Auslangen findet muß jeder selbst entscheiden. Ich persönlich glaube mittlerweile, wenn man meine aktive Kühlung mit Lüfter braucht, dann sollte man stärkere Hardware nehmen:). Dh. Es gibt gute passive Kühlsysteme, die ihren Zweck erfüllen.
Meine Lieferung sieht aus wie folgt:
OEBPS/images/image0005.jpgSchaubild 5: Pico Cluster 1
Es kommt alles in einer Box. Das Pico-Gehäuse aus Acryl hat eine Schutzfolie. Es sind alle Schrauben, passiven und aktiven Elemente gut verpackt.
OEBPS/images/image0006.jpgSchaubild 6: Pico Cluster 2
Meine Raspberrys haben auch ein passives Kühlteil (das große Schwarze) aus Aluminium.
OEBPS/images/image0007.jpgSchaubild 7: Pico Cluster 3
Hier kann man den zusammengebauten Tower plus der Stromverteilung sehen. Die Stromkabel sind bereits an den einzelnen Raspberrys angeschlossen. Der Tower ist bereits mit der Grundplatte verbunden.
OEBPS/images/image0008.jpgSchaubild 8: Pico Cluster 4
Hier kann man die Stromversorgung sehen. Diese Stromversorgung reicht für alle fünf Raspberrys.
OEBPS/images/image0009.jpgSchaubild 9: Pico Cluster 5
Hier sieht man den Nway-Switch, bereits mit dem Pico-Seitenteil verbunden.
OEBPS/images/image0010.jpgSchaubild 10: Pico Cluster 6
Ansicht „von links" mit dem aktiven Lüfter (der nicht leise ist).
OEBPS/images/image0011.jpgSchaubild 11: Pico Cluster 7
Ansicht „von rechts" mit dem nway-Switch und der Stromversorgung im Hintergrund.
Sehr elegant gelöst ist bei Pico die Verbindung der einzelnen Seitenteile. Das ist bei jeder Seitenkante eine Schraube mit Mutter. Dh. jede einzelne Seite kann mit vier Schrauben gelöst und entnommen werden. Das ist praktisch, wenn man die SSD-Karten wieder mal neu aufsetzen will / muß.
Ab nun kann der Cluster mit einem richtigen Betriebssystem und den Softwarekomponenten versorgt werden.
Bisher erreicht:
Hardware zusammengebaut
Installieren der Raspberrys
Inspiration:
https://www.raspberry-pi-geek.de/ausgaben/rpg/2018/04/raspberry-pi-farm-mit-ansible-automatisieren/
https://www.raspberrypi.org/blog/raspberry-pi-imager-update/
Wir wählen das richtige Betriebssystem, und initialiseren alle SD-Karten.
OEBPS/images/image0012.jpgSchaubild 12: Raspberry Pi Imager
Alle Karten mit dem Raspberry-Imager https://www.raspberrypi.org/blog/raspberry-pi-imager-update/ initialisieren.
Für jeden Node merken wir uns die MAC-Adresse. Am DHCP-Server müssen die richtigen Einträge konfiguriert werden.
alfred@monitoring:~$ sudo tail -f /var/log/syslog | grep -i dhcp
Apr 14 07:28:44 monitoring dhcpd[2264]: DHCPACK on 192.168.0.24 to dc:a6:32:ed:09:68 (ubuntu) via eth0
Apr 14 07:28:44 monitoring dhcpd[2264]: DHCPOFFER on 192.168.0.25 to dc:a6:32:ee:f2:15 (ubuntu) via eth0
Apr 14 07:28:44 monitoring dhcpd[2264]: DHCPREQUEST for 192.168.0.25 (192.168.0.2) from dc:a6:32:ee:f2:15 (ubuntu) via eth0
Apr 14 07:28:44 monitoring dhcpd[2264]: DHCPACK on 192.168.0.25 to dc:a6:32:ee:f2:15 (ubuntu) via eth0
alfred@monitoring:~$ sudo nano /etc/dhcp/dhcpd.conf
# unterster
host pc1 {
hardware ethernet dc:a6:32:ee:f1:94;
fixed-address 192.168.0.201;
server-name pc1
;
}
# vierter
host pc2 {
hardware ethernet dc:a6:32:ee:f1:c4;
fixed-address 192.168.0.202;
server-name pc2
;
}
# dritter
host pc3 {
hardware ethernet dc:a6:32:ee:f2:15;
fixed-address 192.168.0.203;
server-name pc3
;
}
# zweiter
host pc4 {
hardware ethernet dc:a6:32:ee:f2:21;
fixed-address 192.168.0.204;
server-name pc4
;
}
# oberster
host pc5 {
hardware ethernet dc:a6:32:ed:09:68;
fixed-address 192.168.0.205;
server-name pc5
;
}
alfred@monitoring:~$ sudo systemctl restart isc-dhcp-server
alfred@monitoring:~$ sudo systemctl status isc-dhcp-server
● isc-dhcp-server.service - ISC DHCP IPv4 server
Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-04-14 07:42:54 CEST; 8s ago
Docs: man:dhcpd(8)
Main PID: 22045 (dhcpd)
Tasks: 4 (limit: 9257)
CGroup: /system.slice/isc-dhcp-server.service
└─22045 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dh>
Apr 14 07:42:54 monitoring.slainte.at sh[22045]: Wrote 0 new dynamic host decls to leases file.
Apr 14 07:42:54 monitoring.slainte.at sh[22045]: Wrote 20 leases to leases file.
Apr 14 07:42:54 monitoring.slainte.at dhcpd[22045]: Wrote 20 leases to leases file.
Apr 14 07:42:54 monitoring.slainte.at dhcpd[22045]: Listening on LPF/eth0/dc:a6:32:d3:aa:3e/192.168.0.0/24
Apr 14 07:42:54 monitoring.slainte.at dhcpd[22045]: Sending on LPF/eth0/dc:a6:32:d3:aa:3e/192.168.0.0/24
Apr 14 07:42:54 monitoring.slainte.at sh[22045]: Listening on LPF/eth0/dc:a6:32:d3:aa:3e/192.168.0.0/24
Apr 14 07:42:54 monitoring.slainte.at sh[22045]: Sending on LPF/eth0/dc:a6:32:d3:aa:3e/192.168.0.0/24
Apr 14 07:42:54 monitoring.slainte.at sh[22045]: Sending on Socket/fallback/fallback-net
Apr 14 07:42:54 monitoring.slainte.at dhcpd[22045]: Sending on Socket/fallback/fallback-net
Apr 14 07:42:54 monitoring.slainte.at dhcpd[22045]: Server starting service.
Bisher erreicht:
Speicherkarten installiert
Bootfähige Nodes
Reservierung der MAC-Adressen am DHCP-Server
Lokale Konfiguration
Diese Konfiguration muß händisch auf jedem Node gemacht werden. Dazu loggt man sich auf jedem Node ein. Die Beispiele hier beziehen sich auf den pc1. Der Standard User für die erstmalige Anmeldung ist ubuntu mit dem Passwort ubuntu.
alfred@bureau:~$ ssh ubuntu@pc1
The authenticity of host 'pc1 (192.168.0.201)' can't be established.
ECDSA key fingerprint is SHA256:3AtqqBeZQjedxbb3f1c2Amw2VECVS3R3IF47c3xUZSo.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'pc1,192.168.0.201' (ECDSA) to the list of known hosts.
ubuntu@pc1's password:
You are required to change your password immediately (administrator enforced)
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-1033-raspi aarch64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Wed Apr 14 09:12:44 UTC 2021
System load: 0.25 Temperature: 37.0 C
Usage of /: 4.2% of 58.26GB Processes: 132
Memory usage: 3% Users logged in: 0
Swap usage: 0% IPv4 address for eth0: 192.168.0.201
* Introducing self-healing high availability clusters in