Ten dokument został przetłumaczony przez AI. W przypadku niedokładności, proszę odnieść się do wersji angielskiej
Przed wdrożeniem aplikacji klastrowej należy wykonać następujące czynności przygotowawcze.
Aby aplikacja NocoBase działała w trybie klastrowym, wymaga wsparcia następujących wtyczek:
| Funkcja | Wtyczka |
|---|---|
| Adapter pamięci podręcznej | Wbudowany |
| Adapter sygnałów synchronizacji | @nocobase/plugin-pubsub-adapter-redis |
| Adapter kolejki wiadomości | @nocobase/plugin-queue-adapter-redis lub @nocobase/plugin-queue-adapter-rabbitmq |
| Adapter blokady rozproszonej | @nocobase/plugin-lock-adapter-redis |
| Alokator ID Workerów | @nocobase/plugin-workerid-allocator-redis |
Przede wszystkim prosimy upewnić się, że posiadają Państwo licencje na powyższe wtyczki (odpowiednie licencje można nabyć za pośrednictwem platformy usług wtyczek komercyjnych).
Inne komponenty systemowe, poza samą instancją aplikacji, mogą być wybrane przez personel operacyjny w zależności od potrzeb operacyjnych zespołu.
Ponieważ obecny tryb klastrowy dotyczy wyłącznie instancji aplikacji, baza danych tymczasowo obsługuje tylko jeden węzeł. Jeśli posiadają Państwo architekturę bazy danych typu master-slave, należy ją samodzielnie zaimplementować za pomocą oprogramowania pośredniczącego i zapewnić jej przezroczystość dla aplikacji NocoBase.
Tryb klastrowy NocoBase wymaga pewnego oprogramowania pośredniczącego do komunikacji i koordynacji między klastrami, w tym:
Gdy wszystkie komponenty oprogramowania pośredniczącego korzystają z Redis, można uruchomić pojedynczą usługę Redis w wewnętrznej sieci klastra (lub Kubernetes). Alternatywnie, można włączyć oddzielną usługę Redis dla każdej funkcji (pamięci podręcznej, sygnałów synchronizacji, kolejki wiadomości i blokady rozproszonej).
Zalecane wersje
NocoBase wymaga użycia katalogu storage do przechowywania plików związanych z systemem. W trybie wielowęzłowym należy zamontować dysk w chmurze (lub NFS), aby umożliwić współdzielony dostęp wielu węzłów. W przeciwnym razie lokalna pamięć masowa nie zostanie automatycznie zsynchronizowana i nie będzie działać prawidłowo.
Podczas wdrażania za pomocą Kubernetes, prosimy zapoznać się z sekcją Wdrożenie Kubernetes: Współdzielona pamięć masowa.
Tryb klastrowy wymaga użycia load balancera (równoważnika obciążenia) do dystrybucji żądań, a także do sprawdzania stanu i przełączania awaryjnego instancji aplikacji. Tę część należy wybrać i skonfigurować zgodnie z potrzebami operacyjnymi zespołu.
Na przykład, w przypadku samodzielnie hostowanego Nginx, należy dodać następującą zawartość do pliku konfiguracyjnego:
Oznacza to, że żądania są przekazywane przez reverse proxy i dystrybuowane do różnych węzłów serwera w celu przetworzenia.
W przypadku oprogramowania pośredniczącego do równoważenia obciążenia oferowanego przez innych dostawców usług chmurowych, prosimy zapoznać się z dokumentacją konfiguracji dostarczoną przez konkretnego dostawcę.
Wszystkie węzły w klastrze powinny używać tej samej konfiguracji zmiennych środowiskowych. Oprócz podstawowych zmiennych środowiskowych NocoBase, należy również skonfigurować następujące zmienne środowiskowe związane z oprogramowaniem pośredniczącym.
Gdy aplikacja działa na węźle wielordzeniowym, można włączyć tryb wielordzeniowy węzła:
Jeśli wdrażają Państwo pody aplikacji w Kubernetes, można zignorować tę konfigurację i kontrolować liczbę instancji aplikacji za pomocą liczby replik podów.
Niektóre kolekcje systemowe w NocoBase używają globalnie unikalnych identyfikatorów (ID) jako kluczy podstawowych. Aby zapobiec konfliktom kluczy podstawowych w klastrze, każda instancja aplikacji musi uzyskać unikalny ID Workera za pośrednictwem Alokatora ID Workerów. Obecny zakres ID Workera to 0–31, co oznacza, że każda aplikacja może jednocześnie działać na maksymalnie 32 węzłach. Szczegóły dotyczące projektowania globalnie unikalnych identyfikatorów znajdują się w @nocobase/snowflake-id.
Zazwyczaj powiązane adaptery mogą korzystać z tej samej instancji Redis, ale najlepiej jest używać różnych baz danych, aby uniknąć potencjalnych problemów z konfliktami kluczy, na przykład:
Obecnie każda wtyczka używa własnych zmiennych środowiskowych związanych z Redis. W przyszłości rozważymy ujednolicenie użycia REDIS_URL jako konfiguracji awaryjnej.
Jeśli używają Państwo Kubernetes do zarządzania klastrem, mogą Państwo skonfigurować powyższe zmienne środowiskowe w ConfigMap lub Secret. Więcej powiązanych treści znajdą Państwo w Wdrożenie Kubernetes.
Po zakończeniu wszystkich powyższych prac przygotowawczych, mogą Państwo przejść do Procesów operacyjnych, aby kontynuować zarządzanie instancjami aplikacji.