Neues in der Kategorie MariaDB

Volles Rohr 2016

Moinsen bin 2016 noch sehr sehr aktiv.

Erst mal fuer alle, welche es verpasst haben. In der aktuellen iX (2016/16) habe ich einen Artikel mitverbrochen. Ich habe ueber Docker Swarm Mode und Kubernetes schreiben duerfen.

Zudem gibt es wieder ungesund viele Vortraege:

Ahoi,
Am Ende des Jahres stehen die IT-Tage 2016 an.
Ich halte da zwei Vorträge.

Einer wird wohl so ein Meta-Vortrag. Mal sehen ob ich es schaffe ohne Terminal einen Vortrag zu halten :)
Der zweite ist über Docker und MySQL/MariaDB. Hier gibt es sicher ein paar HandsOn :)

Viel Spaß
Erkan :)

Ein aktuelles systemd (z.B. das in Ubuntu 16.04) instrumentiert via TasksMax mittlerweile die pid Cgroups. Quasi ein ulimit -u via Cgroups.

Folgender Commit ändert die Beschränkt die Prozesse/Thread aller Services.

commit 9ded9cd14cc03c67291b10a5c42ce5094ba0912f
Author: Lennart Poettering <lennart@poettering.net>
Date:   Fri Nov 13 19:28:32 2015 +0100

    core: enable TasksMax= for all services by default, and set it to 512

    Also, enable TasksAccounting= for all services by default, too.

    See:

    http://lists.freedesktop.org/archives/systemd-devel/2015-November/035006.html

Damit haben wir leider:

$ systemctl show -p TasksMax docker
TasksMax=512

$ systemctl show -p TasksMax mysql
TasksMax=512

Damit stoßen schon bei mittelmäßiger Belastung an die Grenzen /o\ Also nicht wundern, wenn nach einem Upgarde auf z.B. Ubuntu 16.04 nichts mehr skaliert :)

Folgendes stellt das vorherige Verhalten wieder her.

TasksMax=infinity

Dieser darf jetzt gerne angepasst werden;)

Viel Spaß

Erkan \o/

Update 1: Zumindest in Debian/Ubuntu wird in einem Update wieder TaskMax=infinity sein

Update 2: Ab Version 230 gibt es einen neuen Default: KillUserProcesses=yes. Einfach nachlesen und heulen :)

Galera und Docker Network

tl;dr Docker Network ermöglicht zwischen Containern bidirektionale (und ungenattete) Kommunikation über hosts hinweg. Damit sind Galera-Setups ein Kinderspiel.

Einen Galera-Docker-Cluster über mehrer Hosts zu betreiben ist gelinde gesagt mühsam. Wer eine Idee davon erhalten will kann hier nachlesen.

Mit Docker-Network (ab 1.9) ist dies erfreulicher Weise Geschichte. Docker-Network ermöglicht es Container über mehrere Hosts hinweg in ein eigenes Netz zu stecken. Dazu ist noch ein einfaches (an DNS erinnerndes) Discovery über den gesetzten Containernamen möglich.

Dies vereinfacht Galera-Deployments ungemein, wie folgendes Beispiel zeigen soll. Es dient selbstredend nicht für Produktion und nicht nur weil das mein Image ist:) Wir gehen hier von drei Rechnern mit Docker-Network aus. Bei Bedarf kann ich was zum Setup schreiben.

  • Swarm1 IP=172.17.152.11
  • Swarm2 IP=172.17.152.12
  • Swarm3 IP=172.17.152.13

Noch existiert kein Netzwerk mit dem Namen galera:

$ DOCKER_HOST=172.17.152.11:2375 docker network ls --filter "name=galera"
NETWORK ID          NAME                DRIVER

Das Netzwerk wird schnell erstellt:

$ DOCKER_HOST=172.17.152.11:2375 docker network create -d overlay galera 
b0cadfa914206c212cce0de611d500620cd07bcae289841f7dc03c26d19b6e91


$ DOCKER_HOST=172.17.152.11:2375 docker network ls --filter "name=galera"
NETWORK ID          NAME                DRIVER
b0cadfa91420        galera              overlay

Auch die beiden anderen Rechner kennen nun das Netz:

$ DOCKER_HOST=172.17.152.12:2375 docker network ls --filter "name=galera"
NETWORK ID          NAME                DRIVER
b0cadfa91420        galera              overlay             

$ DOCKER_HOST=172.17.152.13:2375 docker network ls --filter "name=galera"
NETWORK ID          NAME                DRIVER
b0cadfa91420        galera              overlay

Nun Starten wir einfach ein Galera Cluster auf den drei Rechnern. Entscheidend für den Discovery sind die Containernamen. Zu achten ist auf die --net Option.

$ DOCKER_HOST=172.17.152.11:2375 docker run -d --name galera1 \
  --net galera erkules/galera:basic --wsrep-cluster-address=gcomm://
d3410d308171df5a3ef2da3b37a7d11ea6479dc8550eea24447d488cbf490a0d

$ DOCKER_HOST=172.17.152.12:2375 docker run -d --name galera2 \
  --net galera  erkules/galera:basic --wsrep-cluster-address=gcomm://galera1
24d4a2dfe3e2ba6914c83c92f814116ff72d5de8daba8304fe89ed3661f57270

$ DOCKER_HOST=172.17.152.13:2375 docker run -d --name galera3 \
 --net galera  erkules/galera:basic --wsrep-cluster-address=gcomm://galera1
751f4f071359495a28e31bc996b62c2042283ee08df0194b7871402e2f851e06

Schauen wir mal ob wir einen Cluster haben:

$ DOCKER_HOST=172.17.152.13:2375 docker exec -ti galera3 \
  mysql -e 'show status like "wsrep_cluster_size"' 
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

Verglichen mit dem obigen Link ist das sehr simple. Docker Network vereinfacht auch klassische MySQL Replikationsdeplyments. Gerade wenn dazu --links verwendet wurde. Schon allein weil --links deprecated ist;) Im nächsten Blogpost machen wir das mit Docker Swarm.

Viel Spaß :)

Erkan

Galera und Docker Network

tl;dr Docker Network ermöglicht zwischen Containern bidirektionale (und ungenattete) Kommunikation über hosts hinweg. Damit sind Galera-Setups ein Kinderspiel.

Einen Galera-Docker-Cluster über mehrer Hosts zu betreiben ist gelinde gesagt mühsam. Wer eine Idee davon erhalten will kann hier nachlesen.

Mit Docker-Network (ab 1.9) ist dies erfreulicher Weise Geschichte. Docker-Network ermöglicht es Container über mehrere Hosts hinweg in ein eigenes Netz zu stecken. Dazu ist noch ein einfaches (an DNS erinnerndes) Discovery über den gesetzten Containernamen möglich.

Dies vereinfacht Galera-Deployments ungemein, wie folgendes Beispiel zeigen soll. Es dient selbstredend nicht für Produktion und nicht nur weil das mein Image ist:) Wir gehen hier von drei Rechnern mit Docker-Network aus. Bei Bedarf kann ich was zum Setup schreiben.

  • Swarm1 IP=172.17.152.11
  • Swarm2 IP=172.17.152.12
  • Swarm3 IP=172.17.152.13

Noch existiert kein Netzwerk mit dem Namen galera:

$ DOCKER_HOST=172.17.152.11:2375 docker network ls --filter "name=galera"
NETWORK ID          NAME                DRIVER

Das Netzwerk wird schnell erstellt:

$ DOCKER_HOST=172.17.152.11:2375 docker network create -d overlay galera 
b0cadfa914206c212cce0de611d500620cd07bcae289841f7dc03c26d19b6e91


$ DOCKER_HOST=172.17.152.11:2375 docker network ls --filter "name=galera"
NETWORK ID          NAME                DRIVER
b0cadfa91420        galera              overlay

Auch die beiden anderen Rechner kennen nun das Netz:

$ DOCKER_HOST=172.17.152.12:2375 docker network ls --filter "name=galera"
NETWORK ID          NAME                DRIVER
b0cadfa91420        galera              overlay             

$ DOCKER_HOST=172.17.152.13:2375 docker network ls --filter "name=galera"
NETWORK ID          NAME                DRIVER
b0cadfa91420        galera              overlay

Nun Starten wir einfach ein Galera Cluster auf den drei Rechnern. Entscheidend für den Discovery sind die Containernamen. Zu achten ist auf die --net Option.

$ DOCKER_HOST=172.17.152.11:2375 docker run -d --name galera1 \
  --net galera erkules/galera:basic --wsrep-cluster-address=gcomm://
d3410d308171df5a3ef2da3b37a7d11ea6479dc8550eea24447d488cbf490a0d

$ DOCKER_HOST=172.17.152.12:2375 docker run -d --name galera2 \
  --net galera  erkules/galera:basic --wsrep-cluster-address=gcomm://galera1
24d4a2dfe3e2ba6914c83c92f814116ff72d5de8daba8304fe89ed3661f57270

$ DOCKER_HOST=172.17.152.13:2375 docker run -d --name galera3 \
 --net galera  erkules/galera:basic --wsrep-cluster-address=gcomm://galera1
751f4f071359495a28e31bc996b62c2042283ee08df0194b7871402e2f851e06

Schauen wir mal ob wir einen Cluster haben:

$ DOCKER_HOST=172.17.152.13:2375 docker exec -ti galera3 \
  mysql -e 'show status like "wsrep_cluster_size"' 
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

Verglichen mit dem obigen Link ist das sehr simple. Docker Network vereinfacht auch klassische MySQL Replikationsdeplyments. Gerade wenn dazu --links verwendet wurde. Schon allein weil --links deprecated ist;) Im nächsten Blogpost machen wir das mit Docker Swarm.

Viel Spaß :)

Erkan

Moin, Ich habe drei Proposals für die Percona Live 2016 eingereicht. Habe zwar keine fette Firma hinter mir, aber wer weiß :)
Zumindest weiß ich wovon ich rede *brustklopf* 

Ansible ist gegenwärtig mein liebstes Configmanagementtool. Erschreckend wie simple im Vergleich zu i.e. Puppet/Chef da was hochgezogen werden kann. 

Da würden wir uns ein Tutorial über Docker und MySQL/Galera geben.

Docker kommt mittlerweile mit sogenannten "Batteries". Damit ist schon auch Infrastruktur möglich. Das schauen wir uns in diesem Talk an.


Da voten hilft. Könnt ihr gerne voten :D

Viel Spaß
Erkan

Sack zu 2015

| Keine Kommentare | Keine TrackBacks
Moin,
2015 geht zu Ende und hier the final Update. (Erste Termine für 2016 stehen schon:)

Schulungen (Finden statt und Anmeldungen sind imho noch möglich):
Vorträge:
  • 08.11. über Galera auf der OpenRheinRuhr
  • 10.11-11.11 1x Docker und 1x systemd-nspawn auf der CommitterConf
  • 17.11. HA-Architekturen für MySQL auf der DOAG
  • 25.11. Hands-On etcd auf der DevopsCon
Dann sag ich schon mal
Ein frohes NEUES :)
Erkan

DOAG und DevOpsCon

| Keine Kommentare | Keine TrackBacks
Ahoi,

Es gibt zwei Vorträge von mia:

Ahoi,
in der aktuellen iX 6/2016 ist ein Artikel von/mit mir.
Laut Titel sogar MariaDB vs. Postgres.
Das ist mal ein nicht zu technischer Artikel. Also wer noch ein paar Buzzwords braucht :)

Viel Spaß
Erkan
 

Ich hatte das Vergnügen und die Ehre für Codership (Entwickler vom Galera Cluster) Blogposts
zu Galera und Docker schreiben zu dürfen.
Hier ist Teil 1
Ist imho ein kleines getting started, aber es folgt ja noch was :)

Viel Spaß
Erkan