Настройка шлюза в гостевой системе kvm при живой миграции

Я настроил мост, который подключен к гостям, чтобы общаться с снаружи. И в гостевой я настраиваю шлюз для указания IP-адреса моста. (в настоящее время добиться этого с помощью DHCP)

eth0 <-> мост <-> гость

Это, безусловно, работает. Но когда я мигрирую (живая миграция), возникает проблема. Гостевая сеть не работает, потому что шлюз в гостевой системе не изменился, а гостевая система постоянно указывает мост шлюза исходного узла. Если я могу использовать перезапуск гостя, это будет легко (редактирование файла libvrit xml или настройка DHCP). Но то, что я хочу сделать, это живая миграция. Более того, я не могу использовать ssh для запуска команды в гостевой системе. Потому что я должен был не знать имя пользователя и пароль гостя. Как я могу автоматически изменить шлюз гостя на соответствующий шлюз при живой миграции? Я думал, что открытый vswitch может решить эту проблему. Но похоже, что открытый vswitch может только изменить маршрутизацию и не может изменить шлюз гостя. Проблема все еще там. Если есть способ запустить команду в гостевой системе без ssh, это также будет уместно. Если бы я мог сделать это, я мог бы заставить клиента DHCP гостя сигнализировать DHCPDISCOVERY. Но, к сожалению, этот способ доступен только в VMware(VIX API). Я не могу найти соответствующую функцию в KVM.

добавьте: у моста есть фактический ip, а ip моста - это шлюз гостя на хосте. поэтому в одной подсети есть несколько шлюзов, и у каждого хоста есть один шлюз на одну подсеть. Я настроил каждый хост для обработки NAT для своих гостей. гостевой публичный ip обрабатывается их хостами. Почему я использовал этот подход, избегая "единой точки отказа" и распределяя рабочую нагрузку NAT для каждого хоста. Должен ли я выкинуть вышеупомянутую структуру, чтобы добиться живой миграции? это плохой подход для построения кластера виртуальных машин?

1 ответ

Является ли мост (на самом деле хост) IP фактическим шлюзом в этой подсети? Если нет, не нужно использовать IP-адрес моста в качестве шлюза в ВМ, вместо этого используйте шлюз подсети. Рассматривайте мост как тупой коммутатор или даже концентратор, просто логический объект, к которому подключена ваша ВМ, который будет передавать свой трафик в реальную сеть. Это означает, что виртуальная машина находится в подсети так же, как и физический хост, и поэтому она должна использовать те же определения сетевой инфраструктуры - шлюзы, DNS, DHCP... все точно так же, как с физическими хостами

Другие вопросы по тегам