Przez wiele lat korzystałem z przełączania awaryjnego RR DNS na produkcyjnej witrynie o średnim natężeniu ruchu, ale o krytycznym znaczeniu dla biznesu (na dwóch obszarach geograficznych).
Działa dobrze, ale nauczyłem się co najmniej trzech subtelności.
1) Przeglądarki przejdą w tryb failover z niedziałającego adresu IP do działającego adresu IP po 30 sekundach (ostatni raz sprawdziłem), jeśli oba są uważane za aktywne w jakimkolwiek buforowanym DNS dostępnym dla twoich klientów. To w zasadzie dobra rzecz.
Niedopuszczalne jest jednak, aby „połowa” użytkowników czekała 30 sekund, więc prawdopodobnie będziesz chciał zaktualizować swoje rekordy TTL tak, aby obejmowały kilka minut, a nie kilka dni lub tygodni, aby w przypadku awarii możesz szybko usunąć wyłączony serwer z twojego DNS. Inni nawiązywali do tego w swoich odpowiedziach.
2) Jeśli jeden z twoich serwerów nazw (lub jeden z twoich dwóch obszarów geograficznych całkowicie) ulegnie awarii, co służy Twojej domenie typu round-robin, a jeśli podstawowy z nich ulegnie awarii, niejasno przypominam sobie, że możesz napotkać inne problemy, próbując je usunąć spadł serwer nazw z DNS, jeśli nie ustawiłeś również TTL / wygasania SOA dla serwera nazw na wystarczająco niską wartość. Mogłem pomylić tutaj szczegóły techniczne, ale istnieje więcej niż jedno ustawienie TTL, które musisz zrobić, aby naprawdę bronić się przed pojedynczymi punktami awarii.
3) Jeśli publikujesz sieciowe interfejsy API, usługi REST itp., Zwykle nie są one wywoływane przez przeglądarki, a zatem moim zdaniem przełączanie awaryjne DNS zaczyna wykazywać prawdziwe wady. Być może dlatego niektórzy mówią, jak to określasz, „nie jest to zalecane”. Oto dlaczego tak mówię. Po pierwsze, aplikacje korzystające z tych adresów URL zazwyczaj nie są przeglądarkami, więc brakuje im 30-sekundowych właściwości / logiki przełączania awaryjnego typowych przeglądarek. Po drugie, to, czy wywoływany jest drugi wpis DNS, czy nawet DNS jest ponownie odpytywany, zależy w dużej mierze od szczegółów programowania niskopoziomowego bibliotek sieciowych w językach programowania używanych przez tych klientów API / REST, a także dokładnie, jak są wywoływani przez aplikacja klienta API / REST. (Pod pokrywą, czy biblioteka wywołuje get_addr, a kiedy? Jeśli gniazda zawieszają się lub zamykają, czy aplikacja ponownie otwiera nowe gniazda? Czy istnieje jakaś logika przekroczenia limitu czasu? Itd. Itp.)
Jest tani, dobrze przetestowany i „przeważnie działa”. Tak jak w przypadku większości rzeczy, przebieg może się różnić.