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

Поддержка активности через туннель GRE для аварийного переключения в среде VPS

Я запускаю приложение на Линоде. Их сеть не поддерживает многоадресную рассылку. Многие инструменты, используемые для аварийного переключения (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.

У меня два вопроса:
После настройки keepalived для мониторинга туннеля (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. Я также открыт для совета, который решит мою проблему вне того, чем я занимаюсь.

Спасибо!

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

http://1wt.eu/keepalived/

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

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

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