Kurztipp: Pacemaker und Ubuntu

Da ich diverse Nodes in letzter Zeit geupdatet habe, teile ich meine Erkenntnis für die eine Person.

14.04 mit 16.04 ist nicht kompatibel. Die Nodes sehen sich nicht.

16.04 mit 18.04 ist kompatibel. Ressourcen können hin und her migriert werden.

Bei 18.04 muss man noch die crm shell „crmsh“ nachinstallieren. Ansonsten ist das Pacemaker Update aber problemlos.

Kurztipp: Pacemaker nach Update auf Ubuntu 16.04

Da sich bei Ubuntu 16.04 auch die Namen der NICs ändern (z.B. von eth0 zu ens192) muss man auch die Konfiguration der Ressourcen anpassen. Das kann man sicherlich innerhalb der Konfiguration via crm anpassen, aber löschen der Ressource und neu anlegen geht natürlich auch. Was dann in etwa so ausieht:

crm resource stop FAILOVER-ADDR
crm configure delete FAILOVER-ADDR
crm configure primitive FAILOVER-ADDR ocf:heartbeat:IPaddr2 params ip="1.2.3.4" nic="ens192" op monitor interval="10s" meta is-managed="true" 

 

vmmemctl unter Ubuntu

Mit den Vmware-tools und Ubuntu 12.04 kann es unter ungeklärten Umständen ein Problem geben. Das vmmemctl Modul wird nicht richtig installiert bzw. kompiliert. Beim Kompilieren der Vmware-tools  nach einem Kernel Update erscheint die Meldung:

The module vmmemctl has already been installed on this system by another installer or package and will not be modified by this installer. Use the flag –clobber-kernel-modules=vmmemctl to override.

Das führt dazu das der Kernel Thread vmmemctl nicht läuft,  weil das Modul vmmemctl fehlt. Das Modul dient dazu nicht mehr benötigten Speicher wieder freizugeben um ihn anderen VMs zur Verfügung zu stellen. Zum testen einfach mal auf der VM

$ ps aux|grep vmmemctl

eingeben. Abhilfe schafft ein

vmware-config-tools.pl –clobber-kernel-modules=vmmemctl,vsock,vmxnet3,vmci,pvscsi

Die anderen Module mit rein zunehmen schadet nicht. Die tauchten bei mir auch als Meldung beim kompilieren auf. Danach sollte  der Prozess angezeigt werden.

$ ps aux|grep vmmemctl
root     30933  0.0  0.0      0     0 ?        S    13:57   0:00 [vmmemctl]

Hat man eine größere ESX Struktur kann ein Fehlen des Moduls durchaus einen spürbaren Einfluss auf die benötigte Hardware haben ;-).

Mehr Informationen dazu  findet man z. B. unter http://yuridejager.wordpress.com/2012/02/27/enable-the-vmware-balloon-driver-vmmemctl-to-prevent-swapping-in-an-imported-linux-vm/

p.s. bei den open-vm-tools gibt es kein vmmemctl Modul.

Livestream der ARD und Ubuntu 12.04

Die ARD hat ja nun bekannter weise einen Livestream bzw. http://m.daserste.de/#live. Leider läuft dieser Livestream bei mir  nicht unter Ubuntu 12.04 (32/64bit ) mit Firefox und der Flashplayer Version 11.2.202.258. Mit Chrome und 11.5.31.5 als Version läuft es problemlos. Falls ihr auch betroffen seid, mailt am besten an daserstemediathek@DasErste.de und macht auf das Problem aufmerksam, je mehr desto besser. Informationen zum Problem findet man auch bei linuxundich, dort wird auch gezeigt wie man mplayer & co zum abspielen nutzen kann. Natürlich wird nicht alles live gestreamt, das wäre auch zu einfach.

Galera Cluster mit Ubuntu 12.04 64bit und MySQL 5.5 – Teil 2 Loadbalancer/Proxy

Nun da Galera mittlerweile auf vier Nodes läuft, wäre ein Loadbalancer eine gute Sache. HAProxy fand ich etwas zu mächtig für mein Anliegen, obwohl er  von vielen Benutzern als Option präferiert wird . Getestet habe ich mysql-proxy direkt von Mysql und glbd von Galera. Beides scheint größtenteils problemlos zu laufen. Bei einfachen Benchmarks, konnte ich bisher keine gravierenden Unterschiede erkennen, dazu aber mehr in Teil 4. Mysql-proxy ist seit längerer Zeit im Alphastatus und glbd liegt in der Version 0.7.5 vor. Also beides ausbaufähig ;-). Mein Favorit ist glbd, weil er genau das tut, was er soll und nicht unnötig viele Einstellung benötigt oder bietet. Die Syntax ist recht einfach:

glbd --daemon --threads 8 --control 127.0.0.1:4041 123.123.123:4040 node1:3306:3 node2:3306:3 node3:3306:3 node4:3306:1 

Ein –help zeigt alle Optionen:

glbd --help
Usage:
glbd [OPTIONS] LISTEN_ADDRESS [DESTINATION_LIST]
OPTIONS:
--help                  this help message.
--daemon                run as a daemon.
--fifo <fifo name>      name of the FIFO file for control.
--control [HOST:]PORT   listen for control requests on this address.
--threads N             number of working threads (connection pools).
--source_tracking       turn on source tracking: route connections from one
source to the same destination.
--verbose               turn on verbose reporting.
--version               print program version.
LISTEN_ADDRESS:
[IP:]PORT               where to listen for incoming TCP connections.
DESTINATION_LIST:
[H1[:P1[:W1]]] [H2[:P2[:W2]]]...  - a space-separated list of destinations
in the form address:port:weight.

Die Optionen nach Bedarf anpassen. Meiner Meinung nach empfiehlt es ich das weight eines nodes relativ niedrig anzusetzen. Dieser kann dann primär für Backups oder als Donor  fuer zusätzliche Nodes dienen, da er während des Syncs mit einem neuen Node im readonly mode ist. Statusabfragen von glbd macht man z.B. mit:

# echo "getinfo" | nc -q 1 127.0.0.1 4041
Router:
----------------------------------------------------
Address       :   weight   usage   conns
node1:3306  :    3.000   0.000     0
node2:3306  :    3.000   0.000     0
node3:3306  :    3.000   0.000     0
node4:3306  :    1.000   0.000     0
----------------------------------------------------
Destinations: 4, total connections: 0

Weiter Informationen finden sich im Readme.  Sehr gute Informationen und eine deutlich detaillierte Anleitung zu glbd findet man unter fromdual.com/mysql-and-galera-load-balancer. Dort ist auch ein Skript hinterlegt um glbd zu administrieren. Bricht ein Node weg, leitet glbd die Anfrage transparent an einen verfügbaren Node weiter. Leider ist die Dokumentation von glbd etwas dürftig, daher werden sich viele Verhaltensweisen erst im Laufe von diversen Tests zeigen. Probleme können eventuell auftauchen wenn man mit Pacemaker/Corosync arbeitet, da glbd sich (zu Recht) weigert,  an ein nicht existierendes Interface gebunden zu werden (Stichwort „crm colocation“), dazu mehr in Teil 3.

Mysql-Proxy ist als Paket bei Ubuntu 12.04 dabei, zwar „nur“ die 0.8.1, dafür  genießt man die Vorteile der Paketverwaltung. Konfiguriert wird mysql-proxy in der

/etc/default/mysql-proxy:

ENABLED="true"
OPTIONS="--proxy-skip-profiling --proxy-address=123.123.123.123:4040 --proxy-backend-addresses=node1:3306 --proxy-backend-addresses=node2:3306 --proxy-backend-addresses=node3:3306 --proxy-backend-addresses=node4:3306 --admin-username=superadmin --admin-password=imnotshyijustdontlikeu --admin-lua-script=/usr/lib/mysql-proxy/lua/admin.lua"

Damit läuft  erst mal die Proxyfunktion. Mysql-proxy kann deutlich mehr als nur  Proxy sein. So kann er zum Beispiel die Mysqlanfragen nach read-write selektieren und mit der --proxy-read-only-backend-addresses Option auf dedizierte Readonly „Slaves“ leiten. Die Dokumentation ist sehr gut, dank auch der  MySQL Integration. MySQL Anfragen können mit Hilfe von Lua Skripten direkt manipuliert  werden. Zum lesen nochmal zwei Links zu mysql-proxy, hier und hier. Der Beitrag von mysqlperformanceblog.com  ist von Juni 2009, daher wurde noch die 0.7.1 getestet. Zu eigenen Benchmarks komme ich in Teil 4.

Ob nun glbd, mysql-proxy, pen oder haproxy, hängt vom Einsatzzweck und System ab. Sicherlich gibt es noch etliche andere Lösungen für ein Mysql Proxy/Loadbalancer Szenarien. Schaut man sich kommerzielle Anbieter an, wird man sicherlich hinter all den Webinterfaces, Firmenlogos und Gedöhns, häufig ein Programm aus der Open Source Welt finden, was dort still und unscheinbar seinen Dienst verrichtet. Teil 3 handelt von Pacemaker und IP Failover und Teil 4 schließlich von Benchmaks zu unterschiedlichen Konfigurationen. Ein wesentlicher Faktor beim Einrichten einer solchen Umgebungen ist natürlich die Zeit, die man dafür zur Verfügung hat. Sollte ich komplett auf dem Holzweg sein, sind Kommentare natürlich willkommen, ansonsten natürlich auch.

Link zu Teil 1:

http://exdc.net/2012/08/06/galera-cluster-mit-ubuntu-12-04-64bit-und-mysql-5-5-teil-1/

Galera Cluster mit Ubuntu 12.04 64bit und MySQL 5.5 – Teil 1

Warum  Ubuntu? Weil ich mal etwas einigermaßen aktuelles Testen wollte ;-). Tatsächlich lief mein erster Test mit Galera und MySQL 5.1 unter drei Debian Nodes ohne großen Aufwand. Ich beschränke mich auf die Installation des ersten Nodes, da die Installation eines weiteren Nodes nur minimal abweicht. Zum Testen sollte man 3-4 Maschinen zur Verfügung haben.

Einige Daten über Galera von der Entwicklerseite:

MySQL/Galera is synchronous multi-master cluster for MySQL/InnoDB database, having features like:

  • Synchronous replication
  • Active-active multi-master topology
  • Read and write to any cluster node
  • Automatic membership control, failed nodes drop from the cluster
  • Automatic node joining
  • True parallel replication, on row level
  • Direct client connections, native MySQL look & feel

Benefits

These features yield un-seen benefits for a DBMS clustering solution:

  • No slave lag
  • No lost transactions
  • Both read and write scalability
  • Smaller client latencies

Von codership.com/products/mysql_galera die benötigten Pakete laden, zur Zeit:

galera-23.2.1-amd64.deb
mysql-server-wsrep-5.5.23-23.6-amd64.deb

Das System vorbereiten:

aptitude install libaio1 libssl0.9.8 libdbi-perl libdbd-mysql-perl mysql-client libmysqlclient18 mysql-common libplrpc-perl libnet-daemon-perl

Galera und Mysql installieren:

dpkg -i galera-23.2.1-amd64.deb mysql-server-wsrep-5.5.23-23.6-amd64.deb

In der /etc/mysql/my.cnf

bind-address           = 127.0.0.1

anpassen bzw. auskommentieren.

Mysql starten

/etc/init.d/mysql start

mysqladmin -u root password 'superpassword'

mysqladmin -u root -p -h hostname password 'superpassword'

Ich habe einen User fuer die Repliaktion auf jedem Node angelegt. Zum testen kann man natürlich auch einfach den Mysqladminuser nehmen


mysql> SET wsrep_on = OFF; grant all on *.* to replikator@'%' identified by 'thisisnotfacebookandimnotyourfriend';

In der /etc/mysql/conf.d/wsrep.cnf

# Full path to wsrep provider library or 'none'
#wsrep_provider=none
wsrep_provider=/usr/lib/galera/libgalera_smm.so

# Logical cluster name. Should be the same for all nodes.
wsrep_cluster_name="imnotshyijusdontlikeyou_cluster"

# Group communication system handle
wsrep_cluster_address="gcomm://" #Dies nur beim ersten Server, bei den anderen trägt man dort die Adresse eines anderen Nodes ein. Spaeter sollte man die IP auch beim ersten Node anpassen

# Group communication system handle# SST authentication string. This will be used to send SST to joining nodes.
# Depends on SST method. For mysqldump method it is root:
wsrep_sst_auth=replikatior:thisisnotfacebookandimnotyourfriend #hier muss natuerlich ein user mit den benötigten Rechten eingetragen werden, im Zweifel root

wsrep_cluster_address sollte später nicht leer bleiben.

Danach

/etc/init.d/mysql restart 

Am besten tail -f /varlog/syslog auf den einzelnen Maschinen laufen lassen um zu schauen ob Fehler auftauchen. Zum testen Datenbanken auf den einzelnen Nodes anlegen und mit Daten füllen.

Größtenteils habe ich mich an http://blog.causal.ch/2012/02/installing-mysql-galera-on-debian-60.html orientiert. Empfehlen kann man natürlich generell die Galera Seite und den Artikel im Admin -Magazin 04/2012 über Galera Cluster für Mysql. Die einzelnen Optionen in der/etc/mysql/conf.d/wsrep.cnf sollte man sich nochmal genauer anschauen.    Teil 2 folgt dann (hoffentlich) mit garbd, pen, HAproxy, Splitbrain Problem und ein-zwei mehr Erfahrungen.

update auf ubuntu 11.04 und X startet nicht

Da es mir nun schon bei zwei Maschinen mit Nvidia Karte passiert ist. Von 10.10 auf 11.04 geupdatet und statt gdm kommt nur die Konsole. Grund war ein halbfertiges Update. Die Header Dateien fuer den aktuellen Kernel wurden nicht richtig installiert. Daraus folgt, dass auch das Nvidia Modul fuer den aktuellen Kernel nicht eingerichtet werden konnte. Also einfach manuell noch

??aptitude install linux-headers-generic-pae????

(Ich hab direkt die linux-headers-2.6.38-8-generic-pae genommen)
Dann nochmal ein

?aptitude install

vielleicht hab ich auch apt-get install gemacht, kann ich grad nicht mehr genau sagen. Zum Abschluss ein

?aptitude full-upgrade

kann auch ein apt-get dist-upgrade gewesen sein ;-).

Ubuntu PAM MOTD Local Root Exploit

Sag ich ja nur, kam gestern raus. Also wer tatsaechlich Ubuntu Produktiv nutzt sollte besser updaten.

#   user@ubuntu:~$ bash ubuntu-pam-motd-localroot.sh
#   [*] Ubuntu PAM MOTD local root
#   [*] Backuped /home/user/.ssh/authorized_keys
#   [*] SSH key set up
#   [*] Backuped /home/user/.cache
#   [*] spawn ssh
#   [+] owned: /etc/passwd
#   [*] spawn ssh
#   [+] owned: /etc/shadow
#   [*] Restored /home/user/.cache
#   [*] Restored /home/user/.ssh/authorized_keys
#   [*] SSH key removed
#   [+] Success! Use password toor to get root
#   Password:
#   root@ubuntu:/home/user# id
#   uid=0(root) gid=0(root) groupes=0(root)

getestet mit 9.10

Eigentlich wollte ich ja

Ubuntu Server eine Chance geben. Dafuer sollte ein PE 1855 herhalten. Leider war die Installation eine Katastrophe, besonders die Partitionierung (zeigte einfach ein Dutzend seltsamer Partitionen an). Mit Debian hat der ganze Vorgang so 15 Minuten gedauert, ohne ein einziges Problem und das System war am laufen.

Frueher war alles schwieriger

Installing XBMC Ubuntu 9.10 Karmic or higher

If you are using Ubuntu 9.10 or higher, you have the option of a more streamlined install. Load the terminal window and issue the following (The $ is a standard substitute for the your terminal prompt):

   
$ sudo add-apt-repository ppa:team-xbmc
$ sudo apt-get update
$ sudo apt-get install xbmc
$ sudo apt-get update
 

http://xbmc.org/wiki/?title=HOW-TO_install_XBMC_for_Linux_on_Ubuntu_with_a_minimal_installation_step-by-step