Przenieś Home Assistant z pojedynczego kontenera do odpornego stosu usług, najpierw zachowując działający stan Home Assistant, a następnie rozdzielając dane trwałe, usługi pomocnicze, ścieżki sieciowe, zależności uruchamiania i kopie zapasowe na wyraźnie określone role. Celem nie jest tworzenie większej liczby kontenerów, lecz ograniczenie ryzyka, że awaria jednej usługi wyłączy cały inteligentny dom.
Przeprowadzaj migrację etapami. Pozostaw oryginalny kontener i jego dane nietknięte, dopóki nowy stos nie uruchomi się, nie przejdzie testów lokalnego sterowania, nie przetrwa ponownego uruchomienia hosta i nie zostanie odtworzony z kopii zapasowej. Odporność stosu polega na tym, że można przewidzieć jego zachowanie podczas awarii, a nie na tym, że plik Compose jest najdłuższy.
Zamroź działający kontener i zmapuj wszystkie zależności
Przed zmianą topologii zapisz dokładny obraz i wersję Home Assistant, ścieżkę konfiguracji, zmienne środowiskowe, tryb sieci, mapowania urządzeń USB, zamontowane ścieżki i porty hosta. Następnie spisz wszystko, od czego Home Assistant zależy poza kontenerem: broker MQTT, baza danych, Zigbee2MQTT, odwrotne proxy, VPN, DNS, certyfikaty, kopie zapasowe i wszelkie udziały sieciowe. To będzie mapa migracji.
Oznacz każdą zależność jako stan autorytatywny, usługę możliwą do odbudowania albo infrastrukturę zewnętrzną. Konfiguracja Home Assistant i stan bazy danych są stanem autorytatywnym. Pobrany obraz kontenera można odtworzyć. DNS i routing mogą należeć do infrastruktury zewnętrznej. Taka klasyfikacja zapobiega częstemu błędowi: tworzeniu kopii definicji kontenera z pominięciem danych lub usługi potrzebnej do jego prawidłowego działania.
Oddziel dane trwałe od wymiennych kontenerów
Każdej usłudze przechowującej stan przypisz jawną ścieżkę trwałą lub nazwany wolumen, którego właścicielstwo i zasady tworzenia kopii zapasowych rozumiesz. Konfiguracja Home Assistant, stan MQTT, jeśli jest utrwalany, pliki bazy danych, certyfikaty i sekrety związane z automatyzacją nie powinny znajdować się wyłącznie w zapisywalnej warstwie kontenera. Obrazy i kontenery powinny dać się wymienić bez utraty stanu domu.
Odtwarzanie wolumenów wymaga także uwzględnienia aplikacji. przenośny schemat tworzenia kopii zapasowych i odtwarzania wolumenów Docker wyjaśnia, dlaczego kopiowanie surowych katalogów środowiska uruchomieniowego nie jest tym samym co przenośna kopia zapasowa. W przypadku baz danych dopasuj metodę tworzenia kopii do konkretnej bazy, zamiast zakładać, że kopia plików wykonana podczas aktywnego zapisu będzie spójna.
Świadomie dodaj testy stanu, zasady ponownego uruchamiania i zależności startowe
Zasada ponownego uruchamiania odpowiada na pytanie: „co środowisko uruchomieniowe powinno zrobić, gdy ten proces się zakończy?”. Test stanu odpowiada na inne pytanie: „czy usługa rzeczywiście jest gotowa do użycia?”. To nie są te same kwestie. Kontener bazy danych może działać, a jednocześnie wciąż odtwarzać dzienniki; broker MQTT może mieć uruchomiony proces, ale jeszcze nie akceptować ścieżki połączenia oczekiwanej przez Home Assistant.
Stosuj testy stanu w usługach, dla których można sensownie określić gotowość, a kolejność zależności dodawaj tylko wtedy, gdy usługa zależna rzeczywiście jej potrzebuje. Niezależny materiał dlaczego zasady ponownego uruchamiania i stan usługi są różnymi sygnałami pokazuje, dlaczego automatyczne restarty nie potwierdzają gotowości. Kolejny materiał schemat gotowości Compose dla usług zależnych jest przydatny, gdy trzeba uzależnić uruchomienie usługi od rzeczywistego stanu, a nie od stałego czasu oczekiwania.
Ogranicz domeny awarii za pomocą sieci, zasobów i kolejności konserwacji
Nie pozwól, aby skanowanie multimediów, migracja bazy danych lub eksperymentalny kontener zużyły wszystkie cykle procesora, całą dostępną pamięć RAM albo całą przestrzeń dyskową SSD aplikacji, gdy Home Assistant ma pozostać responsywny. Określ wymagania zasobów dla sąsiednich, obciążających usług, w miarę możliwości umieść nietrwałe pamięci podręczne z dala od krytycznego stanu i utrzymuj ścieżkę sterowania Home Assistant w stabilnej sieci lokalnej.
Oddziel także kolejność aktualizacji. Zmieniaj jedną warstwę naraz: host, środowisko uruchomieniowe kontenerów, Home Assistant, bazę danych, a następnie opcjonalne usługi pomocnicze. Jeśli wszystko zostanie zaktualizowane podczas jednego okna konserwacyjnego i stos przestanie działać, stracisz możliwość ustalenia, która warstwa spowodowała regresję. Materiał ZimaSpace topologia Home Assistant rozdzielająca role obliczeniowe, pamięci masowej i kopii zapasowych przedstawia szerszy podział ról związanych z obliczeniami, pamięcią masową, siecią i odzyskiwaniem danych.
Przełącz się dopiero po pomyślnym przejściu testów ponownego uruchomienia i odtwarzania
Uruchom nowy stos z kopią konfiguracji lub po kontrolowanym odtworzeniu. Przetestuj jeden lokalny pulpit, jedną lokalną automatyzację, jedną ścieżkę Zigbee lub Thread, MQTT, jeśli jest używane, dostęp do historii i bazy danych, powiadomienia oraz dostęp zdalny, jeśli jest częścią projektu. Następnie uruchom ponownie cały host — nie tylko kontenery — i sprawdź, czy kolejność uruchamiania oraz mapowania urządzeń nadal działają bez ręcznej ingerencji.
Na koniec udowodnij możliwość odzyskania danych. Odtwórz je na czystym tymczasowym celu albo przynajmniej odtwórz komponenty przechowujące stan w oddzielnej przestrzeni testowej. Kopia zapasowa warstwy zarządzania może być myląca, jeśli nie obejmuje wolumenów obciążeń; ten materiał dlaczego kopia zapasowa warstwy zarządzania może pomijać dane obciążeń pokazuje, że definicje stosu i dane aplikacji wymagają oddzielnego zakresu odzyskiwania.
- Wykonaj migawkę lub kopię zapasową działającego stanu pojedynczego kontenera.
- Zmapuj zależności i sklasyfikuj komponenty przechowujące stan oraz możliwe do odbudowania.
- Utwórz jawne ścieżki trwałe i definicje usług.
- Dodaj zasady dotyczące stanu, ponownego uruchamiania i zasobów tylko tam, gdzie rozwiązują rzeczywisty tryb awarii.
- Przetestuj sterowanie lokalne, urządzenia radiowe, bazę danych, ścieżkę zdalną, pełne ponowne uruchomienie i odtwarzanie.
- Usuń stary kontener dopiero wtedy, gdy nowy stos przejdzie wszystkie testy.
Odporność nie oznacza „większej liczby usług”. Oznacza stos, w którym Home Assistant można odbudować bez utraty stanu, zależności odzyskują działanie w ustalonej kolejności, obciążające usługi nie mogą zagłodzić płaszczyzny sterowania, a nieudaną aktualizację można odizolować zamiast zamieniać ją w niewyjaśnioną awarię całego domu.
Konfiguracja NAS i serwera
Więcej do przeczytania

Jak oddzielić dane aplikacji Home Assistant, pamięć podręczną i kopie zapasowe
Zachowaj trwały, nadrzędny stan aplikacji, upewnij się, że pamięć podręczna jest tymczasowa, zanim ją przeniesiesz, i przechowuj przetestowane kopie zapasowe poza domeną awarii Home...

Jak dostosować konfigurację Home Assistant dla użytkowników zdalnych i lokalnych
Zachowaj lokalne sterowanie Home Assistant niezależne od zdalnej warstwy brzegowej, a następnie dodaj bezpieczny zdalny dostęp z przewidywalnym działaniem DNS, tożsamości i przełączania sieci.

Jak nowe funkcje Home Assistant zmieniają architekturę domowego serwera
Nowe funkcje Home Assistant zmieniają role usług, sieci, danych i odzyskiwania. Zabezpiecz podstawową kontrolę, a następnie integruj lub izoluj każdą funkcję zgodnie ze zmierzonymi...

