Один anycast IP-адреса не дає вам такої ж надмірності, як дві одноосібні IP-адреси у різних IP-префіксах.
Найчастіше найважча проблема надмірності не полягає в тому, коли щось виходить з ладу повністю, а, коли воно погано поводиться достатньо, щоб все-таки пройти перевірки здоров'я, але насправді не бути функціональним.
Я бачив налаштування DNS у будь-якому режимі, коли DNS-сервер знизився, але пакети все одно будуть спрямовані на цей DNS-сервер. Що б не піклувався про рекламу префікса, може просто не знати, що сервер DNS знизився.
Це стає ще більш складним, якщо розглянутий DNS-сервер не є авторитетним DNS-сервером, а скоріше рекурсивним резолютором.
У такому рекурсивному резолютору необхідно мати як адресу anycast для прийому запитів від клієнтів, так і одноадресні адреси для запитів авторитетних серверів DNS. Але якби одноразові адреси знизилися, це може легко виглядати достатньо здоровим, що все-таки буде спрямовано запити.
Anycast - чудовий інструмент для масштабування та зменшення затримки. Але для надмірності він не повинен стояти окремо.
Однак кілька резервних басейнів anycast є хорошим рішенням щодо доступності. Добре відомий приклад - 8.8.8.8 та 8.8.4.4. Обидва є адресами anycast, але їх ніколи не слід перенаправляти на один і той же фізичний DNS-сервер (якщо припустимо, що Google зробив свою роботу добре).
Якщо у вас є 10 фізичних серверів DNS, ви можете налаштувати їх як 2 пули з 5 серверами у кожному пулі або 5 пулами з 2 у кожному пулі. Ви хочете уникати наявності одного фізичного сервера DNS одночасно в декількох пулах.
То скільки IP-адрес слід виділити? Потрібно мати IP-адреси, які можна налаштувати як anycast незалежно один від одного. Зазвичай це означає, що вам потрібно буде виділити цілий / 24 адресного простору IPv4 або / 48 адресного простору IPv6 для кожного пулу. Це може дуже обмежити кількість басейнів, які ви можете мати.
Крім того, якщо ми говоримо про авторитетних серверах, відповідь DNS зі всіма вашими записами NS, а клей A і AAAA повинен вміщуватися в одному пакеті 512 байт. Для кореневих серверів це було розроблено до 13 адрес. Але це не включало клей та IPv6, тому число, до якого ви доїдете, було б меншим.
Кожен пул повинен бути максимально розподілений географічно. Якщо у вас є 5 серверів у Європі та 5 у Нот Америці та 2 IP-адреси anycast, ви не створюєте один пул, що охоплює кожен континент. Ви ставите 2 з Європи в басейн з 3 з Північної Америки, а інші 5 в інший басейн.
Якщо у вас є більше 2 пулів anycast, ви можете дозволити фізичному серверу тимчасово перебувати в більшій кількості пулів. Але ви ніколи не повинні дозволяти фізичному серверу бути у всіх пулах одночасно.
Поєднувати будь-яку трансляцію та одноадресну інформацію можливо, але потрібно бути обережним. Якщо у вас є IP-адреси для двох пулів, я б не поєднував. Але якщо у вас є тільки один anycast IP для роботи, може бути доцільним також включати одноадресні IP-адреси. Проблема полягає в тому, що включення одноадресних IP-адрес не дасть вам гарної затримки та балансування навантаження.
Якщо фізичний сервер буде доступний як unicast, так і anycast, ви можете ризикувати, щоб користувачі потрапили на той же сервер, що і основний та вторинний, і втратити доступ, якщо він знизиться. Цього можна уникнути, використовуючи лише одноадресні адреси серверів, які не є пулом anycast, або завжди надаючи користувачам дві одноадресні адреси.
Чим більше одноразових адрес ви введете в суміш, тим менше запитів буде надіслано на адресу anycast, і тим менше вигоди ви отримаєте від anycast з точки зору затримки та масштабованості.