PRYWATNA INFRASTRUKTURA / BEZ WYMAGANEJ IDENTYFIKACJIPrzeczytaj doktrynę prywatności
Notatki terenowe KoalaVPS

Uczyń agenta usługą, a nie zapomnianym terminalem.

Uruchamiaj długotrwałe procesy robocze z jawnym stanem, ograniczonymi uprawnieniami i planem odzyskiwania.

Spakuj workera

Użyj obsługiwanego środowiska uruchomieniowego, przypiętych zależności i menedżera usług lub kontenera. Skonfiguruj limity restartów i dedykowanego użytkownika usługi. Przechowuj prywatne dane uwierzytelniające dostawcy w chronionej konfiguracji poza publicznymi plikami aplikacji.

Zapisz postępy, zanim działania będą miały znaczenie

Używaj trwałej kolejki lub bazy danych dla zadań. Przypisz unikalny identyfikator operacji, rejestruj żądania zewnętrzne i uzgadniaj niepewne wyniki. Ponowne uruchomienie nie powinno wysłać drugiego e-maila, utworzyć drugiego zamówienia ani obciążyć dwa razy.

Dodaj przydatną obserwowalność

Monitoruj ukończenie zadań, wiek kolejki, wskaźnik błędów i koszt, zamiast sprawdzać tylko, czy proces istnieje. Utrzymuj dzienniki na tyle małe, by można je było przeglądać, i redaguj tokeny, prompty i dokumenty, których nie trzeba przechowywać.

Ustaw wyraźny limit

Ogranicz wydatki na model, współbieżność przeglądarki, czas działania i liczbę ponowień. Utrzymuj łatwy przełącznik pauzy i ścieżkę przeglądu przez człowieka dla działań o istotnych skutkach. Mniejszy, dobrze obserwowany worker jest łatwiejszy do zaufania niż nieograniczony.

Użyj supervisora i przemyślanego harmonogramu

Systemd i Docker to typowe sposoby na utrzymanie procesu po rozłączeniu terminala. Dla usługi systemd Type=exec może zgłaszać błąd wykonania bezpośredniej niż proste uruchomienie w tle, a Restart=on-failure może ponownie uruchamiać błędy według ograniczonej polityki. Zadania zaplanowane powinny unikać nakładających się uruchomień. Ustaw jawnie katalog roboczy, użytkownika usługi i środowisko. Przykład zakłada, że użytkownik koala-agent, środowisko wirtualne, moduł workera i prywatny plik środowiska już istnieją; dostosuj je przed zainstalowaniem jednostki.

  • Użyj dedykowanego konta usługi
  • Ustaw opóźnienie restartu i limit awarii
  • Sprawdź poprzedni stan zadania przed rozpoczęciem zaplanowanego uruchomienia
[Unit]
Description=Example agent worker
After=network-online.target

[Service]
Type=exec
User=koala-agent
WorkingDirectory=/opt/koala-agent
EnvironmentFile=/etc/koala-agent.env
ExecStart=/opt/koala-agent/.venv/bin/python -m worker
Restart=on-failure
RestartSec=10
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

Ustaw dzienny budżet i granicę duplikatów

Ustaw dla procesu roboczego maksymalną liczbę żądań, limit wydatków i limit czasu wykonania. Używaj trwałego rekordu idempotencji dla działań wpływających na świat zewnętrzny. Udane kliknięcie w przeglądarce może nastąpić, zanim proces otrzyma odpowiedź; sprawdź stan zewnętrzny przed ponowną próbą. Montowanie sekretów w Docker Compose może utrzymać sekret poza obrazem, ale uprawnienia i aplikacja korzystająca z sekretu nadal wymagają przeglądu.

Nadaj zadaniu cyklicznemu jawną politykę nadrabiania zaległości

Użyj długotrwałej usługi dla trwałego procesu roboczego kolejki oraz usługi oneshot wyzwalanej timerem dla ograniczonego zadania zaplanowanego. W przypadku timera kalendarzowego systemd Persistent=true może wyzwolić jedno pominięte uruchomienie po przestoju; nie odtwarza całego zaległego zakresu zadań biznesowych. Zdecyduj, czy takie nadrobienie jest pożądane. RandomizedDelaySec może rozłożyć starty, a dzierżawa na poziomie aplikacji zapobiega przetwarzaniu tego samego zaplanowanego zadania przez dwie repliki.

  • Zapisz zamierzoną strefę czasową i sprawdź następne czasy uruchomienia przed włączeniem harmonogramu.
  • Ustaw termin wykonania zadania krótszy niż interwał, który nie może się nakładać, albo użyj trwałej dzierżawy z wygaśnięciem i własnością.
  • Zadanie powinno wybierać zaległą pracę z zapisanego stanu, zamiast zakładać, że każde poprzednie zdarzenie timera zostało wykonane.
  • Sprawdź zainstalowaną wersję systemd przed użyciem dyrektywy z najnowszego podręcznika.
# Read-only checks after creating your own matching units.
systemctl list-timers --all
systemctl status koala-agent.service
journalctl -u koala-agent.service --since today --no-pager

Odróżnij pętlę awarii od zatrzymanego workera

Polityka restartów może odzyskać nieudany proces, ale powtarzanie nieprawidłowych danych uwierzytelniających lub zepsutej migracji co kilka sekund czyni błąd głośniejszym. Ogranicz uruchomienia usługi i alarmuj przy powtarzających się błędach. Działający proces może też być zawieszony: mierz wiek najstarszego zadania i ostatniej ukończonej operacji. Przetestuj awarię API, pusty dysk i zatrzymanie procesu za pomocą jednorazowych zadań, a następnie sprawdź, czy trwały stan zapobiega duplikowaniu działań zewnętrznych.

  • Ustaw budżet dostawcy i limit czasu żądania w aplikacji, a także granicę CPU/pamięci w środowisku uruchomieniowym.
  • Kontenery Docker nie mają użytecznego limitu pamięci specyficznego dla obciążenia tylko dlatego, że są kontenerami; skonfiguruj i przetestuj limity celowo.
  • Przechowuj sekret poza obrazem i publicznym drzewem, a następnie sprawdź, czy logi awarii i diagnostyka go redagują.
  • Zachowaj ręczną drogę zatrzymania i wymagaj odpowiedniego przeglądu dla wydatków, zapisów produkcyjnych lub wiadomości zewnętrznych.
SKONFIGURUJ SWOJĄ INFRASTRUKTURĘ

Przejmij kontrolę.
Wdrażaj na własnych zasadach.

Bez dokumentów tożsamości. Pełny dostęp administratora. Rozliczenia natywne dla kryptowalut.