LINUX.ORG.RU
ФорумAdmin

Маршрутизация Hetzner Failover IP

 , , ,


0

2

Имеется вот такой «сетап»

Вводные данные:

  • Failover IP - IP который может быть переключен на любой из серверов, Хецнер маршрутизирует трафик до главного IP нужного сервера, дальше сам сервер должен маршрутизировать трафик до ВМ. Сами сервера «не знают» направлен на них Failover IP или нет. Можно делать запрос к API и узнавать, но у API лимит 100 запросов в час, особо не разгонишься.
  • 3 KVM гипервизора, на 2-х имеются ВМ которые используют Failover IP.
  • Failover IP подключен на KVM Host 1
  • Настройка vmbr2 на хосте
    auto vmbr2
    iface vmbr2 inet manual
      bridge_ports none
      bridge_stp off
      bridge_fd 0
    
  • Настройка интерфейса и маршрутов на ВМ
    2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 86:47:47:fb:a7:ff brd ff:ff:ff:ff:ff:ff
        inet 46.4.100.100 peer 88.99.99.100/32 scope global ens18
           valid_lft forever preferred_lft forever
    
    # ip route show
    default via 172.21.3.1 dev ens19
    88.99.99.100 dev ens18 proto kernel scope link src 46.4.100.100
    
    # ip rule sh
    0:      from all lookup local
    32765:  from 46.4.100.100 lookup 10
    32766:  from all lookup main
    32767:  from all lookup default
    
    # ip route show table 10
    default via 88.99.99.100 dev ens18
    

Задача в том, чтоб внешние клиенты и все ВМ размещенные на гипервизорах могли получать доступ обращаясь к ресурсам которые расположены на Failover IP.

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

ip route add 46.4.100.100/32 dev vmbr2
Проблема такой реализации - доступ к Failover IP могут получить только внешние клиенты, и те ВМ которые расположены на одном гипервизоре с «Failover IP ВМ», притом трафик уйдет именно на ближайшую «Failover IP ВМ», VM11 и VM12 попадут на VM10, VM21 и VM22 попадут на VM20, а VM30 и VM31 никуда не попадут, получат «Destination Host Unreachable» т.к. гипервизоры просто отправляют весь трафик в vmbr2.

Альтренативный вариант с использованием policy based routing, дающий немного лучший результат

ip route add 46.4.100.100/32 dev vmbr2 table 11
ip rule add to 46.4.100.100 table 11
ip rule add to 46.4.100.100 iif vmbr1 table main

# ip rule sh
0:      from all lookup local
32763:  from all to 46.4.100.100 iif vmbr1 lookup main
32764:  from all to 46.4.100.100 lookup 11
32765:  from all lookup main
32766:  from all lookup default
При такой настройке трафик с ВМ попадает под правило from all to 46.4.100.100 iif vmbr1 lookup main и уходит в основную таблицу маршрутизации, соответственно отправляется на шлюз по умолчанию, т.е. на оборудование Хеценра, которое маршрутизирует трафик на текущий активный Failover IP сервер, т.е. на KVM Host 1, на KVM Host 1 трафик попадает под правило from all to 46.4.100.100 lookup 11 и уходит на VM10 через vmbr2. Проблема в том что это не работает для машин на KVM1, трафик улетает в Хецнер и на этом все кончается, видимо шлюз «видит» что после прохождения таблицы маршрутизации SRC = DST и ничего никуда не шлет.

Можно ли вообще данную задачу решить средствами статической маршрутизации или необходима динамическая маршрутизация?



Последнее исправление: Hatifnatt (всего исправлений: 1)

Доброго времени суток. Решили проблему? Бадаюсь с аналогичной проблемой, но в качестве гипервизора используется Hyper-V.

Пытаюсь прописать FailoverIP на виртуальной машине и bridge-интерфейс с хоста, на который смаршрутизирован FailoverIP. Успехов 0. ТП хетзнера предлагает использовать исключительно проброс портов с Failover IP настроенного на сервере, на виртуалку.

kersantinov
()
13 июня 2018 г.
Ответ на: комментарий от kersantinov

К сожалению только сейчас увидел уведомление. Нет проблему не решил, обхожусь пока что внутренней сетью, т.е. через Failover IP ходят только внешние клиенты, все остальное идет через локальную сеть, которая настроена на 2-м интерфейсе.

Hatifnatt
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.