einblick in das promoter-system stand: 29. juni 2009 © copyright 2009 viathinksoft. alle rechte...
TRANSCRIPT
Einblick in das Promoter-SystemStand: 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 www.personal-webbase.de 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.
VorteileAusfallsicherheit, 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
VorteileZeitgerechte Bearbeitung und schnelle Benutzertransaktionen
Szenario C – Passive Cronjobs
Das System kann Transaktionen erst bei Benutzerzugriffen durchführen.
NachteileLangsame Benutzertransaktionen, keine zeitgerechte Bearbeitung
Szenarien für koordinierte Transaktionen
System hochladenund einrichten
Cronjobseinrichtbar?
System onlineverfügbar?
(ohne Passwortschutz)
ViaThinkSoftPromoter registrieren
Kann System onlinegestellt werden?
Passive CronjobsAktive Cronjobsüber Promoter
Cronjob einrichten(Linux, Windows, Confixx…)
Aktive Cronjobsüber Shell
System online stellen(Apache, DynDNS…)
Nein Ja
Ja
JaNein
Nein
Vorgehensweise
Die Technik dahinter
Portal
Datenbank
KundenserverPromoter-Service
Check-System
Aufruf
Aufruf
Daten
Kontrolloberfläche
Aktuelle Server
Laufstatistik
Ständige Online-Kontrolle der Funktionalität
Online-registrierung
GültigesWebBase System?
GesamtübersichtLog-Daten
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 50.000 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 SekundenIntervall
Alle Serverabfragen
startpromoting.phpalle parallel aufrufen
Promoter-Service
Nein Ja
Aufruf erfolgreichund ohne Inhalt?
Nein Ja
Nein Ja
Downtimemeter>= 50.000?
MySQL Verbindungherstellen
MySQL Verbindungtrennen
Aktive Kundenserverabfragen
?
Async. ProzessaufrufParameter: id
Webseite aufrufen
?
MySQL Verbindungherstellen
?
System deaktivieren
∪
∪
MySQL Verbindungtrennen
Weitere Datensätzevorhanden?
Splitter, Realisiert mit Perl
Pro
mot
er-S
ervi
ce 1
.0
Zeitstempelspeichern
Nein Ja
Downtimemeter> 0?
?
Downtimemeter verringern
∪
Zeitfeld der Tabelleaktualisieren
Downtimemeter = 0,wenn <0 (alle Server)
Aktiven Server mit Zeit-interval 50+ Sek. aus Tabellelesen (Quelle: id-Parameter)
Datensatz gefunden?
Nein Ja?
∪
Promoter, Realisiert mit PHPSystem-Crontabelle
Socket-Verb.
Internet
∞
Prozessstart
60 Sekunden
MySQL
Online-Registrierung
Downtimemetererhöhen
Änderungen in 2.0
• Vollständige Umstellung zu einer eigenständigen C-Applikation
Nein Ja
Aufruf erfolgreichund ohne Inhalt?
Nein Ja
Nein Ja
Downtimemeter>= 50.000?MySQL
∞
60 Sekunden warten
Async. Function Call
MySQL Verbindungherstellen
MySQL Verbindungtrennen
Aktive Kundenserverabfragen
?
Async. Function CallParameter: Struktur
Webseite aufrufen
?
Downtimemetererhöhen
Downtimemeterverringern, wenn >0
MySQL Verbindungherstellen
?
System deaktivieren
∪
∪
MySQL Verbindungtrennen
Weitere Datensätzevorhanden?
Nein Ja
Endlosschleifen-bedingung
Felder als Struktur-Argument vorbereiten
CURL
Durchlaufthread
Hauptthread Promotingthread
Internet
Eigenständige Daemon-Applikation, Realisiert mit CP
rom
oter
-Ser
vice
2.0
Online-Registrierung
Zeitfeld der Tabelleaktualisieren
Änderungen in 2.1
• Der Datentransfer wird limitiert und das Connection Timeout wird beachtet
Nein Ja
Aufruf erfolgreichund ohne Inhalt?
Nein Ja
Nein Ja
Downtimemeter>= 50.000?MySQL
∞
60 Sekunden warten
Async. Function Call
MySQL Verbindungherstellen
MySQL Verbindungtrennen
Aktive Kundenserverabfragen
?
Async. Function CallParameter: Struktur
Webseite aufrufen(max. 16 KB Content)
?
Downtimemetererhöhen
Downtimemeterverringern, wenn >0
MySQL Verbindungherstellen
?
System deaktivieren
∪
∪
MySQL Verbindungtrennen
Weitere Datensätzevorhanden?
Nein Ja
Endlosschleifen-bedingung
Felder als Struktur-Argument vorbereiten
CURL
Durchlaufthread
Hauptthread Promotingthread
Internet
Eigenständige Daemon-Applikation, Realisiert mit CP
rom
oter
-Ser
vice
2.1
Online-Registrierung
Zeitfeld der Tabelleaktualisieren
Ä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
Nein Ja
Downtimemeter>= 50.000?
MySQL
∞
60 Sekunden warten
Async. Function Call
MySQL Verbindungherstellen
MySQL Verbindungtrennen
Aktive Kundenserverabfragen
?
Async. Function CallParameter: Struktur
Webseite aufrufen(max. 16 KB Content)
?
Downtimemeter undDown-Statistikfeld erhöhen
Downtimemeterverringern, wenn >0;Up-Statistikfeld erhöhen
MySQL Verbindungherstellen
?
System deaktivieren
∪
∪
MySQL Verbindungtrennen
Weitere Datensätzevorhanden?
Nein Ja
Endlosschleifen-bedingung
Felder als Struktur-Argument vorbereiten
CURL
Durchlaufthread
Hauptthread Promotingthread
Internet
Eigenständige Daemon-Applikation, Realisiert mit CP
rom
oter
-Ser
vice
2.2
Online-Registrierung
Zeitfeld der Tabelleaktualisieren
?
Inhalt?
?
Ja NeinStopp-Anfrage?
Nein Ja
Änderungen in 2.3
• Eine E-Mail-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=50.000 oder Selbst-Sperrung; informiert sowie bei einem DTM, das durch 5.000 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
Nein Ja
Downtimemeter>= 50.000?
MySQL
∞
60 Sekunden warten
Async. Function Call
MySQL Verbindungherstellen
MySQL Verbindungtrennen
Aktive Kundenserverabfragen
?
Async. Function CallParameter: Struktur
Webseite aufrufen(max. 16 KB Content)
?
Downtimemeter undDown-Statistikfeld erhöhen
Downtimemeterverringern,wenn >0;
Up-Statistikfelderhöhen
MySQL Verbindungherstellen
?
System deaktivieren
∪∪
MySQL Verbindungtrennen
Weitere Datensätzevorhanden?
Nein Ja
Endlosschleifen-bedingung
Felder als Struktur-Argument vorbereiten
CURL
Durchlaufthread
Hauptthread Promotingthread
Internet
Eigenständige Daemon-Applikation, Realisiert mit CP
rom
oter
-Ser
vice
2.3
Online-Registrierung
Zeitfeld der Tabelleaktualisieren
?Inhalt?
?
Ja NeinStopp-
Anfrage?
Nein Ja
E-Mail:User-Lock
E-Mail:Forced-Lock
?
∪
E-Mail:Warnung
DTM durch5000 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– email– 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