GameServer-Statusabfrage korrigieren/verbessern
Dieser issue besteht aus zwei Teilen.
Teil 1: Anscheinend nimmt Easy Wi an, dass mehrere GS down sind, wenn einer failt. Das könnte mit einer Inkompatibilität zu GameQ zusammenhängen. C&P aus Gitter:
@fsedarkalex 08:59 Ich hab nochmal ne Frage... Meine Gameserver stürzen lt. Easy-Wi alle gleichzeitig ab.m Also ich bekomme zum sleben Zeitpunkt für alle Gameserver Mails, dass diese wegen Absturz neu gestartet wurden. Woran kann das liegen? Wo könnte ich weitere Infos finden? Ich glaube nciht dass rien zufällig alle GS gleichzeitig abstürzen... Ich denke eher an einen Erkennungsfehler... [...] @ulrichblock 14:01 Könnte auf ein Problem in der Query Libary GameQ sein. Es werden N Server auf einmal angefragt. Könnte sein, dass wenn einer fehl schlägt auf einmal alle als Defekt gelten [...] @MadMakz 17:29 das kann in der tat an gameq liegen. mit unter wird ein throw error geworfen welches das loop unterbricht. hatte die problematik beim erstellen eines custom Protokoll welches aber nicht an meinem protokoll addon sondern in der logik vom gameq kern liegt. zum beispiel ist zeile 120 in gameq/Query/Native.php solch ein loop-breaker https://github.com/easy-wi/developer/blob/master/third_party/gameq/GameQ/Query/Native.php#L120 @ulrichblock @fsedarkalex
Teil 2: Easy-Wi sieht Erreichabrkeitsprobleme Netzseitig ebenfalls als Crash an und startet so u.U. funktionierende Server neu und generiert in Ausnahmefällen E-Mail-Fluten: Hierzu Copy&Paste aus dem Gitter:
@ulrichblock könnte man auch ne Erreichbarkeitskontrolle zum Master hin mit einbauen wenn ihrs eh schon anfasst? Einfach nur um die Anwender nciht zu verunsichern wenn eigentlich gar nix ist sondern nur eine Störung zwischen den Servern vorliegt. Sowas sollte eigentlich cniht passieren, aber vorgestern gab es eine Netzwerkstörung im RZ der dafür gesorgt hat, dass alle GameServer jeweils ca 10 E-Mails verschickt haben, weil die Server über 2h hinweg immer mal kurz sich gegenseitig nicht gesehen hatten. Einen Absturz gab es allerdings nicht.
Mein Gedankengang wäre: Vor dem Check der GameServer einmal kurz alle GameMaster per TCP-connect auf den SSH-Port zu checken (Ping ist hier ungeeignet weil diese verworfen werden dürfen bei Hochlast) BEsser noch, falls du die GameServer gruppiert nach AMstern scannst, direkt vor dem Block des jeweiligen Masters. Ist der Master nicht erreichbar, so sollten die Checks übersprungen werden (Ggnf ein Logeintrag).
Ein guter Provider monitort seine Server auf Erreichbarkeit hin also ist eine Mail hier unnötig. Eine Privatperson wird das garnicht oder selbst merken, dass der Server grad weg ist und auch i.d.R. nur einen Server haben also stört es hier auch nicht.
Zum Ersten: Ein recheck per entry on catch error würde das Problem wohl lösen. Ist unschön, aber man ist ja von GameQ abhängig.
Zum Zweiten: Ein Ping ist in der Tat technisch das schlechteste für so eine Problemstellung. Oft kann man pingen, wenn der Userland schon teilweise geladen ist, aber kein einziger System Service läuft bzw. gecrasht ist. Dann hat man Netzwerke, die Broadcasts und Ping verhindern (gerade in abgesicherten DMZ und Corporate Network).
Frage ist, was man macht, wenn ein SSH Deamon als solcher nicht erreichbar ist. Alle GS als abgestützt markieren? Skippen?
Wie ist die Fehlertoleranz bei dir eingestellt? Im Admin Einstellungen Bereich, kann man den Recheck definieren. Nur wenn ein GS mehr als diese Zahl hintereinander nicht erreicht werden kann, wird ein Restart getriggert.
Ich hab damit auch immer Probleme, dass die Server als Offline angezeigt werden. Wenn ich den automatischen Neustart ausschalten, dann kann man den Server noch benutzen. Sonst startet er etwa 3 - 4 mal am Tag neu.
Vielleicht doch ein EWI client auf jedem Gameroot der lokal alles überwacht und einen Feed bereitstellt oder sogar selbst das WI triggert mit "hey, da ist nen server down". das würde das ganze als Nebeneffekt dann sogar in beinahe Echtzeitbereich bringen und müsste nicht auf einen Cron warten.
Um sicherzustellen das nicht einfach der Daemon abgestürtzt ist könnte man weiterhin das WI auch noch die Gameserver Ports abfragen lassen wie gehabt.
@MadMakz dann wohl eher einen alive-check des daemon durch ansprechen desselben. Nciht der GameServer. Wennd er Daemon weg ist Meldung an den Admin. Oder aber blind auf den Daemon vertrauen. Der Privatperson ist das relativ egal, falls das mal passiert und der Hoster wird den Daemon selbst überwachen (Nagios etc)