Civilization zu fünft

So nun wurde mal ein erstes fünf Spieler Spiel gespielt. Zu fünft dauert das Spiel nochmal deutlich länger. Natürlich sind mir wieder ein paar Fehler unterlaufen z.B. Kulturkarten müssen sofort abgelegt werden falls man das Kartenlimit überschreitet und dürfen nicht gespielt werden (Seite 18), große Persönlichkeiten dürfen nicht einfach so vom Feld genommen werden um im Rundenbeginn neu platziert zu werden und sicherlich noch einige mehr, aber bei der Fülle an Optionen und Regeln kann man schon mal den Überblick verlieren. Die erste Erweiterung Ruhm und Reichtum wurde komplett eingebracht, die zweite Erweiterung (Wisdom and Warfare) erscheint in Deutschland wohl erst Anfang 2014. Allein schon wegen der überarbeiteten Einheiten Karten lohnt sich die zweite Erweiterung. Die Möglichkeit zu investieren kam nur sehr langsam ins Spiel, wobei die Spieldauer dadurch eigentlich verkürzt werden müsste. Beim nächsten mal würde ich Investition aber wieder mit rein nehmen. Die Möglichkeit Pioniere und Armeen in Städten zu opfern, wurde überhaupt nicht genutzt. Konflikte haben sich, wie zu erwarten war, eigentlich nur bei benachbarten Völkern ergeben, also vorher gut schauen wo man sich hinsetzt. Ein langes Spiel, aber es hat sehr (sehr) viel Spaß gemacht.

IMG_20131109_200816

Für ein Einführungsspiel ist eine fünf Spieler Runde inklusive der ersten Erweiterung nur bedingt geeignet, da sich die Spieldauer durch die Regelerklärung und Nachfragen nochmal deutlich verlängert, aber danach ist man immer schlauer ;-).

etherpad und google drive

Google Drive und etherpad bieten beide die Möglichkeit online Dokumente in Echtzeit, mit mehreren Benutzern, zu bearbeiten. Die Ähnlichkeit kommt natürlich nicht von ungefähr. Ich habe mir das heute zum ersten mal kurz bei google drive angeschaut und muss zu geben, dass etherpad gegenüber google drive etwas blass wirkt.  Seit nun ca. drei Jahren nutze ich etherpad, erst „etherpad professionell“ und nach „Abkündigung“ nur noch etherpad lite was vor einiger Zeit zu etherpad umbenannt wurde. Ich war heute sehr erstaunt wie gut google das Produkt integriert und weiterentwickelt hat. Von irgendwelchem „meine Daten sollen nicht bei google liegen“ Zeug mal abgesehen, sehe ich da wenig Konkurrenzprodukte, besonders nicht im Open Source Bereich.

goodbye Hosteurope

Seit nun drei Jahren bin ich bei Hosteurope (HE) mit meiner VM (mailer, jabber, web). Heute endet mein Vertrag dort. Zeit für einen kurzen Rückblick.

Positives

  • normales Backup funktioniert gut und ist genauso wie man es sich wünscht.
  • Backup verbraucht keinen HD Platz (das ist nicht überall so)
  • Preis ist ok

Negatives

  • Sehr häufig Performanceprobleme (io wait, wahrscheinlich total überbuchte Maschinen)
  • Häufig angekündigte Ausfälle
  • Sehr unflexibel (Umzug auf neue VM, alte IP soll behalten werden, ist  nicht möglich)
  • OpenVZ und damit alle Nachteile die es bietet (z.B. kein eigener Kernel, Updates auf neuere OS Version nicht ohne weiteres möglich)
  • Supportforum kann man sich auch sparen, da dort nur User schreiben
  • Auf die Snapshotfunktion kann man sich nicht verlassen (OS komplett zerschossen damit, Support ist keine Hilfe)

Man merkt HE sehr stark an , dass es auf Massentrieb ausgelegt ist. Da stellt man sich ein Rechenzentrum vor,  wo nur eine Person im Schichtbetrieb „sitzt“, die auch noch nebenbei Supportanfragen beantworten muss. Besonders die Upgradepoliltik ist sehr nervig. Ein einfaches Upgrade von Debian 5.0 auf Debian 6.0 war vielleicht noch möglich, aber bei 6 zu 7 hört es dann auch auf (bei Ubuntu ist es meines Wissens nach nicht anders). Die Benuzter werden dabei ziemlich allein mit Ihrem alten OS  gelassen, das liegt natürlich auch mit an OpenVZ als eingesetzte Virtualisierungstechnik. HE bietet  zwar eine Parallelbereitstellung zu einem aktuellen VM Angebot an, aber die Lösung ist mehr als unbbefriedigend. Bei jedem OS Upgrade soll man also auf eine andere Maschine migrieren?
Ich bin nun seit  einer Woche mit exdc bei netcup. Dort wird KVM als Virtualisierungstechnik genutzt. Das Preis-/Leistungsverhältnis ist sehr gut, obwohl natürlich die Hoster Ihre Angebote regelmäßig anpassen. Im vergleichbaren Angebot bei HE für 16,99 € pro Monat sind zur Zeit  250 GB und ein Core dabei. Bei netcup gibt es „nur“ 200 GB, dafür aber zwei Cores für 15,99 €.
Ich kann zu netcup bisher natürlich nur wenig sagen. Das mit KVM ist super, man kann vom eigenen ISO Images booten und die angebotenen Images sind aktuell und einfach zu installieren. Man kann sich sein System so partitionieren und anpassen wie man will. Mein aktueller Arbeitgeber hat so ein ähnliches Produkt (beta und etwas einfacher) auch im Programm, daher war ich eh sofort vom ganzen System bei netcup begeistert.

Einige Hinweise zum Umzug.
DNS Dienste sollte man nicht vom Hoster nutzen, sondern bei einem extra Anbieter. Das macht vieles sehr viel einfacher. Da kann ich nur domaindiscount24 empfehlen, weil das der einzige kommerzielle Anbieter ist den ich kenne 😉 und der in all den Jahren (7 Jahre oder mehr)  nie Probleme bereitet hat. Falls man die Möglichkeit hat, sollte man Backup und Monitoring zusätzlich noch außerhalb des Hosters betreiben. Da ist so ein kleiner Raspberry Pi vielleicht genau das richtige für.

Vielleicht werde ich bei netcup auch die einen oder anderen Probleme erleben und den Umzug bereuen. Das wird sich aber erst im Laufe der nächsten Monate herausstellen, bzw. beim ersten Supportfall. Bisher bin ich aber sehr zufrieden.

Das ist natürlich nur meine persönliche Erfahrung, da gibt es sicherlich den einen oder anderen, der andere Erfahrung gemacht hat.

Kurztipp: Postfix Befehle

Da man es immer mal braucht:


$ mailq
$ postcat -q ID
$ postsuper -d ALL

 

Mailqueue ansehen
mailq

oder auch

postqueue -p

Mailqueue löschen:
postsuper -d ALL

einzelne Mails aus dem Queue löschen:
postsuper -d ID

Postfix zwingen, die Mails zu versenden
postqueue -f

Versuchen verzögerte (deferred) Mails abzuschicken (erzwingen)
postqueue -i ID

Verzögerte (deferred) Mails aus dem Queue löschen
postsuper -d ALL deferred

Kurztipp: Bot reconnect statusnet

Setzt man status.net 1.1.0 ein und nutzt den xmpp Bot, hat man eventuell das Problem, dass der Bot alle zwei Minuten reconnected. Abhilfe hat bei mir ein hoch setzen des Wertes PING_INTERVAL in der Datei  /plugins/Xmpp/xmppmanager.php gebracht. Zusätzlich habe ich auch die xmpp resource direkt in der config.php gesetzt  also:

$config['xmpp']['resource'] = 'cabal';

Innerhalb der xmpp  addPlugin Sektion der Datei findet  man den Eintrag auch nochmal. Erst danach hat der Bot richtig funktioniert und  Nachrichten von followern gesendet und auch eigene via xmpp gepostete Nachrichten zur Bestätigung an den Absender geschickt. Natürlich gibt es da noch etliche andere Bugs, aber ich bin schon froh, dass der Bot jetzt an sich gut funktioniert, da spare ich mir vielleicht doch die xmpp -> WordPress Lösung.

MySQL Master <-> Master Replikation aufsetzen

MySQL kann keine Master <-> Master Replikation. Wir machen das trotzdem mal mit Ubuntu 12.04 und MySQL 5.5 und hoffen, dass es funktioniert und wir in keine Split Brain Situation laufen. Wir sprechen der Einfachheit halber von db1 und db2 als unterschiedliche MySQL Server Instanzen.

Wir legen auf db1 einen Benutzer mit Replikationsrechten an

GRANT REPLICATION SLAVE , REPLICATION CLIENT ON * . * TO 'repuser'@'%' IDENTIFIED BY 'superpassword'; 

Jetzt passen wir die beiden MySQL Konfigurationen an. log_bin muss auf beiden natürlich aktiviert sein.

my.cnf auf db1:

server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
auto-increment-increment = 2
auto-increment-offset = 2

my.cnf auf db2:

server-id               = 2
log_bin                 = /var/log/mysql/mysql-bin.log
auto-increment-increment = 1
auto-increment-offset = 2

Diese auto-increment Optionen dienen dazu, dass es keine Probleme bei Primärschlüsseln, die automatisch hochgezählt werden, gibt.

Jetzt sind wir Faul. Wir stoppen MySQL auf db1 und db2.

$ service mysql stop

Dann löschen oder verschieben wir das MySQL Datadir auf db2. Default liegt das in /var/lib/.

Dann auf db1 als root:

$ rsync -avh --progress --stats /var/lib/mysql db2:/var/lib/

Fein, damit haben jetzt beide Instanzen den gleichen Datenbestand. Da wir als root kopiert haben sollten die Dateirechte stimmen.
Nun starten wir beide Instanzen

$ service mysql start

Wir connecten uns via mysql auf db1 und db2 und schauen mit

mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
            File: mysql-bin.000003
        Position: 107
    Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)

an welcher Stelle sich db1 und db2 befinden und merken uns das. Es sollte zu der Zeit niemand anderes auf db1 und db2 arbeiten. Dann gehen wir via mysql auf db1 und tippen folgendes ein

CHANGE MASTER TO MASTER_HOST='db2', MASTER_USER='repuser', MASTER_PASSWORD='superpassword', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=107;

bei den Daten MASTER_LOG_FILE und MASTER_LOG_POS geben wir die Daten ein, die wir vorher bei db2 ausgelesen haben.

Dann sind wir mutig und machen ein

mysql> start slave;

mit

mysql> show slave status\G

schauen wir ob die Replikation läuft. Da sollte dann

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

auftauchen. Nun gehen wir via mysql auf db2 und machen dort das gleiche

CHANGE MASTER TO MASTER_HOST='db1', MASTER_USER='repuser', MASTER_PASSWORD='superpassword', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=107;

MASTER_LOG_FILE und MASTER_LOG_POS ist der „SHOW MASTER STATUS\G“ von db1.

dann starten wir auch dort den slave mit

mysql> start slave;

und schauen mit

mysql> show slave status\G

ob die Slave Prozesse laufen

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Fertig, jetzt testen wir ein bisschen und legen auf beiden MySQL Instanzen Datenbanken und Benutzer und und schauen ob diese repliziert werden.

Bemerkungen:
So geht das theoretisch. Auf Sicherheit wurde kein Wert gelegt, da geht eh jeder einen anderen Weg. Slave_IO_Running, Slave_SQL_Running und Seconds_Behind_Master sollte muss man mit Nagios & Co überwachen. Geschrieben werden sollte immer nur auf eine MySQL Instanz, nicht auf die Idee kommen mit mysql-proxy oder so was ein write scale out umsetzen zu wollen.  Man kann eine Instanz auf read only setzen so verhindert man ungewollte Manipulation auf dem „Slave“. Der Replikationsuser und root dürfen aber schreiben, sollte man im Hinterkopf behalten.  Davor am besten noch pacemaker packen, so das im Notfall problemlos auf den „Slave“ geschwenkt werden kann. Ist man sich sicher was man da tut kann man auch das read only weg lassen. Sollten die Datenbanken irgendwie Inkonsitent werden ist das der Replikation egal solange kein Replikationsfehler geworfen wird.

Mir ist bekannt das es andere und bessere Lösungen gibt, ich wollt es nur mal aufgeschrieben haben.

Notizen via Jabber online posten

Ich hoffe es gibt bessere Lösungen, aber ich erzähle mal meine beiden.
Ich brauche eine einfache Möglichkeit Notizen via jabber (xmpp) zu posten. Diese sollen über eine Webseite angezeigt werden und durchsuchbar sein.
Jabber deshalb, weil es in der Regel häufig läuft wenn ich am Rechner sitze. Ich möchte nicht extra eine Seite öffnen um mir etwas zu notieren. Die meisten Notizen sind den Aufwand nicht wert.
Dazu nutze ich schon seit langer Zeit laconica/status.net unter mexdc.exdc.net. Funktioniert wunderbar, da gibt es einen netten Jabberbot der postet einfach alles was ich ihm schreibe. Auf Wunsch kann man sich auch anderen status.net Nutzern mitteilen.
Im Laufe der Zeit ist diese Notiz Funktion immer wichtiger für mich geworden, vernetzen via identi.ca, twitter&co dabei immer nebensächlicher. Natürlich kann man sich eine dedizierte status.net Instanz für diese Funktion aufsetzen. Habe ich auch gemacht, aus diversen Gründen bin ich aber unzufrieden damit. Einer der Hauptgründe ist, dass die aktuelle status.net Software (1.1.0) ziemlich fehlerbehaftet ist und z.B. der xmpp bot nicht das tut was er soll, daher bleibe ich auch noch bei der 0.9.9er.

Nun bin ich zufällig auf https://github.com/hj91/Using-XMPP-to-post-content-on-blog-sms-facebook gestoßen. Ähnlich wie bei status.net läuft ein bot, der einfach alles was man ihm so mitteilt via WordPress (xml-rpc) veröffentlicht. Das Skript ist einigermaßen übersichtlich und lässt sich eigentlich gut anpassen. Ein paar Dinge fehlen leider dabei. So ist es nicht möglich Beiträge mit Tags zu versehen. URLs werden nicht automatisch zu Links umgewandelt. Man kann zwar „<a href=http://heise.de>heise.de</a>“ posten, was dann auch als Link angezeigt wird, aber das ist natürlich zu aufwändig. Mit ejabberd im Hintergrund läuft das ganze sehr reibungslos und ohne Unterbrechung. Ach…aussehen tut es dann so: notizen.exdc.net. Na ja was soll man da auch groß erwarten!?

Voraussetzung ist bei beiden Lösungen, dass sie komplett selbst gehostet werden können, ohne externe Abhängigkeiten. Sollte ich bei dem Skript weiter kommen, schreibe ich nochmal was dazu.

Updates:
Wählt man P2 als Theme bei WordPress  funktioniert die Konvertierung zu clickable links.
Nach einiger Zeit verliert der Bot die connection zum ejabberd Server, das wird wohl die fehlende keepalive Funktion sein.

Update 2: eingestellt da status.net 1.1.1 nun gut mit xmpp läuft, siehe hier

btsync…ein paar Wochen später

Nun setze ich btsync schon seit einigen Wochen ein und muss sagen, dass ich sehr zufrieden damit bin. Mit der ersten öffentlichen Version gab es immer mal wieder CRC Fehler bei den Dateien, seit der neuen Version (1.0.134) ist dies aber nicht mehr aufgetaucht. Der Raspberry Pi ist dafür eine ideale Plattform, auch wenn die Geschwindigkeit beim syncen nicht besonders hoch ist. Ich nutze als Sync Device einfach einen USB Stick, wodurch nicht ständig eine externe HD laufen muss.  Bisher eine der besten und einfachsten Lösungen um Daten automatisch zu syncen ohne auf fremdgehostete tools zurückgreifen zu müssen. Ja, rsync ist auch gut hat aber hat bei mir ein ganz anderes Einsatzszenario.

Notiz: Pacemaker resource disable migration

$ crm ra info pengine
...
is-managed-default (boolean, [true]):
    Should the cluster start/stop resources as required

maintenance-mode (boolean, [false]):
    Should the cluster monitor resources and start/stop them as required

Ein kleiner Unterschied, aber nur ein kleiner.
Damit setzen wir den Cluster in den Maintenance Mode:

$ crm configure property maintenance-mode=true

Link:
http://oss.clusterlabs.org/pipermail/pacemaker/2011-March/009429.html

Probleme nach libvirt Update

Sollte man bei KVM  mit Portweiterleitung für VMs (z.B.  iptables -t nat -A PREROUTING -p tcp -d 123.123.123.123 –dport 1234 -j DNAT –to-destination 192.168.99.99:22) arbeiten und folgende Debian Updates eingespielt haben:

[UPGRADE] libvirt-bin 0.8.3-5+squeeze2 -> 0.8.3-5+squeeze5
[UPGRADE] libvirt0 0.8.3-5+squeeze2 -> 0.8.3-5+squeeze5
[UPGRADE] python-libvirt 0.8.3-5+squeeze2 -> 0.8.3-5+squeeze5

Nach dem Einspielen aber bemerkt haben man , dass die Portweiterleitung nicht mehr funktioniert und man auch durch erneutes Eintragen der iptables/routing oder was auch immer für Regeln keinen Erfolgt erzielt, dann könnte tatsächlich ein Reboot des Hosts helfen.