Я настроил мост, к которому подключены гости, для связи с внешним миром. В гостевой системе я настраиваю шлюз, чтобы указать IP-адрес моста. (в настоящее время это достигается с помощью DHCP)
eth0 <--> мост <--> гость
Это точно работает. Но когда я мигрирую (живая миграция), возникает проблема. Гостевая сеть не работает, потому что шлюз в гостевой системе не изменился, а гость постоянно указывает мост шлюза исходного узла хоста. Если я смогу использовать перезапуск гостя, это будет легко (редактирование файла libvrit xml или настройка DHCP). Но что я хочу сделать живой миграцией. Более того, я не могу использовать ssh для запуска команды в гостевой системе. Потому что я должен был не знать имя пользователя и пароль гостя. Как я могу автоматически изменить шлюз гостя на соответствующий шлюз при выполнении динамической миграции? Я думал, что открытый vswitch может решить эту проблему. Но похоже, что открытый vswitch может изменить только маршрутизацию и не может изменить шлюз гостя. Проблема все еще существует. Если есть способ запустить команду в гостевой системе без ssh, он также будет уместен. Если я могу это сделать, я могу заставить DHCP-клиент гостя сигнализировать DHCPDISCOVERY. Но, к сожалению, этот способ доступен только в vmware (VIX api). Не могу найти соответствующую функцию в kvm.
добавить: у моста есть реальный ip, а ip моста - это шлюз для гостя на хосте. Таким образом, в одной подсети есть несколько шлюзов, и каждый хост имеет один шлюз на одну подсеть. Я настроил каждый хост для обработки NAT для своих гостей. гостевой публичный IP-адрес обрабатывается их хостами. Я использовал этот подход, чтобы избежать «единой точки отказа» и распределить рабочую нагрузку NAT между каждым хостом. Должен ли я выбросить указанную выше структуру для достижения живой миграции? это плохой подход для построения кластера виртуальных машин?
Является ли IP-адрес моста (фактически хоста) шлюзом в этой подсети? В противном случае нет необходимости использовать IP-адрес моста в качестве шлюза в виртуальной машине, вместо этого используйте шлюз подсети. Рассматривайте мост как тупой коммутатор или даже как концентратор, просто логический объект, к которому подключена ваша виртуальная машина, который будет передавать свой трафик в реальную сеть. Это означает, что виртуальная машина находится в подсети столько же, сколько и физический хост, и поэтому она должна использовать те же определения сетевой инфраструктуры - шлюзы, DNS, DHCP ... все точно так же, как с физическими хостами.