Einblick in das Promoter-System Stand: 29. Juni 2009 © Copyright 2009 ViaThinkSoft. Alle Rechte vorbehalten.
Jedem System die Möglichkeit geben, pro Minute eine koordinierte Transaktion durchführen (z.B. Webseitenupdates prüfen, diverse Benachrichtungen senden) Personal WebBase auch für Server verfügbar stellen, die keine Cronjobs verwalten können Zentrales Promoting-System, das alle öffentlich zugänglichen Kundenserver von extern jede Minute aufruft Der Service wird kostenlos auf der Webseite zur Verfügung gestellt Promoting? Die Idee dahinter!
Szenario A – Aktive Cronjobs über Shell Das System kann Cronjobs ausführen und ruft startpromoting.php jede Minute auf. Vorteile Ausfallsicherheit, zeitgerechte Bearbeitung und schnelle Benutzertransaktionen Szenario B – Aktive Cronjobs über Promoter Das System ist öffentlich zugänglich und wird von ViaThinkSoft oder einem anderen Server promoted. Nachteile Öffentlicher Zugang wird benötigt und es entsteht leichter Traffic Vorteile Zeitgerechte Bearbeitung und schnelle Benutzertransaktionen Szenario C – Passive Cronjobs Das System kann Transaktionen erst bei Benutzerzugriffen durchführen. Nachteile Langsame Benutzertransaktionen, keine zeitgerechte Bearbeitung Szenarien für koordinierte Transaktionen
System hochladen und einrichten Cronjobs einrichtbar? System online verfügbar? (ohne Passwortschutz) ViaThinkSoft Promoter registrieren Kann System online gestellt werden? Passive Cronjobs Aktive Cronjobs über Promoter Cronjob einrichten (Linux, Windows, Confixx…) Aktive Cronjobs über Shell System online stellen (Apache, DynDNS…) NeinJa Nein Vorgehensweise
Die Technik dahinter
Portal Datenbank KundenserverPromoter- Service Check-System Aufruf Daten Kontrolloberfläche Aktuelle Server Laufstatistik Ständige Online-Kontrolle der Funktionalität Online- registrierung Gültiges WebBase System? Gesamtübersicht Log- Daten Speichert
Regelungen für das Promoting Jedes aktuelle, öffentlich zugängliches Personal WebBase System kann von ViaThinkSoft promoted werden. Die Prüfung auf die Gültigkeit des Systems beim Registrieren auf der Portalwebseite ändert sich und passt sich ggf. neuen Programmversionen an. Die Administration behält sich das Recht vor, eine Webseite individuell sperren zu lassen, wenn sie z.B. für ViaThinkSoft einen zu hohen Datenverkehr verursacht oder sie kein Personal WebBase System mehr beeinhaltet. Das Promoting wird gestoppt, sobald das Downtime-Meter Minuten erreicht oder das Serverscript startpromoting.php exakt den Wert Stop promoting! zurückliefert. Das Downtime-Meter erhöht sich bei jedem erfolglosen Aufruf (z.B. DNS- Fehler, Ausgabe im startpromoting.php Script oder passwortgeschütztes Verzeichnis) und verringert sich bei jedem erfolgreichen Aufruf wieder, bleibt jedoch >= 0.
Realisierungskonzepte des ViaThinkSoft Promoters
Besonderheiten der Realisierung Auch unsichere SSL Verbindungen müssen aufgebaut werden (Inhalte sind ja nicht sensibel) – Jedes System muss promoted werden können! Alle Aktivitäten müssen asynchron sein und der Intervall von 60 Sekunden darf sich nicht verändern, auch wenn Server inaktiv sind und auf eine Anfrage nicht antworten. Alle Server müssen zum selben Zeitpunkt angesprochen werden, sodass sie selbst einen Intervall von 60 Sekunden erfahren.
Grundkonzept 60 Sekunden Intervall Alle Server abfragen startpromoting.php alle parallel aufrufen Promoter- Service
Nein Ja Aufruf erfolgreich und ohne Inhalt? Nein Ja Downtimemeter >= ? MySQL Verbindung herstellen MySQL Verbindung trennen Aktive Kundenserver abfragen ? Async. Prozessaufruf Parameter: id Webseite aufrufen ? MySQL Verbindung herstellen ? System deaktivieren MySQL Verbindung trennen Weitere Datensätze vorhanden? Splitter, Realisiert mit Perl Promoter-Service 1.0 Zeitstempel speichern Nein Ja Downtimemeter > 0? ? Downtimemeter verringern Zeitfeld der Tabelle aktualisieren Downtimemeter = 0, wenn <0 (alle Server) Aktiven Server mit Zeit- interval 50+ Sek. aus Tabelle lesen (Quelle: id-Parameter) Datensatz gefunden? Nein Ja ? Promoter, Realisiert mit PHP System-Crontabelle Socket-Verb. Internet Prozessstart 60 Sekunden MySQL Online- Registrierung Downtimemeter erhöhen
Änderungen in 2.0 Vollständige Umstellung zu einer eigenständigen C-Applikation
Nein Ja Aufruf erfolgreich und ohne Inhalt? Nein Ja Downtimemeter >= ? MySQL 60 Sekunden warten Async. Function Call MySQL Verbindung herstellen MySQL Verbindung trennen Aktive Kundenserver abfragen ? Async. Function Call Parameter: Struktur Webseite aufrufen ? Downtimemeter erhöhen Downtimemeter verringern, wenn >0 MySQL Verbindung herstellen ? System deaktivieren MySQL Verbindung trennen Weitere Datensätze vorhanden? Nein Ja Endlosschleifen- bedingung Felder als Struktur- Argument vorbereiten CURL Durchlaufthread HauptthreadPromotingthread Internet Eigenständige Daemon-Applikation, Realisiert mit C Promoter-Service 2.0 Online- Registrierung Zeitfeld der Tabelle aktualisieren
Änderungen in 2.1 Der Datentransfer wird limitiert und das Connection Timeout wird beachtet
Nein Ja Aufruf erfolgreich und ohne Inhalt? Nein Ja Downtimemeter >= ? MySQL 60 Sekunden warten Async. Function Call MySQL Verbindung herstellen MySQL Verbindung trennen Aktive Kundenserver abfragen ? Async. Function Call Parameter: Struktur Webseite aufrufen (max. 16 KB Content) ? Downtimemeter erhöhen Downtimemeter verringern, wenn >0 MySQL Verbindung herstellen ? System deaktivieren MySQL Verbindung trennen Weitere Datensätze vorhanden? Nein Ja Endlosschleifen- bedingung Felder als Struktur- Argument vorbereiten CURL Durchlaufthread HauptthreadPromotingthread Internet Eigenständige Daemon-Applikation, Realisiert mit C Promoter-Service 2.1 Online- Registrierung Zeitfeld der Tabelle aktualisieren
Änderungen in 2.2 Server können sich nun durch die Zeichenkette Stop promoting! auch selbst sperren lassen. Statistische Angaben Up-Counter und Down-Counter eingeführt.
Nein Ja Aufruf erfolgreich? Nein Ja Downtimemeter >= ? MySQL 60 Sekunden warten Async. Function Call MySQL Verbindung herstellen MySQL Verbindung trennen Aktive Kundenserver abfragen ? Async. Function Call Parameter: Struktur Webseite aufrufen (max. 16 KB Content) ? Downtimemeter und Down-Statistikfeld erhöhen Downtimemeter verringern, wenn >0; Up-Statistikfeld erhöhen MySQL Verbindung herstellen ? System deaktivieren MySQL Verbindung trennen Weitere Datensätze vorhanden? Nein Ja Endlosschleifen- bedingung Felder als Struktur- Argument vorbereiten CURL Durchlaufthread HauptthreadPromotingthread Internet Eigenständige Daemon-Applikation, Realisiert mit C Promoter-Service 2.2 Online- Registrierung Zeitfeld der Tabelle aktualisieren ? Inhalt? ? Ja Nein Stopp- Anfrage? Nein Ja
Änderungen in 2.3 Eine -Adresse ist nun ein Pflichtfeld (bei der Online-Eintragung). Online-Eintragung nun HTTPS gesichert (damit URL zum Personal WebBase-System nicht unverschlüsselt gesendet wird. Benutzer werden über Ereignisse (Zwangs- Sperrung bei DTM= oder Selbst-Sperrung; informiert sowie bei einem DTM, das durch teilbar ist, gewarnt ( 9 Warnungen vor endgültiger Sperrung; bei dauerhaften Downtime Warnung also alle 5000 Minuten = 3½ Tage).
Nein Ja Aufruf erfolgreich? Nein Ja Downtimemeter >= ? MySQL 60 Sekunden warten Async. Function Call MySQL Verbindung herstellen MySQL Verbindung trennen Aktive Kundenserver abfragen ? Async. Function Call Parameter: Struktur Webseite aufrufen (max. 16 KB Content) ? Downtimemeter und Down-Statistikfeld erhöhen Downtimemeter verringern, wenn >0; Up-Statistikfeld erhöhen MySQL Verbindung herstellen ? System deaktivieren MySQL Verbindung trennen Weitere Datensätze vorhanden? Nein Ja Endlosschleifen- bedingung Felder als Struktur- Argument vorbereiten CURL Durchlaufthread HauptthreadPromotingthread Internet Eigenständige Daemon-Applikation, Realisiert mit C Promoter-Service 2.3 Online- Registrierung Zeitfeld der Tabelle aktualisieren ? Inhalt? ? Ja Nein Stopp- Anfrage? Nein Ja User-Lock Forced-Lock ? Warnung DTM durch 5000 teilbar? Ja Nein
Promoter-User-Agents Derzeit vertretene User-Agents: – ViaThinkSoft Personal WebBase Promoter Service 2.3 (Promoter-Daemon) – ViaThinkSoft Personal WebBase Promoter Checker (Online-Eintragung) Derzeit vertretene X-Mailer: – ViaThinkSoft Personal WebBase Promoter Service 2.3 (Promoter-Daemon)
MySQL-Tabelle für die Server wbp_promoting – id – address – – active (0, 1) – last_promoting (datetime) – downtime_meter – stat_up_count – stat_down_count
Promoter-Quellcode Ein Teil des Quelltextes wird demnächst auf dokumentationsgründen Open-Source gemacht. Der Dienst bleibt jedoch ViaThinkSoft-Exklusiv
Interaktion mit Personal WebBase startpromoting.php existiert erst seit Version 0.73 (?) und leitet zum Modul weiter, das die regelmäßigen Tätigkeiten der Module abarbeitet Aufruf davor: modulseite.php?modul=core_cronjob&seite=run&silent=yes Ab 0.80: Stop promoting! kann auch vom System gesendet werden (nähere Informationen liefen noch nicht vor)
Weitere Planungen Derzeit keine