Я запускаю приложение на Линоде. Их сеть не поддерживает многоадресную рассылку. Многие инструменты, используемые для аварийного переключения (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 между виртуальными машинами. Это намного проще, чем пытаться создать туннель! Я его туда загрузил:
Затем вам просто нужно указать «vrrp_unicast_bind» и «vrrp_unicast_peer». Он по-прежнему будет использовать протокол VRRP, но только между этими IP-адресами.
Надеюсь, это поможет!
В AWS он может работать в среде VPS, но не работать в обычной среде EC2, поскольку вы не можете открыть правило необработанного протокола (112 для VRRP) в группе безопасности.