Witam.
Zastanawiam się w jaki sposób najlepiej zorganizować mechanizm failover na dwóch routerach opartych o Debiana.
Uproszczony schemat połączeń:
Maszyny są tak dobrane i skonfigurowane obecnie, że przepychają przez siebie około 1,3 Gb ruchu na sekundę.
Ruch jest filtrowany po adresach MAC (iptables) oraz działa na nich serwer DHCP - zarówno reguły iptables jak i strefy DHCP są generowane po każdej zmianie dla określonej tablicy na nowo.
Sieci LAN są w osobnych VLAN-ach, część idzie przez Router 1 a część przez Router 2.
Adresy WAN routerów są w jednej podsieci, są już za AS, więc nie ma z tym problemu.
Co bym chciał osiągnąć:
W razie awarii jednej maszyny żeby całość ruchu szła przez drugą, po przywróceniu do życia, żeby przestała przepuszczać ruch i ewentualnie wyłączyła interfejsy od strony LAN.
Fizycznych kart sieciowych jest na tyle, że mogę sobie pozwolić na nie używanie kilku, więc awaryjny ruch można przepuścić przez nie, maszyny też wydolą (testowane, nawet mam jeszcze sporo zapasu).
Może mi ktoś zaproponować czego użyć do takiego rozwiązania?
Jak najlepiej zsynchronizować pliki z ustawieniami stref dhcp oraz iptables?
Co do pierwszego, myślałem żeby użyć do tego OSPF z różnymi wagami tras, jednak nie mam pomysłu na mechanizm pilnujący i włączający/wyłączający interfejsy.
Router failover - jak najlepiej to zrobi
- LordRuthwen
- Moderator
- Posty: 2352
- Rejestracja: 18 września 2009, 21:45
- Lokalizacja: klikash?
Po drugie: co prawda nie miałem do czynienia z Linux HAclustrem ale mam do czynienia z VCS (Veritas Cluster Server) i tam można definiować redundantne grupę resourceową dla sieci, podejrzewam, że w HAClustrze też to można bez problemu zrobić i zdefiniować reguły kiedy ma się przełączyć na drugie node.
Dodane:
Chociaż tak sobie myślę, że ja to bym chyba sam sobie taki mechanizm oskryptował...
Dodane:
Chociaż tak sobie myślę, że ja to bym chyba sam sobie taki mechanizm oskryptował...
- LordRuthwen
- Moderator
- Posty: 2352
- Rejestracja: 18 września 2009, 21:45
- Lokalizacja: klikash?
Musisz pomiędzy ruterem 1 a ruterem2 zrobić połączenie punkt-punkt, na którym będzie działał heartbeat. W twoim rozwiązaniu failover ma działać na zasadzie master-slave tzn. że jak padnie połączenie główne to zapasowe ma być dopiero użyte. Zatem na nodzie slave skryptujesz mechanizm, który heartbeatem odpytuje mastera o warunki, które ten musi spełnić aby slave nie podjął żadnej akcji (czy serwer w ogóle żyje, czy heartbeat chodzi, czy jest ping do sieci, dla której jest bramą itp). Jeżeli jeden z tych warunków nie zostanie spełniony, uwalnia się konfigurator sieci na slave i ten staje się bramą. Oczywiście heartbeat cały czas pracuje i odpytuje mastera, czekając aż wszystkie warunki znów zostaną spełnione. Gdy w końcu tak sie stanie uwalnia się dekonfigurator na slave, i master znów jest bramą. Jak widzisz algorytm nie jest najprostszy i wymaga testów, żeby był niezawodny ale to ciekawy task 