Beiträge von gamerzhost.de

Aktuell führen wir noch einige Anpassungen durch, das Forum wurde jedoch bereits live geschaltet.

    nun genau kann ich da nicht mitreden, ich habe das Script heute mal just4fun zusammengebaut da mich das mit der Playerzahl gereizt hat. Wir Regeln das anders, haben aber bei knapp 1000 Gameserver eine andere Verarbeitung wie andere.


    Unter Windows machen wir die Updateanfrage via Steamcmd im Takt von 15 Minuten. Genauso wie mit den Mods unter Steamcmd. Mich hatte an dem Thema das mit der Playerzahl gereizt.

    Nun wenn Du das fest stellen tust, ja gut. Hier war eher die Herrausforderung die Playerzahl. Diese kannst entweder mit zusätzlicher Software checken, oder Du suchst Dir einen Weg um das zu vermeiden, ich halte das vermeiden für wichtiger und versuche erst immer die vorhandenen Mittel zu nutzen, erst wenn das nicht geht, greife ich auf zusätzliche Tool /Pakete zurück.




    Zitat

    Zumal du das update ja sowieso über steamcmd fahren müsstest?

    ja aber nur dann wenn es wirklich ein Update gibt, nicht im 15 Minutentakt um die Version ab zu fragen.

    Ich versuche halt immer alles zu vermeiden was Steamcmd einsetzt außer es ist notwendig, da wenn mehrere Instanzen Steamcmd immer wieder laufen lassen, die Perfomance des Roots unter Linux gut negativ beeinflussen.

    Ich habe Dir mal kutz etwas einfaches aufgebaut



    eventl noch aussortieren das bei



    Code
    if echo "$screen2" | fgrep -i "say : Your server needs to be restarted in order to receive the latest update" > /dev/null 2>&1 ; then


    keine weitere Aktion erfolgt.


    Natürlich ist das nur eine kleine grobe Richtung und muss verfeinert werden.


    das ganze kannst direkt vor dem Serverstart im Startscript aufrufen lassen, dann brauchst ned mal einen Cron dafür. Das letzte Sleep 20 ist die Zeit alle wieviel Minuten er den Check wiederholen soll.

    wenn DU direkt in dem Screen status eingibst hats du folgendes im Screenlog stehen


    status
    hostname: ! GamerzHost.de - Made in Germany !
    version : 1.35.7.6/13576 475/6744 secure [G:1:57347]
    udp/ip : 82.211.62.199:27015 (public ip: 82.211.62.199)
    os : Linux
    type : community dedicated
    map : de_dust2
    players : 0 humans, 0 bots (20/0 max) (hibernating)


    so solltest DU auch ohne große zusätzliche Software dann in dem Falle die anwesende Playerzahl auslesen können.

    das prüfen nach Updates geht eigentlich einfach einacher, CSGO schreibt in die Screenlog.0 etwas von ... latest updates ... wenn ein Update ansteht. Daher einfach nur mit grep den Screenlog checken. genauso wenn Du im Screen bist kannst Du das auch mit der Playerzahl machen. Sind keine Spieler drauf reicht ein Quit.

    Zitat von Hosterstream

    Wie wäre es mit einer Art Standby Lösung...TS 3 Server wird bestellt mit z.B. 50 Slots ...
    Nach 2-3 Wochen geht plötzlich schon niemand mehr online...
    Server wird automatisch auf z.B. 5 Slot reduziert.

    zu der Sache, ich habe mich in letzter Zeit mit Teamspeak sehr oft unterhalten, da wurde mir unter anderen auch mitgeteilt das Hoster beim runterschrauben der Slotzahl bei Inaktivität oder mangelnder Nutzung auf einen vom Kunden gemieteten und gezahlten TS gegen die Lizenzregeln verstoße. Dynamische Slotzahl Regulierung nennen die so etwas glaube ich. Muss wo schon öfters mal vorgekommen sein.


    Also lieber noch mal bei denen Anfragen, bevor hier jemand wegen Mangels TS Lizenz schließen muss.

    damit habe ich mich jetzt weniger beschäftigt, ich habe mich mehr mit dem PDNS Hauseigenen Interface beschäftigt und diese Abläufe umgesetzt. Meines Wissens gibt es eine Api für die Nutzung unter Plesk bind, habe mir diese aber nicht weiter angeschaut. Wie aber schon gesagt habe ich diesen Bug nur beim löschen einer Zone bemerkt und das auch nur weil mich ein netter Mensch welcher PDNS nutzt drauf aufmerksam gemacht hat, da er das selbige Problem hat.
    Eingesetzt haben wir es aktuell als TSDNS Server wo die Kunden halt via Mausklick Ihre Subdomains eintragen können, und der SRV EIntrag und A Eintrag via Mausklick umgesetzt werden. Funktioniert seit bestehen anstandslos. Mit der Ticketersparnis hat sich schon die Umsetzung gelohnt.


    Aber zurück zum eigentlichen Beitrag bitte.

    Powerdns syncronisiert wenn die serial in dem soa Eintrag sich geändert hat und zur serial im Domaineintrag unterschiedlich ist. Wird die Domain auf dem Master gelöscht gibt es keine Unterschiedlichen Einträge mehr und es bleiben immer Reste der Domain auf den Slaves. Das führt normal zu keiner Komplikation. Ich weiß aber nicht ob es zu Problemen führen kann wenn man eine Domain löscht und wieder neu registriert, daher ist es mir lieber wir halten die Slaves auch sauber.

    ITHosting Kraft

    Dir mal Danke, die Änderungen sind ja reine SQl Abfragen daher relativ Simple, man muss nur verstehen auf welcher Grundlage die jeweiligen Slaves eine Snycronisierung vornehmen, mit einer einfachen Änderung des Eintrages nicht. dazu muss nach jeder Änderung der SOA Eintrag angepasst werden, nach der Anpassung machen dann auch die Slaves das Update. Beim Löschen wurde noch festgestellt das Power DNS aus dem Slaves nichts mehr löscht, was auch bei Poweradmin der Fall ist, daher wurde die Löschung entsprechend angepasst, das das Modul die eingetragenen Slaves gleich mit verarbeitet.


    Domain Api: die Api ist nun mal von den jeweiligen Provider abhängig, über welchen Ihr die Domain bucht. Ich werde hier die Api von Internet X zubauen, welche sich aber bei Bedarf austauschen lässt, nur der Funktionsaufruf muss der gleiche bleiben.

    Jap, nun wie wichtig es ist steht mal nicht zur Frage, allerdings nutzt nicht jeder Plesk etc. und wir möchten dem Kunden die Möglichkeit geben seine DNS selbst und Unabhängig vom Support anpassen zu können.


    Eigentlich habe ich mit dem Modul angefangen da Teamspeak den TSDNS Support einstellt bzw. eingestellt hat. Sprich für die vorhandene Software wird es keine Updates mehr geben. Da wir daher gerade Erfahrung mit PowerDNS und deren Bugs gesammelt haben, macht es Sinn da gleich weiter zumachen, bevor die Erfahrungen nicht mehr frisch sind.

    Da ich aktuell ein meiner wenigen Freizeit ein Modul für PowerDNS schreibe und der Adminbereich so gut wie steht, frage ich Euch welche der vielen möglichen Einträge Ihr als am wichtigsten erachtet. Also


    A
    AAAA
    NS
    CNAME
    MX
    SRV
    TXT


    usw.

    nun wir haben es seit 5 Jahren so das der Gameserver immer beim GS Serversstart die Dateien packt und der Fastdl Server immer nur alle 5 Min die bz2 syncronisiert. Zusätzlich wird beim Serverstart eine fastdl.cfg generiert welche beim Serverstart geladen wird. damit hat der Kunde dann überhaupt nix mehr zu tun.

    Da es immer wieder Beiträge gibt, wo User mit Windows haben, anbei mal die wichtigsten Sachen.



    Wie setze ich in einer Batch Parameter


    somit kann ich den Gameserver mit z.b.



    start.bat gsip gsport gsplayer , %var1% ist dann die IP, %var2% der Port, %var3% die Playerzahl usw.




    Wie lese ich die Pid eines Gameserverprozesses aus:



    Beispiel für Ark:

    Code
    SET line=%var%
      SETLOCAL ENABLEDELAYEDEXPANSION
      ECHO !line:\=\\
      ENDLOCAL
      set vara=!line:\=\\!
    for /f "usebackq tokens=2 delims==" %%a in (`wmic process where ^(ExecutablePath^="%vara%ShooterGame\\Binaries\\Win64\\ShooterGameServer.exe"^) get processid /value`) do (
    set PID=%%a   
    )


    Wie stoppe ich den Gameserver anhand der oben gewonnenen PID:



    Es gibt 3 Möglichkeiten:




    Code
    TASKKILL /PID %PID%


    oder

    Code
    TASKKILL /PID %PID% /F


    oder

    Code
    SET line=%var%
      SETLOCAL ENABLEDELAYEDEXPANSION
      ECHO !line:\=\\
      ENDLOCAL
      set vara=!line:\=\\!
    WMIC PROCESS WHERE ExecutablePath="%vara%ShooterGame\\Binaries\\Win64\\ShooterGameServer.exe" delete


    Da Spiele wie Ark oder Rust beim beenden noch Daten in die Map schreiben müssen sollte erst die Methode 1 gewählt werden. Danach macht man mit

    Code
    ping -n 5 127.0.0.1 > NUL


    5 Sekunden Pause und schiebt um sicher zu gehen noch eine der letzten beiden Möglichkeiten hinterher.




    Start eines Gameservers:

    Code
    set /A var9=%var2% + 1    // Queryport berechnen
    set /A var10=%var2% + 5  //Rconport berechnen
    cd %var%
    start /REALTIME ShooterGameServer.exe "%var%ShooterGame\ShooterGame.uproject" "TheCenter?MULTIHOME=%var1%?Port=%var2%?QueryPort=%var9%?RCONPort=%var10%?MaxPlayers=%var3%?bRawSockets?listen?" -nosteamclient -servergamelog  -game -server -log
    Zitat

    Das einzigste was wir als "kleine und mittlere Hoster" bewirken ist einen gewissen Preisdruck bei den großen das war's dann aber auch...


    Der Preisdruck, das war mal, schaust Du dir die aktuellen Preise an, machen die den....., Man sollte sich die Frage stellen ob es am Preis liegt. Schaust Du dir unsere Preise an, sicherlich nicht.

    Zitat

    hast du denn am Release etwas vom Kuchen ab bekommen???


    jap, jede Menge

    Zitat

    Ob man die Server Versionen bei einem update restarten muss? ich kann es nicht sagen aber ich wage es zu bezweifeln das man diese bei fast jedem update neu starten muss...




    Vielleicht kannst du ja was dazu sagen? sofern du Windows in der Server Version verwendest...


    Es gibt Fernwartungstools, welche den Job machen und das in der Nacht. Wird Neustart Notwendig, kann der in der Nacht passieren, hat man dazu die Startscripte so aufgebaut, das diese bei Start einen Link im Autostart setzen und beim Stoppen wieder löschen, merken es die meissten Kunden auch kaum.