Migracja serwerów: najbardziej wydajny sposób


10

Miałem za zadanie migrację jednej z naszych witryn między serwerami (dwoma różnymi hostami). Oba środowiska są linuksowe.

Witryna przesyła strumieniowo wideo, więc serwer jest obecnie wypełniony plikami multimedialnymi (obrazami i wideo). Moja pierwsza myśl była taka, że ​​użyjemy rsycnc do przeniesienia wszystkiego, ale chcę być tak wydajny, jak to możliwe i robić wszystko tak szybko, jak to możliwe. Pomyślałem, że niektórzy z was mogą mieć porady, jak przyspieszyć ten proces lub czy rsync jest tu nawet właściwym wyborem.

Z góry dziękuję. Przepraszamy za moją ograniczoną wiedzę na temat sysadmin ...

EDYCJA: Działamy na podstawowym stosie LAMPY (centos) i przechodzimy do czerwonego kapelusza na regale).


1
Zdefiniuj „wydajny” w tym kontekście. Szybki, niezawodny, solidny czy co? I nie, nie możesz mieć ich wszystkich.
John Gardeniers

1
rsync jest prawie na pewno najlepszym wyborem do migracji danych; nadal istnieje konfiguracja i możliwe bazy danych itp., o których wspominali inni, i które mają inne lepsze opcje.
fukawi2

Odpowiedzi:


12

Wiele jest zaangażowanych w „migrację aplikacji z jednego serwera na inny” - naprawdę nie ma sposobu, abyśmy mogli odpowiedzieć na to wyczerpująco dla wszystkich przypadków użycia. TY możesz odpowiedzieć dość kompleksowo dla konfiguracji chociaż, jeśli podejście je systematycznie:

  1. Zrób listę wszystkich potrzebnych aplikacji.
    • Serwer internetowy?
    • Serwer bazy danych?
    • Serwer poczty elektronicznej?
    • Język skryptowy (PHP, Ruby / Rails, Perl, coś jeszcze)?
    • Programy pomocnicze (ImageMagick itp.)?
  2. Zrób listę ważnych elementów konfiguracji.
    • Adres IP, maska ​​sieci, brama itp.
    • Serwery DNS
    • Elementy specyficzne dla aplikacji (katalogi tymczasowe itp.)
  3. Weź listy z (1) i (2) i napisz zarys migracji.
    Powinno to obejmować takie rzeczy, jak instalacja i konfiguracja dowolnego potrzebnego oprogramowania / pakietów, zrzutowanie i ładowanie bazy danych itp.
  4. TESTUJ MIGRACJĘ
    Skopiuj wszystko tak, jak gdybyś chciał uruchomić serwer, ale nie uruchamiaj go. Po zakończeniu włóż go do izolowanej sieci i przetestuj wszystko.
    Jeśli masz standardową procedurę testową dla swojej aplikacji, powinieneś ją uruchomić na migrowanym serwerze.
  5. Jeśli wszystko nie poszło idealnie, przejdź do (3), zaktualizuj (1) i (2), a następnie popraw swój plan.
  6. Gdy migracje testowe przebiegną idealnie, wykonaj rzeczywistą migrację.
    W zależności od złożoności procesu migracji może to po prostu oznaczać upuszczenie i ponowne załadowanie bazy danych. Możesz też wyczyścić maszynę i zrobić wszystko od zera.

Kiedy skończysz, będziesz mieć listę kontrolną dla swojej konkretnej aplikacji w swoim środowisku. Ta lista kontrolna prawdopodobnie ewoluuje w miarę rozwoju aplikacji, ale może służyć jako punkt wyjścia za 3-5 lat, kiedy będziesz musiał ponownie przeprowadzić migrację.

Inne rzeczy do rozważenia obejmują wdrożenie zarządzania konfiguracją ala Puppet lub Chef.
(Jeśli zamierzasz zostać „administratorem systemu”, powinieneś wziąć je pod uwagę, w przeciwnym razie przekaż je odpowiedzialnej osobie / zespołowi).


5

Cóż, masz do czynienia z konfiguracją serwera i zawartością serwera, i jest bardzo mało prawdopodobne, aby ta sama technika działała w obu przypadkach.

Czy masz bazę danych? Jeśli tak, należy to również przenieść. Rsync działa doskonale w przypadku treści statycznych. Wystarczy uruchomić go raz, aby przenieść listę danych, a następnie co kilka godzin mówić, aby zachować synchronizację do momentu przejścia na inną wersję. Przed migracją wyłącz cron rsync!

Jeśli chodzi o konfigurację, nie mamy pojęcia, co prowadzisz, więc nie możemy tak naprawdę dawać rekomendacji.


Dzięki! Aktualnie pracujemy na CentOS ze stosem Apache / PHP / MySQL (dość standardowym) z WHM. Przenosimy wszystko do redhat linux na Rackspace.
Ghost Code
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.