Musimy sklonować usługę Linux, gdy jest ona aktywna, nie tylko dlatego, że nie możemy zrestartować komputera lub coś takiego; wynika to tylko z naszego specjalnego scenariusza (tak, już przeczytałem tę odpowiedź, ale różni się ona nieco od mojego klonowania działającego serwera Linux ).
Mamy węzeł obliczeniowy, można powiedzieć, że węzeł obliczeniowy NLP, który obsługuje na nim niektóre modele. Kiedy uruchamiamy węzeł (oczywiście z usługą), obliczenia będą strasznie powolne, dopóki nie nakarmimy go kilka razy. Nazywaliśmy to rozgrzewką.
Niestety, praca nad rozgrzewką zajmuje dużo czasu (być może nasze obliczenia zostały zakończone przed rozgrzaniem węzła).
Pojawia się więc problem: czy istnieje stabilny sposób na klonowanie na gorąco serwera Linux, aby utrzymać najwyższą wydajność węzła, abyśmy mogli sklonować i sprawić, że będzie on online w krótszym czasie?
Odpowiedzi:
Może nie możesz „sklonować na gorąco” całego serwera (możesz, ale tylko jeśli jest to maszyna wirtualna), ale możesz zamrozić i przywrócić pojedynczy proces za pomocą criu , Checkpoint / Restore w przestrzeni użytkownika.
Pozwala to zapisać stan wewnętrzny programu na dysku i zatrzymać program, a później przywrócić program do tego stanu z zapisanych plików.
Aby obsłużyć wybraną operację, możesz skopiować pliki reprezentujące zapisany program na inny serwer i tam go przywrócić.
criu wymaga najnowszego jądra z wkompilowanymi różnymi funkcjami, więc starsze dystrybucje Linuksa mogą nie działać. Możesz uruchomić
criu check
na konkretnej maszynie, aby ustalić, czy są spełnione wymagania wstępne.źródło
Może to być nieco poza zasięgiem twojego obecnego środowiska, ale standardowym sposobem na to jest wirtualizacja twojego serwera. Wiele hostów wirtualizacji (VMware, virtualbox itp.) Zezwala na „migawki”, które zapisują stan serwera, a następnie mogą być klonowane w nowych instancjach. Te nowe instancje będą miały dokładnie ten sam stan, co oryginalne, aż do uruchomionych procesów. Oczywiście chcesz mieć pewność, że uruchomione oprogramowanie będzie nadal działało poprawnie w środowisku wirtualnym (przychodzi na myśl obliczenie CUDA / GPU).
źródło
Pytanie, o którym wspominasz, odnosi się do linku http://www.linuxfocus.org/English/March2005/article370.shtml , który opisuje wszystkie sposoby, w jakie wyobrażałem sobie wykonanie twoich próśb.
To, że są tam dostępne opcje, nie ma większego znaczenia dla tego, co działa na serwerze. Musisz wziąć pod uwagę, że wszystkie pliki, które mogą ulec zmianie w procesie klonowania, mogą być niespójnymi plikami na komputerze docelowym. W tym poście podajesz, że mówią o bazach danych, a klonowanie go w ten sposób nie gwarantuje żadnego bezpieczeństwa integralności danych.
Nie jest do końca jasne, co miałeś na myśli „dopóki nie nakarmimy go kilka razy” .
Ale jeśli dobrze zrozumiałem, o co pytasz, musisz wziąć pod uwagę, że aby sklonować system, potrzeba czasu na skopiowanie i obliczenie zasobów.
Aby wykonać „ON / OF” lub lepiej środowisko aktywne / zapasowe, serwer musi być odpowiednio skonfigurowany w klastrze.
Przykro mi, jeśli nie jest to odpowiedź, której oczekujesz, ale masz do wyboru takie opcje.
źródło
Istnieje wiele potencjalnych problemów z tym, co próbujesz zrobić, i oczywiście, jak wiesz, najlepiej byłoby przełączyć serwer w tryb offline i sklonować go, gdy żadne dane nie są dynamicznie przechowywane.
Jednak to, co starasz się zrobić, jest całkowicie prawdopodobne, tak jak zrobiłem to wcześniej. Jeśli używasz
dd
, możesz sklonować pełny serwer na poziomie bloku na inny dysk lub inny serwer. Będzie to jednak wymagało dodatkowej konfiguracji na nowym serwerze i prawdopodobnie nie będziesz w stanie po prostu wyłączyć drugiego i włączyć nowego. Aby to zrozumieć, musimy wiedzieć kilka rzeczy na temat sprzętu i oprogramowania serwera.Po pierwsze, aby ustalić najlepszą strategię danych, warto wiedzieć, co jest regularnie aktualizowane. Czy masz serwer SQL, który dynamicznie się aktualizuje, ale ma zawartość statyczną? Alternatywnie, czy masz zespół programistów korzystających z systemu wywrotowego, takiego jak git wysyłający ciągłe aktualizacje danych do twoich treści? W zależności od tego, co aktualizuje, określi najlepszy pełny sposób działania.
Jeśli na przykład regularnie aktualizuje się tylko SQL, możesz migrować na nowy serwer, gdy ten serwer działa w następujący sposób:
dd
sklonować wszystkie dane nowego serwera.Może być konieczne tymczasowe przełączenie oryginalnego serwera w tryb offline, aby upewnić się, że nie przegapisz żadnych danych. Alternatywnie, aby mieć zero przestojów, możesz uruchomić drugi raz na żywo, skierować dns na nowy serwer, a następnie ręcznie zaktualizować wszystkie wpisy dns na nowym serwerze, aby w efekcie zero przestojów. Jest to bardziej kłopotliwe niż kilka minut przestoju, ale tworzenie kopii zapasowej SQL i przywracanie na nowym serwerze, ale może być konieczne do zerowego przestoju.
Jest to oczywiście tylko jeden przykład użycia i w zależności od konfiguracji i kilku zmiennych może być konieczne stworzenie własnej strategii migracji w oparciu o konkretny przypadek.
Drugi problem dotyczy konfiguracji sprzętowej serwera. Czy nowy serwer jest w 100% identyczny sprzętowo ze starym serwerem? Jeśli tak, to konfiguracja jest łatwiejsza. Jeśli jednak z drugiej strony jest to całkowicie inna konfiguracja sprzętowa, może być konieczne zaimplementowanie innej strategii, polegającej na wcześniejszym skonfigurowaniu drugiego serwera, a następnie utworzeniu kopii zapasowej wszystkich danych i baz danych SQL na pierwszy serwer i ręcznie migruj je, zmieniając odpowiednio konfigurację.
Migracja serwerów w żadnym wypadku nie jest trywialna, a aby wykonać udany ruch, musisz mieć głęboką wiedzę na temat serwerów lub personelu, który ma to samo. W każdym razie zdecydowanie zaleca się natychmiastowe wykonanie pełnej kopii zapasowej i przechowanie jej w trzecim źródle, nawet na komputerze lokalnym, aby w najgorszym przypadku (oba serwery uległy awarii i nieodwracalnie zginęły), nadal istniała kolejna kopia twoich danych do przebudowy serwerów.
Mam nadzieję, że to pomoże i powodzenia w przeprowadzce serwera!
źródło