NGINX Cluster mit corosync + pacemaker

Für einen Reverse Proxy basierend auf NGINX habe ich kürzlich ein Cluster mit corosync und pacemaker erstellt. Das Setup läuft auf einem Ubuntu Server 14.04 LTS mit 2 Nodes.

Zuerst muss auf beiden Nodes corosync und pacemaker installiert werden:

apt-get install corosync pacemaker

Bei corosync habe ich mich für UDP Unicast Transport entschieden, möglich wäre auch ein Multicast Setup. Dazu habe ich die corosync Konfiguration wie folgt angepasst:

totem {
[...]
        crypto_cipher: none
        crypto_hash: none
        interface {
                # The following values need to be set based on your environment
                ringnumber: 0
                bindnetaddr: {ip des aktuellen Node}
                mcastport: 5405
        }
        transport: udpu
}
nodelist {
        node {
                ring0_addr:{ip oder hostname Node 1}
                nodeid: 1
        }
        node {
                ring0_addr: {ip oder hostname Node 2}
                nodeid: 2
        }
}
quorum {
        provider: corosync_votequorum
        two_node: 1
}

[...]

Anschliessend muss corosync und pacemaker auf beiden Nodes gestartet werden:

service corosync start
service pacemaker start

und dann kann mit crm_mon der Status des Clusters überprüft werden.

Last updated: Fri May 29 14:12:26 2015
Last change: Fri May 29 08:53:56 2015 via crm_resource on rproxy-node1

Stack: corosync
Current DC: rproxy-node1 (1) - partition with quorum
Version: 1.1.10-42f2063

2 Nodes configured

Online: [ rproxy-node1 rproxy-node2 ]

mit crm configure können dann entsprechend Ressourcen erstellt werden. In meinem Beispiel habe ich je eine IPv4 und eine IPv6 Ressource erstellt

primitive res_ipv6 ocf:heartbeat:IPv6addr params ipv6addr="{ipv6_addr}" cidr_netmask="{cidr_netmask}" nic="{nic}"

primitive res_ip ocf:heartbeat:IPaddr2 params ip="{ipv4_addr}" cidr_netmask="{cidr_netmask" nic="{nic}"

nach commit sind dann auf einem der beiden Nodes die VIP’s zugewiesen:

Last updated: Fri May 29 14:24:05 2015
Last change: Fri May 29 08:53:56 2015 via crm_resource on rproxy-node1
Stack: corosync
Current DC: rproxy-node1 (1) - partition with quorum
Version: 1.1.10-42f2063
2 Nodes configured
2 Resources configured

Online: [ rproxy-node1 rproxy-node2 ]
 Resource Group: rg_export
     res_ip     (ocf::heartbeat:IPaddr2):       Started rproxy-node1 
     res_ipv6   (ocf::heartbeat:IPv6addr):      Started rproxy-node1

Hier im Beispiel habe ich noch eine Resource Group erstellt, damit die beiden Ressourcen zusammen migriert werden, falls ein Node ausfällt.

Wichtig für die Konfiguration von nginx, damit auf eine nicht vorhandene (die IP ist nur auf dem aktuellen Node vorhanden) IPv4 Adresse gebinded werden kann muss:

net.ipv4.ip_nonlocal_bind=1

gesetzt werden werden. Die IPv6 VIP kann einfach auf den loopback Interface konfiguriert werden.

Man könnte einen NGINX auch direkt als Ressource definieren, ich hab das aber vorläufig mal nicht so gemacht sondern starte den NGINX Server normal als Service in Ubuntu:

service nginx start

Intel NUC, OpenElec und IR Receiver

Nachdem Daydeal kürzlich einen Intel NUC im Angebot hatte, befindet sich so einer nun auch in meinem Besitz. Als Ersatz für meine in die Jahre gekommene Boxee Box habe ich darauf ein OpenElec (XBMC bzw. neu Kodi) installiiert.

Bei der Installation kann man eigentlich nichts falsch machen, OpenElec auf USB Stick laden (gemäss Anleitung) und anschliessed auf dem Intel NUC booten und installieren.

Desweiteren habe ich auch eine Logitech Harmony one Fernbedienung bei mir im Einsatz. Damit diese auch mit dem vorhandenen IR Receiver funktioniert ist folgendes wichtig:

Folgende Datei erstellen:

/storage/.config/autostart.sh

mit dem Inhalt:

modprobe -r nuvoton-cir
echo "auto" > /sys/bus/acpi/devices/NTN0530\:00/physical_node/resources
modprobe nuvoton-cir

und dann die Datei ausführbar machen:

chmod +x /storage/.config/autostart.sh

dann funktioniert auch die Harmony One.

19 Zoll 6 HE Enclosure für Alix Boards

Wir setzen bei uns in der Firma einige Alix Boards von PC-Engines ein. Unsere DNS und DHCP Server laufen z.B. auf solchen Alix Boards. Um das Handling mit den Boards zu verbessern, haben wir uns ein 19 Zoll Enclosure anfertigen lassen. Darin können wir unsere Alix Boards nun ähnlich wie in einem normaler Blade-Center betreiben.

Die Boards werden auf einen Einschub geschraubt und verkabelt. Jeder Einschub hat einen D-Sub Anschluss welcher mit dem Backplane des Enclosure verbunden wird. Aktuell läuft allerdings nur die Power-Versorgung übers Backplane. Auf den Einschüben mit dem Connector ist allerdings auch der USB und Seriell-Port vorbereitet. USB und Seriell (sowie auch Ethernet) sind ja aber von vorne gut erreichbar.

Das Enclosure ist mit zwei Netzteilen ausgestattet, für einen redundanten Betrieb der Alix Boards.

Hier ein paar Bilder:

Das Enclousure benötigt 6 HE in einem Rack und hat Platz für 16 Alix Boards.

Was aktuell noch fehlt ist ein Reset Knopf um die Boards neu zu starten (evtl. auch ein On-Off schalter). Aktuell müssen wir die Boards jeweils kurz herausziehen und wieder einstecken für einen Reset.

Vor kurzem hat PC-Engines auch die neuen Alix Boards mit 1 GBit/s Ethernet Schnittstellen herausgegeben (apu1c &  apu1c4). Da diese den gleichen Formfaktor wie die bei uns im Einsatz stehenden alix2d13 haben, können diese genau gleich auf die Einschübe montiert werden.

Update: My Mining Rig

Heute ist mein bei Conrad bestellter USB Hub angekommen. Und ich habe gleich meine 3 Red Furys eingesteckt. Bei dem USB Hub handelt es sich um eine USB 3:0 Variante. Obschon diese zu UBS 2 kompatibel sein sollte, hat mein Raspberry Pi mit MinePeon leider die RedFurys nicht richtig erkannt.

Ich bekam lauter solche und weitere ähnliche Fehlermeldungen in dmesg

device not accepting address 54, error -71

Der USB Hub läuft nun halt an einem anderen Rechner mit USB 3.0 Port und bfgminer

My Bitcoin Mining Rig

Hier zwei Fotos meines Raspberry Pi mit Minepeon + D-Link USB Hub. Momentan sind

  • 2x Miner Block Erupter USB, ca 0.66 GHs
  • 3 x Bitmain AntMiner U1, ca 6 GHs

dran. Bald folgen noch weitere:

Antmine U1 auf Minepeon

Es scheint, als wären die Bitmain AntMine U1 Treiber bei der aktuellen Minepeon Version 0.2.4.3 noch nicht vorhanden. Meine neu erhaltenen Antmine U1 haben zwar funktioniert, allerdings nicht mit voller Speed und vielen Errors. Ich musste deshalb den BFGMiner mit den aktuellen Treibern neu kompilieren.

Folgendes hat bei mir funktioniert:

git clone https://github.com/nwoolls/bfgminer.git bfgminer
cd bfgminer
./autogen.sh
./configure
make
mv /opt/minepeon/bin/bfgminer /opt/minepeon/bin/bfgminerOLD
mv bfgminer /opt/minepeon/bin/bfgminer
sudo reboot

Und dann das Startup Script wie folgt angepasst:

#!/bin/bash
sleep 10
/usr/bin/screen -dmS miner /opt/minepeon/bin/bfgminer/bfgminer -c /opt/minepeon/etc/miner.conf -S antminer:all -S erupter:all --set-device antminer:freq=0881

Hier noch eine Tabelle mit den Frequenzen  <-> Hash rate, Bei mir aktuell 1.8 GHs, wichtig, Kühlung nicht vergessen! Ich gehe momentan noch nicht zu hoch, da ich nur einen kleinen, lauten USB Ventilator habe und das RaspberryPi  momentan noch auf meinem Arbeitsplatz steht.

Frequency Hex  -> ASIC Hash Rate (GHZ)
0581 -> 1.2 GHs
0681 -> 1.4 GHs
0781 -> 1.6 GHs
0881 -> 1.8 GHs
0981 -> 2.0 GHs
0A81 -> 2.2 GHs
0B81 -> 2.4 GHs
4C81 -> 2.6 GHs
4D81 -> 2.8 GHs
4E81 -> 3.0 GHs
4F81 -> 3.2 GHs
5081 -> 3.4 GHs
5181 -> 3.6 GHs
5281 -> 3.8 GHs
5381 -> 4.0 GHs