Назад | Перейти на главную страницу

Вопросы новичков о MAC и отказоустойчивости

Я читаю о высокой доступности, и я не могу понять следующее, что я прочитал: при аварийном переключении основной IP-адрес переносится на резервный сервер, НО так же должен и MAC-адрес.

В частности, я читал, что у каждой машины есть уникальный MAC-адрес, который может использоваться всеми интерфейсами машины. Я не понимаю этой части. Разве MAC не принадлежит сетевой карте? Что в этом предложении подразумевается под интерфейсами?

Также при аварийном переключении клиенты должны обновить свое сопоставление IP / MAC и найти 3 способа для этого, один из которых - использовать настраиваемый MAC и переместить его с основного на резервный вместе с общедоступным IP. Как это возможно? Сделайте программное обеспечение высокой доступности, например Кардиостимулятор сделать это? Как?

Книга правильная, но в ней есть пропущенные части.

  • MAC-адреса не так фиксированы, как вы думаете, большинство сетевых адаптеров более высокого уровня имеют возможность изменить MAC-адрес на что-то конкретное. Либо в BIOS сетевой карты, либо в самом драйвере.
  • Для «виртуальных» систем существуют определенные диапазоны MAC-адресов (см. Какой диапазон MAC-адресов я могу безопасно использовать для своих виртуальных машин?)
  • Программное обеспечение кластеризации может использовать MAC-адреса из этих выделенных диапазонов для представления IP-служб кластера.
  • Сетевой стек linux имеет возможность создавать виртуальные сетевые адаптеры с определенными MAC-адресами.

Процедура, которой следует программное обеспечение кластеризации для создания службы на основе виртуального MAC-адреса, довольно проста. Когда служба запускается, она предлагает пакет Gratuitous Arp, в котором говорится, что конкретный IP-адрес можно найти на виртуальном MAC-адресе. Когда происходит аварийное переключение, «неработающий» узел удаляет свою локальную привязку IP / MAC, и новый узел начинает прослушивать этот виртуальный MAC-адрес и комбинацию IP. Без суеты.

Другой метод, используемый программным обеспечением для кластеризации, - это вообще не беспокоиться о виртуальных MAC-адресах и полностью полагаться на Gratuitous ARP. Последовательность запуска / переключения при отказе для такой системы будет выглядеть так:

  1. программное обеспечение кластера связывает IP-адрес с узлом A.
  2. Узел A G-ARP "192.168.244.60 находится на 02-00-ab-cd-ef-01"
  3. Все устройства в подсети обновляют свои таблицы ARP.
  4. Время проходит.
  5. Узел А вылетает.
  6. Программное обеспечение кластера связывает IP-адрес с узлом B.
  7. G-ARP узла B "192.168.244.60 находится на 02-00-ab-cd-41-ba"
  8. Все устройства в подсети обновляют свои таблицы ARP.

По моему опыту, второй метод, чистый G-ARP, в наши дни используется в большинстве кластеров Linux. Однако оба метода действительны и уже использовались. Преимущество метода G-ARP заключается в том, что вам не нужно возиться с назначением виртуальных MAC-адресов. Преимущество чистого метода виртуального MAC заключается в том, что он не полагается на работу G-ARP в данной подсети.

Возможно, вы смешиваете две формы высокой доступности или балансировки нагрузки.

Связывание склеивание назначает (может) один и тот же IP-адрес нескольким интерфейсам на тот же хозяин.

Для кластер балансировка нагрузки с помощью HA, всем машинам назначается один и тот же IP-адрес с разными MAC. Одна машина будет получать весь трафик, но она может пересылать его другим машинам, которые могут отвечать напрямую, потому что у них одинаковый IP. Если главный компьютер выходит из строя, выбирается новый и выполняется бесплатный ARP, чтобы уведомить устройства о том, что IP-адрес у нового компьютера.

Похоже, вы находите довольно плохой материал для чтения. Не хотите разместить ссылку?

В целом: модель уровня OSI решает большинство этих проблем, и вам почти никогда не придется работать над несколькими уровнями одновременно.

MAC-адрес может появляться только один раз в сегменте Ethernet. На физических машинах они глобально уникальны и никогда не появляются дважды (даже на нескольких сетевых адаптерах на одной машине). В виртуальных машинах вы устанавливаете MAC программно и должны использовать некоторые частные диапазоны MAC, аналогичные диапазонам частных IP.

Для высокой доступности IP-адресов достаточно настроить IP-адрес на другом хосте. Операционные системы и сетевая инфраструктура на уровне 2 будут автоматически обновлять свои сопоставления MAC / IP.

Тем не менее, некоторое оборудование не работает и требует «бесплатных» запросов ARP, чтобы заставить их обновлять свои кеши.

В Linux я использую «ucarp» с дополнительными сценариями для автоматической настройки машин с этим «кластерным» IP.

В некоторых сценариях высокой доступности при событии высокой доступности резервным узлом возвращается только IP-адрес. В этом случае резервный узел должен транслировать незапрашиваемый пакет ARP для обновления таблиц ARP устройства в том же сегменте Ethernet. При получении незапрошенного пакета ARP устройство обычно не обновляет напрямую свою таблицу ARP (это позволит легко взломать сеть), но аннулирует запись ARP на соответствующем IP-адресе. В следующий раз, когда устройству потребуется поговорить со службой HA, оно выполнит запрос ARP, чтобы получить MAC, соответствующий IP-адресу.

В некоторых других сценариях высокой доступности (например, в некоторых маршрутизаторах и межсетевых экранах) и MAC, и IP-адрес возвращаются резервным узлом. Это позволяет клиентам в одном и том же сегменте Ethernet сохранять свою таблицу ARP нетронутой, но это не означает, что резервный узел может сохранять свою широковещательную передачу ARP (или какой-либо другой сетевой трафик). В этом случае широковещательная передача ARP (или другой сетевой трафик) необходима для обновления таблицы MAC-адресов коммутатора, чтобы трафик не заканчивался на неработающем порту устройства.

Вы можете прочитать это для получения более подробной информации о внутренней работе переключателей [Как программное обеспечение сетевого сниффинга работает через коммутатор?.