Ein Plädoyer für den Tagtraum

Wer kennt diese Situation nicht: In einem langweiligen Meeting schweifen die Gedanken ab und man plant innerlich das Abendessen, richtet sich sein Wohnzimmer ein oder den nächsten Urlaub. Man ist in einem Tagtraum versunken.

Meistens wird man dann kalt erwischt, fühlt sich erstmal angeschossen und muss sich mühsam wieder auf die Außenwelt konzentrieren und seinen Fokus neu ausrichten. Generell wird diese Art des Abschweifens als Ineffektivität angesehen und man wird entsprechend Missmut bei seinen Kollegen ernten. Wenn man sich mit diesem Phänomen beschäftigt stellt man fest, dass man seine – eventuell – negative Einstellung überdenken sollte!

Und Warum?

Die Theorie dahinter ist die Pflege zweier Systeme. Einmal die Außenwelt, die permanent um uns herum stattfindet und unsere aktive Aufmerksamkeit fordert. Und unsere Innenansicht, mit der wir unser Privatleben planen, Ideen entwickeln oder im Allgemeinen mit Eindrücken experimentieren, welche hängen geblieben sind.

Was passiert?

Man spricht von einer traceartigen Abwesenheit oder leichten Bewusstseinserweiterungen. Knapp die Hälfte unserer Wachzeit verbringen wir in einer solchen Trance und das Gehirn verbraucht dabei 20 mal mehr Energie, als bei der Verarbeitung von bewussten Prozessen. Der Übergang ist fließend und man gleitet, ohne es zu merken, aus der kognitiven Aufmerksamkeit und entsprechende Reize aus der Umwelt werden gedämpft und die Aufmerksamkeit wird auf diese Weise “entfernt”. Innerhalb des Gehirns wird jetzt das Default mode network (DMN) aktiviert. Eine Region die für das “Nichtstun” verantwortlich ist. Nach spätestens 15 Sekunden ist dann wieder alles vorbei und unser „Kopf“ oszilliert zurück in die Gegenwart.

Ein gutes Beispiel hierfür ist Autofahren. Man fährt morgens in die Arbeit und kann sich am Ziel nicht mehr an die Gegebenheiten der Strecke erinnern. “War die letzte Ampel jetzt Rot oder Grün?” – Keine Ahnung.

Was ist daran gut?

Neben der inneren Planung können besonders kreative Menschen das “abdriften” kognitiv beeinflussen: Man begibt sich aktiv in eine bestimmte gedankliche Situation und entfernt dann die Aufmerksamkeit. Die größten wissenschaftlichen Errungenschaften kamen auf diese Weise zustande oder einige der besten klassischen Stücke der Romantik sind dabei entstanden. Man weiß von Albert Einstein zum Beispiel, dass er oft und gerne spazieren ging und dieses Setting als Inkubator nutzte (zudem trug er gerne keine Socken in den Schuhen ;-)). So fiel ihm vermutlich die Relativitätstheorie auf ein mal wie Schuppen von den Augen. Und Johannes Brahms hat bei solchen Spaziergängen oftmals vorbeigehende Personen erst gar nicht erkannt oder wahrgenommen und dudelte in seinem Kopf vermutlich fröhlich weiter.

Und jetzt?

Wir sollten einfach nachsichtiger mit träumenden Kollegen sein. Wer weiß, welche Ideen sie gerade entwickeln oder ob sie gleich mit der perfekten Lösung eines Problems ins Büro schießen!

Tagträume sind unser Lebensnarrativ. Unser innerer Kern birgt oftmals viel mehr Weisheit als wir selbst glauben!

Marius Hein

Autor: Marius Hein

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

GUI REST clients

Mittlerweile sind HTTP REST APIs aus der täglichen Arbeit in der IT nicht mehr wegzudenken. Noch vor Jahren durchaus als exotisch zu bezeichnen, ohne Dokumentation und chaotisch verwoben, entstehen immer mehr gute APIs die sich an entsprechende Standards halten und sinnvolle Funktion bieten. Angefangen von atmosphärischen Zufallszahlen, randomisierten Bildern  oder Kartendecks ist mittlerweile alles aus Microservices zu holen – man denke nur an die 125726 Google APIs. Übrigens bieten wir mit Icinga 2 oder Icinga Web 2 standardisierte APIs für die Monitoring-Umgebung an und ein nicht geringer Anteil unserer Routine besteht mit der Arbeit dieser APIs.

Um effektiv mit den Schnittstellen arbeiten zu können muss man sich diese etwas genauer anschauen. Am besten geht das mit entsprechenden Tools und einer Handvoll guter Features, z.B.:

  • Repetitive Anfragen
  • Absteigende URLs
  • Header, Parameter, Request Body, Cookies
  • Authentifizierung
  • Organisation (Sammlungen, Request-Historie)
  • Binary Daten
  • Pretty Print der Rückgaben

Ich bin mittlerweile unter macOS bei zwei Tools hängengeblieben die gerne einmal zeigen möchte: CocoaRestClient und Postman. Beide Tools besitzen oben genannte Features. Postman gibt es sogar als Chrome App. Bei Verwendung von Chrome und debugging von JavaScript kommt also gleich alles aus einem Guss ;-). Postman ist insgesamt mehr Feature-Complete und die native Cocoa macOS App unglaublich fix. Und natürlich hat auch Curl seine Berechtigung – wenn auch kein GUI!

Es folgt noch eine kleine Photostrecke. Dann ist die eigene Meinung gefragt…

 

Marius Hein

Autor: Marius Hein

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

Galera Cluster – Tips für die Praxis

Galera Cluster für MySQL ist mal ein “einfacher” Cluster für MySQL und seit MariaDB Version 10.1 standardmäßig mit an Board. Dadurch erhält man mit ein paar Zeilen Konfiguration einen produktionsfähigen Cluster, um den man sich wenig kümmern muss. In der Praxis allerdings, bieten sich genügend Fallstricke, die es zu meistern gilt.

Die Terminologie

  • Joiner: Neues Member welches dem Cluster hinzugefügt wird
  • Donor: Meldet sich ein Joiner stellt der Cluster einen Lieferanten bereit welcher die Daten auf den Joiner überträgt
  • SST: Snapshot State Transfer – Ist Lücke zum aktuellen Stand zu groß, werden der komplette Stand übertragen
  • IST: Incremental State Transfer – Im laufenden Betrieb werden Änderungen direkt übertragen. Die Änderung ist am Cluster erst verfügbar wenn alle Mitglieder diesen Stand empfangen haben

Tipps

1. SST Vermeiden

Einen kompletten Stand der Daten zu übertragen ist keine gute Idee. Ein Cluster, welcher 1 TB Nutzdaten verwaltet, ist auch nach drei Tagen nicht fertig. Dadurch können stabile Member ihre Integrität verlieren und der Cluster wird instabil. Hat man eine solche Situation erreicht empfiehlt es sich, den kompletten Cluster manuell zu syncen (MySQL Daten löschen und per rsync kopieren – Aber bitte keine Binlogs!).

2. SST Method

Galera bietet verschiedene Methoden um einen SST durchzuführen. Laut Statistik ist SSH die schnellste Methode – D’Accord – Aber der dadurch entstehende Donor ist für Anfragen gelockt und fällt aus dem Cluster. Dadurch wären wir bei Punkt 1 angelangt. Der beste trade-off ist hier xtrabackup-v2. Dadurch wird ein Donor am wenigsten blockiert. Bitte dabei den Benutzer zur MySQL Authentifizierung nicht vergessen – Sonst geht gar nichts!

3. SST Konfiguration

SST und das ausführen auf dem Joiner kann maßgeblich verbessert werden mit folgender MySQL Konfiguration:

[sst]
inno-apply-opts="--use-memory=20G"
compressor="pigz"
decompressor="pigz -d"

Dadurch geben wir dem innobackupex Script, welches auf dem Joiner ausgeführt mehr Speicher um Daten aus den Logs (–apply-log) auszuführen. Weiterhin parallelisieren wir den Vorgang um Daten auf dem Donor zu komprimieren und – guess what – auf dem Joiner zu dekomprimieren.

Um die Transaktionen weiter zu parallelisieren erhöhen wir die Einstellung wsrep_slave_threads auf eine dem System angepasste Anzahl (Anzahl Cores und Auslastung).

4. Dedizierten Donor

Bei großen Datenmengen empfiehlt es sich einen eigenständigen Donor bereitzustellen welcher keine Anfragen entgegen nimmt.

[mysqld]
 wsrep_sst_donor = node-donor

Eventuell sollte man auch Queries mit der Einstellung wsrep_sst_donor_rejects_queries verbieten

5. Locking Queries

Galera ist maximal transparent für Applikationen. Einzig, LOCKING wird nicht akzeptiert. Falls es von der Applikation benötigt wird könnte man mit der Einstellung wsrep_convert_LOCK_to_trx die Queries in Transaktionen kapseln.

6. Provider Cache

Standardmäßig auf 128M eingestellt, enthält dieser Ringpuffer die zu Verfügung stehen write-sets für einen IST. Die Größe sollte man entsprechend hoch wählen. So kann auch bei größeren Lücken immer noch ein IST durchgeführt werden:

[mysqld]
wsrep_provider_options="gcache.size=1G"

Bei entsprechend Arbeitsspeicher oder SSD Storage ist es durchaus eine gute Idee die Datei auf das schnellste Storage zu legen oder eine Lastaufteilung vorzunehmen:

[mysqld]
wsrep_provider_options="gcache.size = 8G; gcache.name = /var/cache/ssd/galera.cache"
7. HAProxy verwenden

Der stabilste Cluster bringt einem gar nichts wenn man nur einen Knoten abfragt. Eine der Stärken von Galera ist es, von allen Knoten zu lesen. Hier sollte man sich Gedanken zur Aufteilung machen:

  • Die schnellsten Knoten zum lesen und in den HAProxy
  • Donor exkludieren
  • Backup members bereitstellen (hot-standby)

Eine Konfiguration können z.B. folgendermaßen aussehen:

backend mysql_pool   mode tcp
  balance roundrobin   option mysql-check user haproxy   option tcpka # keep-alive!   server galera-donor1   192.168.17.20:3306 check inter 12000 disabled   server galera-standby1 192.168.17.21:3306 check inter 12000 disabled   server galera-node3    192.168.17.22:3306 check inter 12000
  server galera-node4    192.168.17.23:3306 check inter 12000
  server galera-node5    192.168.17.24:3306 check inter 12000

Dadurch erhalten wir einen Donor, einen hot-standby und drei read-heads. Durch die HAProxy API kann man das auch je nach Zustand des Cluster zu oder abschalten. Auch wäre eine standortübergreifende Verteilung möglich. Man stelle sich verschiedene Pools in verschiedenen Ländern vor. Je nach Ursprung und Applikation können dann die Anfragen zu den schnellsten read-heads weitergeleitet werden. Dann sollte man sich aber überlegen, z.B.  wsrep_dirty_reads an den Standorten zu verwenden.

8. Bin Logs

Ein richtiger Klassiker der Cluster Pitfalls, die Binary Logs von MySQL. Man würde sie für Galera nicht unbedingt benötigen aber sie bieten Sicherheit beim Crash und helfen einen SST im Falle zu vermeiden. In großen Umgebungen muss man folgendes bedenken:

  • Speicherplatz begrenzen
  • Vorhaltezeit verkürzen
  • An das verfügbare Storage anpassen

Ansonsten dauert ein FLUSH LOGS gerne auch mal 3 Tage und blockiert einen unseren Knoten – Beim Donor besonders schlecht!

Fazit

Für mich ein fantastisches Cluster System für MySQL! Es gibt noch viele gute Tips da draussen und noch viel mehr Möglichkeiten (und auch schmerzen) mit InnoDB / MySQL Konfiguration. Es funktioniert auch leider beim Galera Cluster nichts ohne vorher die eigene Rübe einzuschalten 😉

Links

 

Marius Hein

Autor: Marius Hein

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

Mac Firewall – Little Snitch

littlesnitch_320Die Firewall im Mac ist jetzt nicht unbedingt die bequemste. Die Oberfläche lässt einem wenig Spielraum, seine Sicherheitsbedürfnisse anzupassen – z.B. Verbindungen von innen heraus zu beschränken.

Manchmal möchte man allerdings bestimmte Aktionen von Programmen unterbinden oder genau wissen was gerade auf der Leitung brennt – und warum. Wireshark wäre eine Möglichkeit. Allerdings fehlt mir hier der Bezug zur Applikation und bei großen Datenmengen wird es dann etwas unübersichtlich.

Seit Ende letzten Jahres Bereits seit 2003 (danke Igor ;-)) gibt es für den Mac die Firewall Little Snitch. Diese erlaubt es Verbindungen von innen heraus zu beschränken und zu überwachen – Und das mit beachtlicher Granularität. Little Snitch unterstützt verschiedene Modi. Alles zu verbieten, zu erlauben oder durch ein Regelwerk zu begrenzen. Letzterer Modus lässt sich eine jede Verbindung durch einen Popup bestätigen. Und hier liegt auch etwas der Hund begraben. Nämlich dass man nicht durch Faulheit eine jede Verbindung blind bestätigt. Ich für meinen Teil habe mittlerweile genau aus diesem Grund alle Verbindungen erlaubt und verwende die Firewall zum Debuggen von Programmen, was diese an Traffic durch die Welt posaunen.

Zu erwähnen bleibt noch, dass der Regeleditor sehr gut durchdacht ist. So lassen sich Regeln temporär hinzufügen und Regeln in Ihrer Anwendung breiter oder enger ziehen (in dem man Portbereiche, Protokolle oder Subdomains verändert) und wird informiert wenn man überschneidende Regeln oder unsinnige Regeln konfiguriert hat – Sogar mit automatischen Lösungsvorschlag.

Die Lizenz ist leider proprietär. Jedoch ist die Software durch einen offen gestalteten Demomodus gut zum Debuggen zu verwenden.

Mein Fazit: Tolles Tool, stellt gesprächige Programme ruhig und ich behalte den Überblick!

 

Marius Hein

Autor: Marius Hein

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

CPAN Minus

CpanPerl ist ein etablierter Kanndidat wenn es darum geht, mit kleiner Software Probleme zu lösen. Zum Beispiel ist die nahtlose Integration von Textverarbeitung in Kombination mit regulären Ausdrücken ein unschlagbares Feature.

Perl erweitert seine Funktionalität mit Modulen welche im Comprehensive Perl Archive Network zu Verfügung gestellt werden, kurz CPAN genannt. Unglücklicherweise ist die Nutzung von CPAN immer mit schmerzhaften Erfahrungen verbunden. Builden, Testen, fehlende Abhängigkeiten und megabyteweise Ausgaben führen oft zu einem Fehlschlag und rütteln an der Akzeptanz des Tools.

Seit einiger Zeit wird CPAN Minus immer populärer. Ein Grund ist vermutlich die einfache Arbeitsweise. So kann man ohne Konfiguration und Kommandozeilenschlachten, Module und deren Abhängigkeiten installieren. Na bitte, so geht es also auch.

Beispiele:

Installation unter Ubuntu / Debian:
$ apt-get install build-essential perl # Abhängigkeiten
$ apt-get install cpanminus

Alternativ kann das Skript auch einfach mit Curl oder Wget runter laden:
$ curl -L http://cpanmin.us > cpanm
$ chmod +x cpanm

Die Installation von Modulen kann jetzt auf zwei Arten erfolgen. Entweder installiert man ein einzelnes Modul:
$ sudo cpanm --installdeps Date::Holidays

Oder eine Gruppe von Modulen wird in einer Datei bereitgestellt:
$ head -n3 cpanfile
# Core
requires 'Apache::Session', '1.53';
requires 'CGI', '3.38';
$ cpanm --installdeps .

Alles übrige wird im Hintergrund erledigt.

Nach Jahren der Selbstkasteiung ist das mal ein gutes Tool!

Marius Hein

Autor: Marius Hein

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.