In unserem Experimentalverzeichnis liegt die neueste und finale Version von Gluon 2018. Danach geht’s mit 2019 weiter und das Update wird dann etwas abenteuerlicher. Aber erstmal müssen wir die 2018.2.4 alias 0.10.6 ausprobieren und evtl. sogar bis zu stable hochziehen.
Bitte ausprobieren. Danke :-)
Hier die Neuerungen
https://gluon.readthedocs.io/en/v2019.1.x/releases/v2018.2.3.html
https://gluon.readthedocs.io/en/v2019.1.x/releases/v2018.2.4.html
Hier der Download
Eine neue experimentelle Firmware 0.10.3 (gluon 2018.2) ist fertig und bereit zum testen.
Sie ist zu finden unter https://cccgoe.de/freifunk/experimental
Die Knotenposition kann man jetzt direkt bei der Installation in einer Map auswählen
Wenn ein Knoten mal keine Verbindung zum Internet hat wechselt er die SSID in FFGOffline_$nodename
In der ersten Runde haben wir das Netz von 0.8.7 auf 0.9.3 und 0.10.1 (die experimental Nodes) angehoben:
Das ist nebenbei auch immer ein schöner Test, wieviele Nodes tatsächlich aktiv sind.die 72 verbliebenen sind zumindest in den letzten Wochen nicht online gewesen.
Wir starten heute das Update auf 0.10.1 auf den Beta-Nodes und wenn dabei keine Probleme auftreten bekommen das alle anderen auch.
Unser Göttinger Freifunk-Netz verwendet (Stand Oktober 2018, mit sehr wenigen Ausnahmen) zwei Firmware-Versionen:
Die Betaversion sollte eigentlich auch mal zur stable werden, aber das Projekt haben wir einschlafen lassen. Wir sehen sie daher nur auf Nodes, die von der stable Version nicht unterstützt werden.
Durch unsere Faulheit haben wir zwar ein sehr stabiles Netz, das wenig durch mit Technik spielende Administratoren belästigt wird, aber die Bitten um neuere Firmware zwecks Einsatz neuerer Hardware werden häufiger.
Das Netz produziert (leider) immer noch immer mehr Traffic, obwohl die Anzahl der Nodes ziemlich stabil um die 800 schwankt. Damit sind wir gerade noch in der Lage weiterzumachen, ohne den großen Aufwand einer Aufteilung des Netzes durchführen zu müssen.
Das Wachstum des Netzes über die problematische Grenze hinaus haben wir halbwegs erfolgreich gebremst, in dem wir z.B. Werbemaßnahmen eingestellt haben und befreundete Freifunk-Projekte im Landkreis ermuntert haben, anstatt das Göttinger Netz immer größer zu machen, eigenständige Netze aufzubauen. Die besten Beispiele sind die großen Projekte in Hann-Münden und Einbeck. Von der Anzahl der Nodes her wäre das ganz offensichtlich auch in Osterode und Duderstadt denkbar.
Und seit Abschaffung der Störerhaftung beraten wir Interessenten, die dafür in Frage kommen, immer in die Richtung, doch einfach ein offenes WLAN bereitzustellen, und das gerne auch “Freifunk” zu nennen.
Dennoch ist unser letztes Firmware-Update lange her und die Router-Hersteller nehmen bewährte Hardware vom Markt um immer neue hinterherzuschieben. Die Schornsteine müssen rauchen. Also dann…
Das Gluon-Team hat Updates herausgebracht, mit 29 (!) neuen Hardware Plattformen. Das Update erfolgt in zwei Schritten, weil die TP-Link CPE 210/510 für den Sprung auf die aktuellste Version eine Zwischenversion benötigen.
In den nächsten Wochen werdet Ihr daher zwei Upgrades erleben:
Wer einen VPN-Beschleuniger einsetzt, lese bitte baldmöglichst:
https://gluon.readthedocs.io/en/v2018.1.x/releases/v2017.1.htm
Die allermeisten von Euch haben ihre Freifunk-Router auf “stable” und “autoupdate” stehen und müssen daher nichts machen. Alle anderen sollten die neuen Firmwareversionen von Hand einspielen (oder die Router umstellen).
Wir haben Euch die neuen Plattformen aus den Release-Notes zusammengeschrieben. Neben sehr vielen, teilweise sicherheitsrelevanten Bugfixes wird wie gesagt, ganz viel neue Hardware unterstützt.
Drückt uns allen die Daumen
Eure Göttinger Freifunker
(Gluon 2016.2.6)
ar71xx-generic
(Gluon 2017.1)
ar71xx-generic
ar71xx-tiny
x86-generic
The x86-kvm and x86-xen_domu targets have been removed; the x86-generic images now support these usecases as well, so no separate targets are needed anymore.
x86-geode
The new x86-geode target for hardware based on Geode CPUs has been added.
(Gluon 2017.1.4)
ar71xx-generic
(Gluon 2017.1.5)
ar71xx-generic
ramips-mt7621
(Gluon 2017.1.8)
ar71xx-generic
ar71xx-tiny
(Gluon 2018.1)
ar71xx-generic
ar71xx-nand
ar71xx-tiny
ipq806x
ramips-mt7620
ramips-mt7628
ramips-rt305x
sunxi
Dies betrifft alle Betreiber eines x86 Gluon Systems. Das sind die Futros und Verwandte.
Ein tolles Plugin für Thunderbird um größere Dateien nicht via email verschicken zu müssen, sondern direkt über Nextcloud bereitzustellen zu können. Funktioniert auf den ersten Blick relativ problemlos. Man kann leider nicht pro mail ein neues Passwort definieren, ansonsten aber eine feine Sache.
https://addons.mozilla.org/de/thunderbird/addon/nextcloud-filelink/
Gibt es auch für Outlook. Kann ich aber mangels Outlook nicht testen.
Chrome versteckt mittlerweile die Zertifikatsinformationen etwas.
Finden tut man sie durch aktivieren der Developer tools (F12) und dort unter Security.
Warum man die „versteckt“ ist mir aber schleierhaft. Damit wird der trust level eines Zertifikats auch immer unwichtiger, Hauptsache der Browser beschwert sich nicht. Mag man darüber denken was man will.
During the emergence of electronic communication, the two scientists/engineers Carl Friedrich Gauss and Wilhelm Eduard Weber built the first electrical communications line in Goettingen, Germany. They set up a two kilometer two wire copper line between Gauss’ workplace – the Astronomical Observatory – and Weber’s laboratory in the physics department of the Goettingen University.
It is unknown what the content of the first telegram sent was but one story goes like this: Gauss sent the message: “Michelmann kömmt” or “Michelmann is on his way” to Weber. While the message was transmitted, Michelmann, an assistant of both Gauss and Weber traveled the distance between the two sites, allowing the scientists to confirm the accuracy of the message 0.
Michelmann is a messenger or courier in this story. He helps Gauss and Weber demonstrate that their system works and that messengers can be replaced by electronic communication. I find it amusing and somewhat ironic that Michelmann played the role of verifying a technology that would take over some of his own responsibilities – relaying messages between Gauss and Weber.
Today technology is again taking over responsibilities previously held by humans: it trades stocks, drives cars and diagnoses and treats diseases. Sometimes I like to put myself in the shoes of those modern-day Michelmanns: humans that participate in handing over parts of their responsibilities to machines. Stock-brokers and data scientists that feed their knowledge into automated trading systems, ride sharing drivers that seed the offline maps for autonomous cars, medical doctors that train expert systems and image recognition algorithms to automate diagnosis and treatment.
Are these people aware of what they are doing? And how long until my job (software architect) can be replaced by a machine? Am I already doing what Michelmann did in 1832 by writing and fixing code and committing it to public repositories? I want to say: I hope so. But then again I’m only 97% convinced it is a good thing.
1. Another version of the story has Gauss send the message “Wissen vor meinen, Sein vor scheinen” which roughly translates to “Knowing is more important than believing, being is more important than appearance”. It is possible that they sent both messages, one test message and one message for posterity.↩
Der V13 hat leider komplett andere Hardware als seine Vorgänger und wird auf absehbare Zeit vermutlich nicht von unserer Software unterstützt werden, da das Gerät einen völlig anderen WLAN-Chipsatz hat. Wir empfehlen derzeit lieber auf ein anderes Modell wie den WR842, WR940 und WR1043ND umzuschwenken. Sobald der V13 unterstützt wird, werden wir auch eine Firmware für das Gerät bauen.
(Text schamlos in Münster ctrl-c ctrl-v’t. Danke)
Lsyncd hatte ich mir schon mal vor Jahren angeschaut. Damals wurde aber ssh als Transport noch nicht unterstützt. Nun habe ich mir das nochmal kurz (wirklich kurz) unter Debian 8 angeschaut (Version 2.1.5). Lsyncd überwacht Verzeichnisse via inotify und überträgt alle geänderten Dateien automatisch auf die angegebenen Zielhosts. Lsyncd bietet eine große Anzahl an Optionen, daher schadet ein Blick auf die Homepage nicht. Zum schnellen testen kann man einfach folgendes ausprobieren:
apt install lsyncd
Auf der Konsole:
lsyncd -rsyncssh /home/thomas/hallo zielhost /home/thomas/test
Dabei wird der Inhalt des Ordners hallo in den Zielordner test Übertragen. Default werden Änderungen alle 15 Sekunden übertragen. Der Zielordner wird dabei automatisch angelegt.
Konfigurationsdateien lassen sich auch „problemlos“ nutzen, z.B.:
$ cat /etc/lsyncd/lsyncd.conf.lua settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status" } sync { default.rsyncssh, source = "/home/thomas/hallo", host = "thomas@zielhost", targetdir = "/home/thomas/test", }
und mit
service lsyncd start
den daemon starten. Danach eventuell noch ein
update-rc.d lsyncd defaults
für den Autostart des daemons.
Dabei muss auf dem Zielhost ssh login ohne Passwort erlaubt sein. Man kann aber auch rsyncd zur Übertragung nutzen. Zu beachten ist das lsyncd default „delete“ als Option hat. Das merkst Du daran, dass plötzlich vielleicht Dein gesamtes home directory gelöscht wurde…nicht das es mir passiert wäre. Die Syntax im Bezug auf „/“ bei Verzeichnissen ist anders als bei rsync.
Lsyncd ist eventuell interessant wenn man einfach nur ein paar Konfigurationen, ohne Puppet & Co zu nutzen, syncen will oder man eine überschaubare Menge an Dateien auf verschiedenen hosts verteilen will. Ab einer gewissen Anzahl von Dateien stößt man an auf diverse Probleme (inotify&co). Am besten man testet lsyncd auf Testmaschinen bevor man es produktiv einsetzt.
Klingt eigentlich ganz leicht, ist aber aber tatsächlich umständlich einzurichten. Ich nutze Fluxbox bei einigen Maschinen als Windowmanager. Dort die Proxy Einstellungen für den Chrome Browser zu ändern ist etwas nervig, da man dies nicht einfach über die Einstellungen des Browsers machen kann. Der geringste Aufwand ist einfach ein Proxy Addon zu installieren. Also einfach Proxy SwitchyOmega installieren, die Proxydaten eintragen und den Proxy auswählen.
Sollte man mit ssh Forward arbeiten, nicht vergessen socks5 statt http als Protokoll zu wählen.
Um beim Login via ssh sofort in einer tmux Session zu landen habe ich folgendes in meine .bashrc auf dem Zielhost eingefügt:
case $- in *i*) if command -v tmux>/dev/null; then if [[ ! $TERM =~ screen ]] && [[ -z $TMUX ]]; then if tmux ls 2> /dev/null | grep -q -v attached; then exec tmux attach -t $(tmux ls 2> /dev/null | grep -v attached | head -1 | cut -d : -f 1) else exec tmux fi fi fi ;; esac
Sehr praktisch falls die Verbindung nicht stabil oder die bash_history deaktiviert ist.
Man kann auch
ssh 123.123.123.123 -t tmux a
nutzen, falls eine tmux Session vorhanden ist bzw. „tmux“ falls keine.
Die .bashrc Lösung ist aber natürlich etwas eleganter.
Link: https://stackoverflow.com/a/42351698
Jeder der sich irgendwie für ebooks interessiert kommt eigentlich nicht an Calibre vorbei. Die Software ist mittlerweile in der der 3.0er Version erschienen. Der „Content server“ ist deutlich performanter und bietet nun endlich auch eine Funktion zum online lesen an.
Bisher, dank Cops und Bicbucstriim, zwar von mir kaum genutzt, aber dennoch eine sehr praktische Funktion. Dabei hat Cops, dank des integrierten Readers, aber die Nase vorn.
Wirft Pydio in der 8.0.0 Version den Fehler
<message type="ERROR">You are not allowed to access this resource.</message>
beim Update via Webinterface auf die 8.0.1er. Einfach mal einen anderen Browser probieren. Bei mir hat das Update dann mit Chrome funktioniert
Link: https://pydio.com/forum/f/topic/solved-not-allowed-to-access-this-resource/
Maldet ist ein Malware Scanner. Ideal für jegliche Art von Webhosting.
Maldet legt automatisch einen cronjob an und verschickt je nach Wunsch täglich mails.
Mails sehen dann in etwa so aus:
HOST: web01 SCAN ID: 170610-0654.14910 STARTED: Jun 10 2017 06:54:15 +0200 COMPLETED: Jun 10 2017 07:07:34 +0200 ELAPSED: 799s [find: 450s] PATH: RANGE: 1 days TOTAL FILES: 24202 TOTAL HITS: 2 TOTAL CLEANED: 0 WARNING: Automatic quarantine is currently disabled, detected threats are still accessible to users! To enable, set quarantine_hits=1 and/or to quarantine hits from this scan run: /usr/local/sbin/maldet -q 170610-0654.14910 FILE HIT LIST: {HEX}php.cmdshell.unclassed.365 : /pfad/zum/docroot/phpshells/844-4873-1-SM.phtml {HEX}gzbase64.inject.unclassed.15 : /pfad/zum/docroot2/c.php
Maldet bietet etliche Einstellungsmöglichkeiten. Man kann es auch in Echtzeit im monitoring mode laufen lassen. Je nach Umfang der docroots stößt man dabei aber an diverse Limits (ulimit &co).
Auf Github findet man Maldet unter https://github.com/rfxn/linux-malware-detect. Debian Pakete gibt es unter https://github.com/waja/maldetect.
Nur ein paar Notizen für mich für ein Update von Ubuntu 12.04 zu 14.04 und von MySQL 5.5 zu 5.6.
MySQL
table_cache gibt es bei MySQL 5.6 nicht mehr, das heißt nun table_open_cache. Am besten vorher in der my.cnf ändern
ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable
invoke-rc.d apparmor restart
schadet auch nicht.
Pacemaker
apt-get install haveged
braucht man
Pacemaker komplett löschen. Purgen reicht nicht
rm -rf /var/lib/pacemaker
rm -rf /var/lib/heartbeat
rm -rf /var/lib/pengine
Nachdem Update Pacemaker einfach neu installieren. Das sollte inklusive Konfiguration maximal 5 Minuten dauern. Eventuell kurz root via key zwischen den Nodes erlauben.
update-rc.d pacemaker defaults
kann auch nicht schaden
ssh
Match Blocks werden nicht mehr mit „Match“ geschlossen und müssen immer am Ende der sshd_config stehen. Eventuell hilft „Match all“
So, das Update ist dann durch. Bei so einer Aktion kann man auch immer ganz gut abschätzen wieviele normale Nodes (also keine Bastel- Experimentier etc.) in unserem Netz sind. Das sind zur Zeit 867, was auch ganz interessant ist, denn davon sind eigentlich immer mindesten 50 aus, wenn man das mal mit der Nodestatistik vergleicht.
Wir starten morgen ein Update der Firmware im Göttinger Freifunk-Netz.
Nodes, die auf Autoupdate stehen, werden im Laufe der nächsten zwei Wochen das Update automatisch installieren.
Das ist ein Sprung von
“ffgoe-0.8.2 basierend auf Gluon 2016.1.5 vom März 2016” auf
“ffgoe-0.8.7 Basierend auf Gluon 2016.2.3 vom Februar 2017”.
Es steckt also ein Jahr Entwicklungsarbeit in der Firmware, es gibt viele Bugfixes und Support für neue Hardware. Wir haben die Firmware in Version 0.8.7 seit Februar als Beta-Version zur Verfügung gestellt und sie läuft seitdem erfolgreich auf 67 Nodes.
Hier sind sämtliche Änderungen verzeichnet:
v2016.1.6.html
v2016.2.html
v2016.2.1.html
v2016.2.2.html
v2016.2.3.html
Unsere Konfiguration befindet sich hier:
https://github.com/freifunk-goettingen/site-ffgoe/tree/v0.8.7
Da gibt es einige Angebote an Open Source Softwarelösungen. Früher hatte ich gallery im Einsatz, dass wurde dann irgendwann mal gehackt und wird auch seit einigen Jahren nicht mehr weiter entwickelt. Generell scheinen Webgalerien ein beliebtes Ziel für Einbrüche zu sein. Als Ablösung kam dann ganz einfach google Fotos bei mir/uns. Das funktioniert, ist extrem praktisch wenn man eh 99,9% der Fotos mit dem Handy macht. Da aber Fotos von Handys immer noch schrottig gegenüber Fotos einer richtigen Kamera aussehen, haben wir uns eine Systemkamera zugelegt. Erst etwas skeptisch ob das Geld auch gut angelegt ist, war ich bereits nach dem ersten Spaziergang mit Kamera & Co vom Nutzen der Kamera überzeugt. Mit einer Kamera hat man halt Fotos und mit einem Handy Schnappschüsse. Nun stellte sich die Frage wohin mit den Fotos? Irgendwo auf Platte, Dropbox, Nextcloud, Google Photos?
Google Photos ist ungünstig, weil bei Bildern über 16 MP die Qualität auf 16 MP reduziert wird, jedenfalls wenn man unbegrenzt Bilder ablegen will und die Daten nicht auf den Quota angerechnet werden sollen. Da ich eh schon immer ein Freund von Wasduselbsthostenkannsthosteselbst bin, habe ich mir piwigo angeschaut. Vorher noch kurz nextcloud als Galerie ausprobiert, das ist aber leider komplett unbrauchbar dafür. Erst hatte ich die Daten noch via nextcloud client gesynct und einfach einen symlink in den galleries Ordner von piwigo gelegt. Fand ich aber nervig und ist überflüssig. Einfach die Fotodaten via rsync in den galleries Ordner und via Webinterface syncen lassen und fertig. Natürlich liegen die Fotos nochmal auf dem NAS.
Die Lösung gefällt mir ausgesprochen gut und funktioniert wunderbar. Sollte jemand eine gute andere Webgalerie Software kennen, immer her damit. Optimal wäre es natürlich wenn die Kamera (die natürlich heute alle WLAN haben) direkt syncen könnte, ohne den Weg über den PC zu gehen.
Wir haben eine Datei, die wir einfach nur leeren wollen. Die Dateirechte sollen so bleiben und wir wollen nicht mit rm&touch&chown&chmod arbeiten.
$ l machmichleer.txt -rw-rw-r-- 1 thomas thomas 27K Apr 21 10:06 machmichleer.txt $ > machmichleer.txt $ l machmichleer.txt -rw-rw-r-- 1 thomas thomas 0 Apr 21 10:07 machmichleer.txt
Nach einem Update von Debian 7 auf 8 ging das Anmelden am System extrem langsam, zudem lief clamav nicht mehr. UsePAM yes auf no hat zwar geholfen aber man will ldpap nutzen. Da gab es noch mehr, aber das spare ich mir alles.
Die Lösung hat etwas gedauert. Geholfen hat:
$ ldd /usr/sbin/console-kit-daemon libgobject-2.0.so.0 => /opt/tivoli/tsm/client/ba/bin/libgobject-2.0.so.0 (0x00007f20f34ef000) libglib-2.0.so.0 => /opt/tivoli/tsm/client/ba/bin/libglib-2.0.so.0 (0x00007f20f32fe000)
/etc/ld.so.conf.d/tsm.conf
löschen bzw. wo auch immer man das damals für TSM Client eingetragen hat.
$ ldconfig
fertig. Mittlerweile gibt es einen von IBM unterstützen 7er Client für Debian/Ubuntu (eigentlich nur Ubuntu aber egal).
I don’t like to have daemons listening on the systems I am responsible for. This is the reason why I check periodically all systems with netstat -tulpen to see what processes are actually listening, look if they are needed and may be bound to localhost only.
I used to set the system time via ntpd, but many years ago I switched to a simple cron job that runs ntpdate. This is good enough for all systems that don’t depend on milliseconds and smooth time shift etc. I was able to remove ntpd from almost all servers. My cron job looks like this:
## ntpdate Cron Job
# Environment Settings
MAILTO=root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Job Definition
*/30 * * * * root /usr/sbin/ntpdate 0.pool.ntp.org > /tmp/ntpdate.prt 2>&1
I often need to work in a database on the command line. Booleans are not displayed in an intuitive way. I mean this:
There is a simple trick that helps me to read it much better: cast it to an integer. This is done by adding +0 to the boolean column:
mod_macro ist dufte, besonders wenn man nicht nur Apache Vhosts für 10-20 Leute verwaltet. Da gibt es etliche sinnvolle Einsätze für.
Das Modul mod_macro ist default bei apache 2.4 dabei.
$a2enmod macro
Nun kann man sich eine einfache macro.conf anlegen:
<Macro VHost $name $domain> <VirtualHost *:80> ServerName $domain ServerAlias www.$domain DocumentRoot "/var/www/vhosts/$name" ErrorLog "/var/log/httpd/$name.error_log" CustomLog "/var/log/httpd/$name.access_log" combined </VirtualHost> </Macro>
Wir haben damit ein Macro namens VHost angelegt. Dieses Macro kann mit folgenden Werten gefüttert werden:
$name $domain
Wollen wir das Nacro nun in unserer vhost.conf nutzen, schreiben wir dort einfach nur:
Use VHost example example.com ... Use VHost montag baldistfruehling.org
Wir übergeben also den Wert example und example.com an das Macro mit dem Namen VHost. Dabei ist die Reihenfolge der Werte durch das Macro vorgegeben. Der Apache baut uns damit unsere Vhost.conf zusammen.
Fertig sind unsere Vhosts. Einfach den Apache neu starten und das war es. In der Dokumentation wird aus verständlichen Gründen noch vorgeschlagen die Macro Definition wieder zu entfernen wenn sie nicht mehr gebraucht wird.
Dies geschieht einfach mit
UndefMacro VHost
Besonders bei größere Konfigurationen, vermeidet man damit Konflikte.
Will man mehrere Werte übergeben z. B. IP Listen, kann man einfach diese einfach in Anführungszeichen setzen.
Use RestrictedAccessPolicy "192.54.172.0/24 192.54.148.0/24"
Hinweise:
Die macro.conf kann natürlich in beliebig viele Dateien auf gesplittet werden. Optimalerweise sollten die Namen der Macro Dateien Aufschluss über deren Funktion geben. Das Include der macro.conf muss vor dem Include der vhost.conf stehen.
Eine Dokumentation zu mod_macro findet man unter
https://httpd.apache.org/docs/2.4/mod/mod_macro.html
Die ist sehr gut, daher habe ich auch auf eigene Beispiele verzichtet.
NetworkManager provides connectivity checking to test for captive portals since GNOME 3.14. This performs recurring checks on a configurable URL. In case this does not deliver the expected response, NetworkManager knows we are very probably behind a captive portal and opens the corresponding login page.
This connectivity checking is an optional feature and not enabled by default in Debian Jessie or Squeeze. To enable this we can simple add a configuration file in /etc/NetworkManager/conf.d containing three settings:
[connectivity] uri=http://network-test.debian.org/nm response=NetworkManager is online interval=300
This will check http://network-test.debian.org/nm every 300 seconds and expects to find the string “NetworkManager is online” in the HTML response.
For privacy reasons you might not want to test a public URL though. We could however simply host the URL to be checked ourselves. The NetworkManager documentation gives a few more details about the three settings. We mainly need to set the URI to a web site that either returns the header “X-NetworkManager-Status” with a value of “online” or returns the string specified using “response” in its body.
Given a running Apache web server with mod_headers enabled we can simply define a vhost like this:
<VirtualHost *:80> ServerName connectivity-check.example.net ## Vhost docroot DocumentRoot "/var/www/empty" ## Directories, there should at least be a declaration for /var/www/empty <Directory "/var/www/empty"> Header Set X-NetworkManager-Status "online" AllowOverride None Require all granted </Directory> ## Logging ErrorLog "/var/log/apache2/connectivity-check.example.net_error.log" ServerSignature Off CustomLog "/var/log/apache2/connectivity-check.example.net_access.log" combined </VirtualHost>
and configure NetworkManager using the following in /etc/NetworkManager/conf.d/10-connectivity.conf:
[connectivity] uri=http://connectivity-check.example.net interval=300
Sources:
Genauere Informationen zu ProxySQL mit Galera findet man hier. Dort ist auch erklärt wie man das Skript bei proxysql nutzen kann. Das Skript wird vorzugsweise vom ProxySQL Scheduler aufgerufen. Man kann es aber natürlich auch einfach mal auf der Commandline testen.
Meiner Meinung nach wird sich das eh im Laufe der nächsten Versionen nochmal grundlegend ändern. Das ist alles relativ umfangreich, daher nur ein paar Hinweise.
Das Skript liegt unter
/usr/share/proxysql/tools/proxysql_galera_checker.sh
Ein Aufruf sieht in etwa so aus
$ ./proxysql_galera_checker.sh 1 0 2 0 /var/lib/proxysql/galerachecker.log
Das erste Parameter gibt die Hostgroup für der Writer an, das zweite die Reader Hostgroup. Die 2 ist die Anzahl der genutzten Writers und die letzte 0 gibt an ob Writer auch als Reader agieren sollen wenn sie in der gleichen Hostgroup wie die Reader sind und als letztes Argument der Pfad zum Log.
Schaut man nun in das Logfile findet man folgendes:
Fr 3. Mär 13:22:10 CET 2017 ###### proxysql_galera_checker.sh SUMMARY ###### Fr 3. Mär 13:22:10 CET 2017 Hostgroup writers 1 Fr 3. Mär 13:22:10 CET 2017 Hostgroup readers 0 Fr 3. Mär 13:22:10 CET 2017 Number of writers 2 Fr 3. Mär 13:22:10 CET 2017 Writers are readers 0 Fr 3. Mär 13:22:10 CET 2017 log file /var/lib/proxysql/proxysql_galera_checker.log Fr 3. Mär 13:22:10 CET 2017 ###### HANDLE WRITER NODES ###### Fr 3. Mär 13:22:10 CET 2017 --> Checking WRITE server 1:galera3:3306, current status ONLINE, wsrep_local_state 4 Fr 3. Mär 13:22:10 CET 2017 server 1:galera3:3306 is already ONLINE: 1 of 2 write nodes Fr 3. Mär 13:22:10 CET 2017 --> Checking WRITE server 1:galera4:3306, current status ONLINE, wsrep_local_state 4 Fr 3. Mär 13:22:10 CET 2017 server 1:galera4:3306 is already ONLINE: 2 of 2 write nodes Fr 3. Mär 13:22:10 CET 2017 ###### HANDLE READER NODES ###### Fr 3. Mär 13:22:10 CET 2017 --> Checking READ server 0:galera1:3306, current status ONLINE, wsrep_local_state 4 Fr 3. Mär 13:22:10 CET 2017 server 0:galera1:3306 is already ONLINE Fr 3. Mär 13:22:10 CET 2017 --> Checking READ server 0:galera2:3306, current status ONLINE, wsrep_local_state 4 Fr 3. Mär 13:22:10 CET 2017 server 0:galera2:3306 is already ONLINE Fr 3. Mär 13:22:10 CET 2017 --> Checking READ server 0:galera3:3306, current status ONLINE, wsrep_local_state 4 Fr 3. Mär 13:22:10 CET 2017 Changing server 0:galera3:3306 to status OFFLINE_SOFT. Reason: making ONLINE writer node as read OFFLINE_SOFT as well because writers should not be readers Fr 3. Mär 13:22:10 CET 2017 --> Checking READ server 0:galera4:3306, current status ONLINE, wsrep_local_state 4 Fr 3. Mär 13:22:10 CET 2017 Changing server 0:galera4:3306 to status OFFLINE_SOFT. Reason: making ONLINE writer node as read OFFLINE_SOFT as well because writers should not be readers Fr 3. Mär 13:22:10 CET 2017 ###### SUMMARY ###### Fr 3. Mär 13:22:10 CET 2017 --> Number of writers that are 'ONLINE': 2 : hostgroup: 1 Fr 3. Mär 13:22:10 CET 2017 --> Number of readers that are 'ONLINE': 2 : hostgroup: 0 Fr 3. Mär 13:22:10 CET 2017 ###### Loading mysql_servers config into runtime ######
Wir haben also 4 Nodes, Galera3 und 4 aus Hostgroup 1 werden zu Writern und Galera1 und 2 aus Hostgroup 0 werden zu Readern. Galera3 und 4 sind auch in Hostgroup 1, dort werden sie aber Aufgrund des “writes should not be readers” Arguments deaktiviert.
Wichtig dabei ist:
“…ProxySQL uses a chain of query rules to figure out the routing. If none of the rules apply to a query, query will be routed to the default hostgroup for the user, which created the connection.”
Das ganze Konstrukt ergibt quasi nur Sinn wenn man auch mit query rules arbeitet. So kann man aber “bequem” read/write Anfragen skalieren und die volle Kapazität des Clusters nutzen.
So eine richtige Meinung zu ProxySQL habe ich noch nicht. Diese Sache mit den Hostgruppen finde ich jedenfalls ziemlich gut. Ob nun MaxScale oder ProxySQL die bessere Lösung ist kann ich nicht ohne weiteres sagen, sondern das hängt sicherlich von der jeweiligen Anforderung ab. Für genauere Aussagen müsste man sich das mal in einer Produktivumgebung anschauen und sich ausführlicher mit den beiden Tools beschäftigen. Die Lizenz von ProxySQL ist natürlich deutlich sympathischer.
Link:
http://www.proxysql.com/compare
Eigentlich ist es ja sonnenklar: Freifunk ist eine zivilgesellschaftliche Initiative, die der Allgemeinheit zugutekommt – also müssten Freifunk-Vereine doch gemeinnützig sein. Damit könnten dann Spenden an Freifunk-Vereine von der Steuer abgesetzt werden, und entsprechend könnten die Vereine mit höheren Spenden rechnen.
Doch leider stimmt das in der Rechtswirklichkeit bisher nicht. Der Anwendungserlass zur Abgabenordnung des Bundes (AEAO) schreibt vor:
“Internetvereine können wegen Förderung der Volksbildung als gemeinnützig anerkannt werden, sofern ihr Zweck nicht der Förderung der (privat betriebenen) Datenkommunikation durch Zurverfügungstellung von Zugängen zu Kommunikationsnetzwerken sowie durch den Aufbau, die Förderung und den Unterhalt entsprechender Netze zur privaten und geschäftlichen Nutzung durch die Mitglieder oder andere Personen dient.”
Darüber kam unter Freifunkern im ganzen Land Unmut auf, den wir auch in die Politik getragen haben. Und dort bewegt sich etwas: die Landesregierungen von Nordrhein-Westfalen und Thüringen haben einen Gesetzantrag in den Bundesrat eingebracht (der WDR berichtete vorab). Die Abgabenordnung soll so geändert werden, dass explizit Gemeinnützigkeit festgeschrieben wird für
“die Einrichtung und Unterhaltung von Kommunikationsnetzwerken, die der Allgemeinheit ohne Gegenleistung offenstehen (Freifunk-Netze). Als Gegenleistung in diesem Sinne gilt insbesondere die Erlaubnis zur Verwendung oder Weitergabe der Nutzerdaten für gewerbliche Zwecke.“
Auch die Niedersächsische rot-grüne Regierungskoalition möchte diesen Antrag unterstützen (Pressemitteilung der Göttinger Landtagsabgeordneten Gabriele Andretta, das Göttinger Tageblatt berichtet kurz).
Wie man sich denken kann, unterstützen wir die Gesetzesinitiative vorbehaltlos. Da offensichtlich ist, dass Freifunk im besten Wortsinne gemeinnützig ist, hoffen wir auf eine Unterstützung durch alle demokratischen Parteien. Wir bedanken uns bei den beteiligten Personen und Parteien für die Unterstützung.
Wir freuen uns auch besonders, dass der Gesetzantrag dadurch datenschutzfreundlich ist, dass er ausdrücklich eine Gemeinnützigkeit für Netze mit gewerblicher Datennutzung verbietet.
Tauchen bei ProxySQL in der Logdatei immer wieder Einträge in der Art
...MySQL_Monitor.cpp:1126:monitor_ping(): [ERROR] Server db7:3306 missed 3 heartbeats, shunning it and killing all the connections
auf, liegt es eventuell daran, dass kein mysql-monitor_username mit dem mysql-monitor_password auf den Nodes eingerichtet ist. Als Folge davon unterbricht ProxySQL die Verbindung zu den Nodes. Einfach mal bei ProxySQL schauen was dort eingetragen ist. Default ist monitor/monitor (jedenfalls in der 1.3.3er).
mysql> SELECT * FROM global_variables WHERE variable_name IN ('mysql-monitor_username','mysql-monitor_password','mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_history'); +--------------------------------+------------------+ | variable_name | variable_value | +--------------------------------+------------------+ | mysql-monitor_connect_interval | 60000 | | mysql-monitor_history | 600000 | | mysql-monitor_password | monitor | | mysql-monitor_ping_interval | 10000 | | mysql-monitor_username | monitor | +--------------------------------+------------------+ 5 rows in set (0.01 sec)
Ändern kann man das Passwort einfach mit
mysql> UPDATE global_variables SET variable_value="GEHIRNSABOTAGE" WHERE variable_name="mysql-monitor_password"; Query OK, 1 row affected (0.00 sec) mysql> LOAD MYSQL VARIABLES TO RUNTIME; Query OK, 0 rows affected (0.00 sec) mysql> SAVE MYSQL VARIABLES TO DISK; Query OK, 46 rows affected (0.00 sec)
und fertig. Der Monitoraccount muss natürlich auch auf den Nodes eingetragen werden. Dann sollten auch Tests mit Sysbench & Co funktionieren.
Über
http://proxysql.blogspot.de/2015/09/proxysql-tutorial-setup-in-mysql.html
bin ich drauf gekommen.
Das Göttinger Freifunk-Netz sieht im Moment ungefähr so aus:
Vielleicht hat sich der eine oder die andere schon mal gefragt, wie diese langen Linien auf der Karte zu Stande kommen. Für die zwischen Geismar und Rosdorf gibt es seit ein paar Wochen eine schöne Erklärung. Um die anderen zu erklären, muss man sich vor Augen führen, wie die Router auf der Karte platziert werden. Die Router ermitteln ihren Standort nicht selbst, stattdessen gibt es bei der Einrichtung eines Freifunk-Routers die Möglichkeit, Geo-Koordinaten anzugeben. Diese Daten werden dann im Freifunk-Netz bekannt gegeben und von der Kartensoftware genutzt. Wenn jetzt also ein Router seinen Standort wechselt, werden die Koordinaten nicht automatisch aktualisiert. Und wenn dann noch andere Freifunk-Router in der Nähe sind, werden eben diese langen Linien gezeichnet.
Die Koordinaten (und auch andere Einstellungen) zu ändern ist nicht schwer, hier gibt es eine Anleitung dafür.
Nach 5 Jahren Katzenabstinenz tauchte im September in unserer Filterblase unserem Freundeskreis ein kleiner Kater auf. Gestrandet in einem Garten, kein Muttertier weit und breit auffindbar, das Kitten hatten noch nicht mal die Augen auf. E. hat dem Kater das Leben gerettet, indem sie ihn rund um die Uhr mit der Flasche gefüttert hat. Wir stellten uns in die Reihe der Interessenten und plötzlich waren alle abgesprungen und es wurde ernst. Am 29. Oktober kam er zu uns – immer noch Flaschenkater. Von da an ging es stetig aufwärts.
+49 4643-38(764)27
67426532
Die optimalen Ergebnisse bei der ersten Freifunkfernverbindung von Rosdorf nach Geismar haben wir auf 5Ghz erreicht. An beiden Standorten kam dabei jeweils eine Ubiquiti Nanostation M5 mit 12 dbi Antennengewinn zum Einsatz. Wie man auf dem Screenshot sehen kann, wurde dabei eine Linkqualität von bis zu 98% erzielt. Wir experiementieren weiter…
Der Kirchturm in Rosdorf als Freifunkstandort bietet uns nun sehr gute Möglichkeiten, um die möglichen Reichweiten im Freifunk experimentell zu ermitteln. Dabei ist nun erstmal eine Strecke von 4578m bis nach Geismar überbrückt worden. Nun werden wir auf dieser Strecke unterschiedliche Router zum Einsatz bringen, um die Streckenqualität, den Datendurchsatz aber auch die Unterschiede zwischen den Geräten zu testen und zu vergleichen. Teilweise wurde bisher bei schwacher Linkstrecke ein Datendurchsatz von 2MB/s erzielt.
Wir sind weiter auf der Suche nach hohen Routerstandorten, um die Testreihe fortzusetzen.
Update 14.1.2016:
Die optimalen Ergebnisse bei der ersten Freifunkfernverbindung von Rosdorf nach Geismar haben wir auf 5Ghz erreicht. An beiden Standorten kam dabei jeweils eine Ubiquiti Nanostation M5 mit 12 dbi Antennengewinn zum Einsatz. Wie man auf dem Screenshot sehen kann, wurde dabei eine Linkqualität von bis zu 98% erzielt. Wir experimentieren weiter…
Über mein kleines Projekt Goetemp habe ich hier schon öfter geschrieben. Seit nunmehr über sieben Jahren sammle ich Wetterdaten aus Göttingen und spiele damit herum.
In den vergangenen Tagen habe ich das Backend für die Simple JSON Datasource für Grafana implementiert. Damit ist es nun möglich die Daten auch in Grafana zu visualisieren. Zuerst hatte ich überlegt die Daten auch gleich in eine InfluxDB zu schreiben, aber die Implementierung des Backends für die Datasource war erheblich schneller realisiert.
Mehr dazu habe ich auf der Goetemp Webseite geschrieben. Hier kann auch das Dashboard heruntergeladen werden. Zum spielen mit dem Datenbestand habe ich einen Snapshot freigegeben:
Leider ist unser Freund Alex letztes Wochenende gestorben. Alex war ein äusserst talentierter Hard- und Softwareentwickler, dem wir mehr zu verdanken haben, als man hier aufzählen kann. Unter anderem war er massgeblich am Aufbau des Göttinger Chaos Computer Clubs und Hackerspaces Neotopia in Göttingen beteiligt. Viele kennen ihn auch aus dem Freifunk Projekt und seinem Engagement bei den Funkamateuren und dem Arbeiter Samariter Bund. In letzter Zeit hat seine Arbeit am md380 Projekt weltweit Aufsehen erregt. Er hat sich immer dafür interessiert, was seine Freunde machen, sich alles zeigen lassen und neue Ideen und Motivation geliefert. Wenn man irgendwas für unsere Gemeinschaft getan hat, war meistens er es, der daran gedacht hat auch mal Danke dafür zu sagen. Er hat überall und vor allem in unseren Herzen seine Spuren hinterlassen. Wir vermissen Dich sehr und werden Dich nie vergessen.
When attempting to solve computational problems using accelerators (for example graphics processing units) a central challenge is to decompose the computation into many small identical problems. These small problems are then mapped to execution units of a given accelerator and solved in parallel.
The three household low level accelerator frameworks are CUDA, OpenCL and Metal. Next to mapping sub-problems to execution units they also allow for sub-problems to be grouped together. Groups of sub-problems have certain interesting properties:
Accelerator frameworks thus ask developers to define two layers of data decomposition: (1) the overall size of the problem space and (2) the size of a group of sub-problems.
Moving a problem from one accelerator framework to another or implementing a solution using multiple accelerator frameworks can be interesting. Frameworks are very similar but the devil is in the detail. There is no standard of mapping sub-problems to execution units. Both the naming conventions and the semantics are different:
CUDA | OpenCL | Metal | Aura | |
---|---|---|---|---|
level 1 | grid | global work | threads per group | mesh |
level 2 | block | local work | thread groups | bundle |
overall | grid * block | global work | threads per group * thread groups |
mesh * bundle |
I added to this table the naming convention and semantics for for the Aura library that is under development. The library wraps the three standard accelerator frameworks and exposes a single API for all three.