Replikacja 2-ch serwerów (windows server 2012) w 2-ch odległych lokalizacjach


(crono2552) #1

Witajcie zwracam się z prośbą o udzielenie informacji na temat replikacji 2 serwerów windows server 2012 które znajdują się w 2 odległych od siebie lokalizacjach. Chciałbym aby replikacja tych serwerów była pełna (coś na zasadzie raid0) nie tylko jakieś konkretne pliki jak to jest zrobione do tej pory, zależy mi żeby w razie awarii jednaj stacji druga była w 100% gotowa do kontynuacji pracy gdyż celem jest umożliwienie nie przerwanej pracy zdalnej. Tutaj też chciałbym o poradę w sprawie automatycznego przejęcie (przekierowania) połączeń na serwer który nie uległ awarii.

Prosiłbym aby wypowiadały się tylko osoby które mają wystarczającą wiedzę w tym temacie pozostałym gorąco dziękuję za zainteresowanie.
Pozdrawiam :slight_smile:


(hindus) #2

Oba serwery mają identyczną konfigurację sprzętową i klucze systemowe?


(crono2552) #3

Oba komputery mają taką samą konfigurację sprzętową ale nie te same klucze systemowe


(RolandPierzga) #4

Trochę mało informacji. Jakie role są zainstalowane na tych serwerach, jakie funkcje pełnią? Z tego co przeczytałem wynika, że użytkownicy na nich pracują zdalnie, mają swoje aplikacje itd. Sam Windows serwer nie ma mechanizmu replikacji systemu operacyjnego z jego konfiguracją, zawartością czyli aplikacjami, plikami użytkowników. Taką funkcjonalność dają poszczególne składowe np. serwer plików z DFS, lub funkcjonalności klastrowe, ale to nadal w obrębie danej funkcjonalności a nie całego systemu.
Replikacja to nie RAID, zwłaszcza RAID 0 który nie zapewnia żadnej replikacji…
Ogólnie temat replikacji jest tematem bardzo złożonym i kompleksowym, co oznacza że bez odpowiedniej infrastruktury sprzętowej oraz oprogramowania tematu dobrze nie da się zrobić.


(crono2552) #5

OK, bardzo dziękuję ci za wyjaśnienie w takim razie postaram się to rozpisać inaczej.

Do tej pory posiadaliśmy 1 serwer z windows server 2012 do które były dokupione CALe na użytkowników którzy łączyli się zdalnie do serwera i korzystali z aplikacji tam zainstalowanej. Z czasem pojawiły się problemy takie jak, awaria sieci internetowej (powtarzają się średnio 1 na 2 miesiące), awarie zasilania (kilka razy w roku są oczywiście UPS jednak trzymają do 20 minut i wyłączają serwer po 5 minutach od zaniku zasilania), mieliśmy też awarie dysku jednak na całe szczęście posiadamy RAID5 więc awaria była bezbolesna.
Na dzień dzisiejszy stoję przed zakupem kolejnego serwera (wcześniej napisałem że są 2 o takich samych podzespołach ale teraz dochodzą do wniosku że nie będzie to wymagane) który ma mieć za zadanie automatyczne zastąpienie serwera głównego na czas awarii, jak pisałem oba serwery będą znajdować się w oddalonych lokalizacjach z dostępem do internetu u innych operatorów (tu także z tego co wiem mają inne “przyłącza” (nie potrafię tego fachowo nazwać), generalnie mam na myśli to że awaria internetu u jednego operatora nie będzie miała wpływu u drugiego.


(hindus) #6

W jaki sposób aplikacja miałaby się synchronizować? To jest baza danych? Czy może operacje na plikach? Musisz wyszczególnić minimalną ilość danych które muszą być synchronizowane między serwerami. A wybór odpowiedniej maszyny to już rola dla load balancera.


(WODZU) #7

Zapewne miałeś na myśli RAID1 :wink:


(RolandPierzga) #8

@crono2552 rozumiem, ale “prosto” tego nie zrobisz. Musisz pamiętać, że mechanizmy replikacji wymagają często bardzo konkretnych parametrów np.:

  1. Synchronizacja/replikacja itd przesyła dane czasami bardzo dużo danych i musi się odbywać z określonymi parametrami np niektóre systemy określają maksymalne opóźnieni na poziomie <100ms oraz przepustowość łącza na poziomie min 100M.
  2. Serwery muszą mieć osobny interface sieciowy na wyłączność replikacji itd.
  3. serwery muszą mieć taką samą konfigurację sieciową
  4. muszą być spięte VPN
  5. itd

Najprościej replikację wykonać na poziomie maszyn wirtualnych. Np microsoftowy Hyper-V ma opcję replikacji maszyn wirtualnych w “cenie” czyli w cenie licencji na system windows serwer lub bezpłatnie jeśli skorzystamy z Microsoft Hyper-V Server 2016. Ale i tak pozostaje kwestia w jaki sposób zorganizować przełączanie (automatyczne na działający system).
Jeśli aplikacja sama w sobie nie umożliwi pracy w klastrze, to i tak zawsze będzie ryzyko utraty części danych lub ich niespójności pomiędzy serwerami. Inną sprawą jest czy faktycznie zakup drugiego serwera i próba wdrożenia czegoś tak skomplikowanego bez odpowiednich zasobów technicznych ma sens? Może lepiej będzie podłączyć drugie łącze, nawet GSM ze stałą adresacją, ceny są teraz bardzo przystępne a parametry jak na łącze zapasowe akceptowalne w większości przypadków. Kupić porządnego UPSa lub dwa i nie kombinować za bardzo ;)?


(crono2552) #9

Tak, rzeczywiście to miałem na myśli - dzięki za czujność :slight_smile:

głównie chodzi tu o bazę Postgre, rozumiem że ten load balancer to rola windows servera? jeżeli tak to nie rozumiem w jaki sposób zareaguje na przełączenie sesji zdalnych na drugi serwer w razie awarii łącza internetowego (no chyba że ta sama rola na drugim serwerze “zauważy” brak komunikacji i zainicjuje (odblokuje czy co on tam właściwie wykona) dostęp do sesji zdalnych na serwerze awaryjnym.


(hindus) #10

Nie, load balancer to osobna maszyna która będzie przyjmować cały ruch (w tym wypadku RDP) i przekierowywać na serwer 1 lub 2 zależnie od ich obciążenia lub dostępności. Więc dla użytkownika jest to w zasadzie przezroczyste. Oczywiście jak serwer na którym pracuje się odłączy, to oni również zostaną odłączenia i ich sesja utracona, będą startowali od nowego zalogowania. Nie wiem na ile to problem?

Druga kwestia do rozwiązania, to synchronizacja bazy Postgresowej. W tej dziedzinie niestety nie pomogę, za to przychylę się do opinii:

Będzie dużo mniej problemów i będzie to rozwiązanie dużo tańsze.


(crono2552) #11

OK. rozważę tą propozycję w zasadzie myślałem o takiej ewentualności już swego czasu jednak z podjęcia już pewnych decyzji staram się znaleźć działające rozwiązanie w scenariuszu który przedstawiłem.

Co do load balancera hindus zmyliło mnie określenie “rola”, ogólnie posiadam biznesowy router TP-Link’a który ma taką funkcję jednak nie wiem jak to sparować z ewentualnie drugim takim samym routerem w innej lokalizacji, no i oczywiście nadal pozostaje synchronizacja bazy Postrgre jednak uważam że jest to do ogarnięcia.


(RolandPierzga) #12

@crono2552 Jeśli myślisz o koncepcji, którą założyłeś to od razu poradzę Ci zarzuć ją bo jest błędna. Nie osiągniesz założonego efektu przy minimalnym nakładzie finansowym. Chyba, że masz do wydania kilkadziesiąt tysięcy złotych, wtedy będziesz w stanie zrobić to dobrze, a osiągnięty efekt będzie taki jak założyłeś lub bardzo do niego zbliżony.
W innym przypadku wytworzysz prowizorkę, która w bardzo specyficznych warunkach będzie miała nawet prawo zadziałać, ale czy opieranie biznesu na czymś co z założenia nie będzie działać dobrze jest ryzykiem do zaakceptowania?

Jeśli wszystko ma działać w sposób prawidłowy, to żaden z elementów “decydujący” o przełączeniu ruchu nie może być uzależniony od awarii jakiegokolwiek elementu w infrastrukturze. Piszesz o chęci wykorzystania “load balancera” z “biznesowego” TP-Linka, już samo to podpowiada mi, że z tego nie wyjdzie nic dobrego. Z co najmniej dwóch powodów:

  1. TP-Link nadaje się do domu, nie do biznesu
  2. Jeśli “dostępnością” usługi zarządza router w miejscu jej lokalizacji, to co się stanie jak przestanie działać (brak prądu, pad łącza, pad urządzenia)??

Żeby to działało jak należy ruch musi być obsługiwany przez “urządzenie” nie będące fizycznie w żadnej lokalizacji. Można to zrobić na wiele sposobów, począwszy od warstwy sieciowej na poziomie operatorskim, skończywszy na usłudze LoadBalancingu w chmurze. Ale to jest temat stanowczo nie do tego rozwiązania, taka armata na wróbla?


(hindus) #13

To jest duuużo trudniejsze niż się wydaje. Prosty przykład.

Na serwerze A użytkownik X zapisał cena = 100
W tym samym momencie na serwerze B użytkownik Y zapisał cena = 200
Kto ma rację?

Pracuję w dużej, zagranicznej korporacji. Mamy rozwiązanie oparte o bazę danych SQL. Kilkanaście maszyn do obsługi aplikacji, wiele z nich wystawionych w kilku instancjach, sprzętowy load balancer, infrastruktura na najwyższym poziomie. A mimo to nikt nie próbuje nawet wdrażać “drugiej bazy”. Nie wspominając już o drugiej lokalizacji. Są snapshoty, ale nigdy druga baza. Za dużo problemów właśnie natury synchronizacji.


(crono2552) #14

@hindus ok rozumiem co ty chcesz mi przekazać ale nikt nie będzie pracować na 2 bazach będzie 1 i ta sama baza w 2 lokalizacjach myślę że synchronizacja będzie dość szybka a w razie awarii różnice między bazami wyniosą dosłownie kilka wierszy i to nie jest problem gdyż chodzi głównie o jak najkrótszą przerwę w pracy, bo gdy główny serwer wróci do sprawności zrobię przerwę na max godzinkę porównam bazy i zostawię tą która będzie najbardziej aktualna to jest normalna procedura aktualnie baza tworzy swoją kopię na bieżąco do NAS i w razie awarii tracimy dosłownie kilka wpisów to jest 5 minut odtworzenia manualnego (ponowne wprowadzenie) jednak z powodu awarii praca jest całkowicie przerywana i nie możemy jest w żaden sposób kontynuować co jest bardzo ale to bardzo problematyczne.


(RolandPierzga) #15

@crono2552 zrobisz jak uważasz, ale nie da się tego zrobić “jakoś”. Jeśli zakładasz, że chcesz zminimalizować przerwę w pracy, lepszym, dużo lepszym rozwiązaniem będzie zrobienie jednej porządnej serwerowni niż dwóch prowizorek. Bo wydasz mniej pieniędzy i będzie to działać zdecydowanie lepiej.
Dlaczego tak uważam, bo nauczony doświadczeniem i mniej elementów w infrastrukturze, im mniej rozproszona infrastruktura tym mniejsze ryzyko awarii. Zwłaszcza gdy jak sam piszesz nie masz pojęcia o tym co chcesz zrobić.

PS: replikacja bazy danych nie jest problemem postgreSQL obsługuje tego typu konfigurację, ale trzeba to odpowiednio wdrożyć. Problemem jest cała reszta. Zapewnienie dostępu pomiędzy biurami, dostępu z internetu itd. Co z tego że się przełączy na inny serwer jak pracownicy w jednym biurze i tak nie mają prądu i guzik zrobią??


(crono2552) #16

@RolandPierzga dziękuję za twoją opinie, w takim razie proszę was o przedstawienie mi możliwie najlepszego rozwiązania, bo z tego co wnioskuję to najlepiej mieć 1 serwer (jednak tutaj cały czas jestem skłonny mieć 2 w razie awarii sprzętu czy coś drugi od razu jest gotowy do pracy) , UPS który wytrzyma 24H, 2 osobne nie zależne łącza internetowe, router z load balancerem do przełączania sieci internetowej w razie awarii łącza.

@RolandPierzga PS: pracownicy nie pracują w lokalizacjach gdzie są (będą serwery) jest to całkowicie praca zdalna.


(hindus) #17

Pomierz typowe dobowe zużycie energii elektrycznej, to będzie można obliczyć pojemność akumulatorów potrzebnych do uciągnięcia tego.
BTW ludzie pracują przez całą dobę? Czy 8-16? W razie awarii elektryczności warto wyłączyć serwer skoro nikt z niego nie korzysta.
No i czy awarie trwają tak długo? Jeśli tak - co to za serwerownia? Mieszkam w niewielkiej miejscowości i nawet u mnie awarie elektryczności nie trwają dłużej niż pół godziny.

Drugi serwer na który będą wgrywane kopie zapasowe warto mieć tak czy inaczej - choćby po to, żeby móc przećwiczyć i zweryfikować poprawność procedury przywracania kopii zapasowej. Nic tak nie irytuje, jak kopia zapasowa, która nie działa :wink: W razie awarii sprzętowej (nie - elektryczności czy sieci) będziesz mógł po prostu przywrócić na nim bazę danych i wznowić pracę. Kupisz sobie czas żeby móc przywrócić główny serwer do pracy (albo kupić nowy, jeśli stary padł na amen).


(RolandPierzga) #18

@hindus - święte słowa. Nie ma nic gorszego niż pewność (w dodatku nigdy niezweryfikowana), że jest backup. Backup który nie jest sprawdzany i nie jest potwierdzone że można z niego odtworzyć działanie systemu jest równoznaczny z brakiem backupu. Zawsze wielkie zdziwienie wywołuje na twarzy rozmówcy gdy mówię:
Ja: nie ma backupu.
On: Ale jak to nie mam, przecież codziennie się robi backup!
Ja: kiedy było ostatnie odtworzenie systemu z backupu?
On: A po co?
Ja: no właśnie, przecież mówię że nie ma backupu :slight_smile:

A teraz poważnie @crono2552 zastanów się czy nie lepszym rozwiązaniem jest dzierżawa serwera dedykowanego lub VPS w profesjonalnej serwerowni. Jeśli masz takie problemy z zasilaniem, internetem, infrastrukturą itd. Bedziesz musiał wydać tak czy siak minimum kilka-kilkanaście tysięcy złotych na sprzęt + abonament na internet od innego dostawcy niż obecny, koniecznie na innej infrastrukturze. Np Netia i Orange potrafia świadczyć usługę po tym samym “kablu” i jest później zdziwienie że łącze w dwóch firmach pada jednocześnie itd.

Żeby podpowiedzieć jaki UPS będzie odpowiedni (o 24H zapomnij, chyba że chcesz wydać kilkadziesiąt tyś na system gwarantowanego zasilania :slight_smile: ) Wtedy dostaniesz urządzenie które wytrzyma dokładnie tyle na ile zostało zaprojektowane.
Sprawdź ile Watt sumarycznie pobierają wszystkie urządzenia podłączone do UPS, jak jest jakiś lepszy UPS to może nawet będziesz mógł sprawdzić aktualne obciążenie, wtedy będzie można coś podpowiedzieć.
Ale i tak myślę że dzierżawa może być korzystniejsza, skoro i tak wszyscy pracują zdalnie, ale to zależy od parametrów serwera w głównej mierze.


(roobal) #19

Raczej RAID1. DRBD?


(roobal) #20

Zawsze możesz wykorzystać mechanizm bazodanowy do replikacji.

Co do load balancera, taki haproxy sprawdza czy host żyje.