Corestone

Panel sieci

Gdy kilka serwerów dzieli jedną bazę MySQL lub MariaDB (zobacz Bazę danych), panel każdego z nich pokazuje całą sieć. Logujesz się do jednego panelu, pod jednym adresem, i widzisz:

  • każdy serwer sieci: online, offline albo w konflikcie, z jego TPS i graczami;
  • graczy online na wszystkich serwerach, z serwerem, na którym jest każdy z nich;
  • zgłoszenia graczy ze wszystkich serwerów na jednej liście;
  • wykresy aktywności dowolnego serwera albo całej sieci.

Z panelu możesz wyrzucić gracza tam, gdzie gra: kick dociera na jego serwer, a za proxy Velocity wyrzuca go z sieci (zobacz Sieć Velocity).

Konfiguracja

  1. Skieruj każdy serwer na tę samą bazę MySQL lub MariaDB.

  2. Nadaj każdemu serwerowi nazwę w config.yml, najlepiej taką samą jak w velocity.toml:

    server-name: survival
    

    Nazwy używają a-z, 0-9, _ i -, najwyżej 32 znaki. Bez nazwy używana jest nazwa folderu serwera. Folder, który dzielą wszystkie serwery hostingu (container na Pterodactylu, data w Dockerze, server, minecraft), dostaje po sobie początek identyfikatora serwera, np. container-3f2a9c: ustaw server-name, żeby mieć czytelną nazwę. Zmiana wymaga restartu.

  3. Wystaw panel jednego serwera na internet (zobacz Panel przez HTTPS). Jeden publiczny panel wystarczy; pozostałe mogą zostać na prywatnych adresach albo mieć web.enabled: false.

  4. Utwórz konto Ownera raz, linkiem konfiguracji z dowolnego serwera. Konta i role są wspólne dla całej sieci, więc linki konfiguracji pokazane przez pozostałe serwery przestają działać, gdy tylko istnieje Owner.

Każdy serwer zgłasza się do bazy co 5 sekund. Serwer, od którego nie ma wieści przez 15 sekund, jest pokazywany jako offline, a jego gracze znikają z listy. Na pojedynczym serwerze panel działa tak samo; części dotyczące serwerów pojawiają się, gdy do bazy dołączy drugi serwer.

Konsola, czat i ogłoszenia w całej sieci

Panel jednego serwera dociera do pozostałych przez wspólną bazę, więc pozostałe serwery nie potrzebują własnego panelu (web.enabled: false jest tam w porządku). Między akcją a jej efektem na innym serwerze mija około 1–2 sekund.

  • Konsola: wybierz serwer na górze strony konsoli. Obowiązują te same uprawnienia, to samo odblokowanie 2FA (jedno odblokowanie obejmuje każdy serwer) i te same zablokowane komendy; serwer, który wykonuje komendę, jeszcze raz sprawdza listę blokad. Komenda dla innego serwera pokazuje „Wysłano na survival”, potem „Wykonano na survival”. Serwer, który nie odbierze jej w ciągu 30 sekund, pokazuje „survival nie odebrał polecenia” i komenda nie wykona się później.
  • Linie konsoli innego serwera trafiają do bazy (ac_console_lines) tylko wtedy, gdy ktoś ogląda konsolę tego serwera, i przechowywane jest tylko ostatnie 1000 linii z ostatnich 10 minut. Otwarcie konsoli innego serwera pokazuje jego ostatnie 200 linii.
  • Czat: czat na żywo i wyszukiwanie pokazują wiadomości każdego serwera z jego nazwą i można je zawęzić do jednego serwera. Wiadomość z panelu trafia na wszystkie serwery albo na jeden; serwery offline są pomijane, a panel mówi, dokąd trafiła. Wyczyść czat pyta, który serwer wyczyścić. Wyciszenie czatu, slow mode i filtry są wspólne dla całej sieci.
  • Ogłoszenia: każde ogłoszenie ma pole Serwery: wszystkie (domyślnie) albo te, które zaznaczysz. Rotacja, ogłoszenia zaplanowane i Wyślij teraz się do tego stosują.
  • Ustawienia są w bazie i są wspólne dla całej sieci; zmiana dociera do pozostałych serwerów w ciągu minuty.

Numery zgłoszeń

Każdy serwer numeruje własne zgłoszenia, więc lista pokazuje je z serwerem: „survival #12”. Zgłaszający zablokowany na jednym serwerze jest zablokowany na wszystkich, a informacja „twoje zgłoszenie zostało rozpatrzone” dociera do niego na tym serwerze, na którym akurat jest.

Konflikty i skopiowane foldery

Serwer pokazuje „Konflikt”, gdy dwa działające serwery używają tej samej nazwy albo tego samego identyfikatora. Identyfikator jest w plugins/AdminControl/server-id; folder serwera skopiowany z innego (szablon, kopia zapasowa) zachowuje ten plik i oba serwery zapisują wtedy ten sam wpis, mieszając swoje statystyki, czat i zgłoszenia. Konsola obu serwerów ostrzega o tym co 5 minut.

Żeby to naprawić, zatrzymaj kopię, usuń plugins/AdminControl/server-id w jej folderze i uruchom ją ponownie: utworzy nowy identyfikator. Przy konflikcie nazw nadaj jednemu z serwerów inne server-name.

Usunięcie serwera z sieci

Serwer wyjęty z sieci zostaje na liście jako offline. Owner może go usunąć: na karcie Serwery sieci na pulpicie, przyciskiem Zapomnij przy serwerze offline. Serwer znika z listy razem ze swoimi graczami online i czekającymi zadaniami; jego kary, zgłoszenia i historia zostają, a jego zgłoszenia pokazują „Usunięty serwer” zamiast nazwy. Działającego serwera nie da się zapomnieć (najpierw go zatrzymaj). Jeśli zapomniany serwer znów się uruchomi, wraca sam. Gracze nadal widoczni na serwerze, który od 2 minut jest offline (po awarii), znikają z listy sami.

Gdy baza nie działa

Panel pokazuje „Rejestr sieci niedostępny” i liczby swojego serwera. Pozostałe serwery widzą ten serwer jako offline po 15 sekundach. Wszystko wraca samo, gdy baza znów odpowiada.

Bany dalej działają: każdy serwer i proxy trzyma aktywne bany i wyciszenia w pamięci, odczytywane w całości co 5 minut i aktualizowane od razu przez kary nałożone na nim, a w ciągu około 2 sekund przez kary z pozostałych serwerów. Zbanowany gracz dostaje odmowę z pamięci, bez czekania na bazę. Gracz bez bana w pamięci wchodzi, gdy baza nie odpowie w ciągu 3 sekund, a log mówi „checked against the in-memory list”. Zdjęcie bana na innym serwerze dociera do pozostałych w ciągu około 2 sekund albo przy następnym pełnym odczycie (najwyżej 5 minut), gdy baza nie działa; do tego czasu pozostałe serwery dalej odmawiają temu graczowi.

Komu ufa sieć

Każdy serwer i proxy z loginem do wspólnej bazy ma pełne zaufanie: czytają i zapisują te same kary, konta i zadania, a zadanie zapisane przez jeden z nich (komenda konsoli z panelu, cofnięcie zmian) wykonują pozostałe. Dawaj login do bazy tylko serwerom, które kontrolujesz, używaj osobnego użytkownika bazy dla każdej sieci (nie wspólnego z innymi pluginami czy stronami) i trzymaj bazę poza publicznym internetem: w sieci prywatnej albo z use-ssl i ssl-ca (zobacz Konfigurację), gdy łączysz się między komputerami. Serwer przejęty przez podatny plugin dosięga wszystkiego, co jest w bazie.