Keepalived через GRE туннель для отработки отказа в среде VPS

Я запускаю приложение на Linode. Их сеть не поддерживает многоадресную рассылку. Многие инструменты, используемые для аварийного переключения (keepalived, spread / wackamole, hearbeat), требуют многоадресной передачи для работы (насколько я знаю). Я прочитал документацию по всем из них, и даже в "одноадресном" режиме (если он есть) он все равно отправляет через многоадресную рассылку.

Я знаю, что с туннелем GRE я могу эффективно отправлять многоадресную рассылку без ведома маршрутизатора, что дало бы мне возможность использовать один из этих инструментов (сейчас я бы хотел использовать keepalived).

Я настроил свой туннель на устройстве "gretun" примерно так:
10.0.0.1 - точка подключения туннеля к www1
10.0.0.2 - точка подключения туннеля к www2
Я могу nc 10.0.0.2 80 с www1, и nc 10.0.0.1 80 с www2, так что, похоже, работает. Притворись публичным IP-адресом, которым я пытаюсь поделиться: 69.164.69.69.

У меня есть два вопроса:
После настройки keepalive для мониторинга туннеля (gretun) эти две машины все еще не могут видеть друг друга. Вот мой конфиг:

global_defs {
    notification_email {
             info@app.com
    }

    notification_email_from alerts@app.com
    smtp_server localhost
    smtp_connect_timeout 30
    router_id www1.app.com
}

vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface gretun
    virtual_router_id 51
    priority 100

    advert_int 1
    garp_master_delay 2

    smtp_alert

    authentication {
            auth_type PASS
            auth_pass password
    }

    virtual_ipaddress {
            69.164.69.69/24 dev eth0
    }

    track_script {
            chk_haproxy
    }
}

И www1, и www2 захватывают общий IP одновременно, я полагаю, потому что они не могут общаться друг с другом. Есть идеи, почему использование gretun не позволяет им общаться друг с другом?

Второй вопрос: можно ли настроить туннель таким образом, чтобы я мог подключить 3+ машины друг к другу и использовать многоадресную рассылку? Другими словами, вместо того, чтобы устанавливать разные туннели между различными комбинациями узлов, можно просто заставить узлы "присоединяться" к туннелю, так сказать, чтобы они могли автоматически обнаруживать друг друга?

Вопросы могут быть глупыми, но я не сетевой гуру, это мой первый опыт использования туннелей за пределами ssh. Я также открыт для совета, который решит мою проблему вне того, что я делаю.

Спасибо!

2 ответа

Решение

Если вам интересно, у меня есть патч для keepalived, который позволяет использовать одноадресную передачу между локальным и удаленным VIP. Я успешно использовал его на vps.net между виртуальными машинами. Это намного проще, чем пытаться настроить туннель! Я загрузил его туда:

http://1wt.eu/keepalived/

Затем вам просто нужно указать "vrrp_unicast_bind " и "vrrp_unicast_peer ". Он по-прежнему будет использовать протокол VRRP, но только между этими IP-адресами.

Надеюсь, это поможет!

В AWS он может работать в среде VPS, но не будет работать в обычной среде EC2, поскольку вы не можете открыть необработанное правило протокола (112 для VRRP) в группе безопасности.

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