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

привязка corosync к 127.0.0.1 вместо правильного интерфейса

У меня возникла следующая проблема при попытке реализовать двухузловой отказоустойчивый кластер с использованием Hetzner в качестве хостинг-провайдера.

мой corosync.conf выглядит следующим образом:

# Please read the corosync.conf.5 manual page
compatibility: whitetank

totem {
version: 2
secauth: off
interface {
    member {
        memberaddr: 144.76.91.XXX
    }
    member {
        memberaddr: 5.9.121.XXX
    }
    ringnumber: 0
    bindnetaddr: 5.9.121.0
    mcastport: 5405
    ttl: 1
}
transport: udpu
}

logging {
fileline: off
to_logfile: yes
to_syslog: yes
debug: on
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on
logger_subsys {
    subsys: AMF
    debug: off
}
}

`проблема в том, что 5.9.121.XXX связывается правильно (и отображается в crm_mon как часть кластера)

UDP 0 0 5.9.121.XXX:5405 0.0.0.0:* 8281 / corosync

но 144.76.91.XXX не работает и вместо этого привязывается к localhost.

UDP 0 0 127.0.0.1:5405 0.0.0.0:* 7889 / corosync

Анализ журналов tcpdump показывает, что 144.76.91.XXX отвечает на 5.9.121.XXX с помощью ICMP типа 3 (пункт назначения недоступен), код 3 (порт недоступен).

corosync -f output будет печатать повторно:

24 июня, 12:53:28 corosync [TOTEM] Totem не может сформировать кластер из-за сбоя операционной системы или сети. Наиболее частая причина появления этого сообщения - неправильная настройка локального брандмауэра.

Между двумя хостами включен UDP-трафик, в настоящее время нет брандмауэров, и я использую Debian (таким образом, без SELinux).

Любые идеи для решения этой проблемы? Можно ли вообще создать кластер с 2 машинами в разных подсетях или мне нужно заказать серверы в одной подсети? Заранее благодарим за любые ответы.

Из списка рассылки (который решил мою проблему), любезно предоставлен Дэном Фриску:

«Вы не должны использовать один и тот же bindnetaddr в обоих местах, это актуально только на уровне узла для UDPU (ваш вариант использования). На узле, где у вас есть адрес 144. *, используйте его как bindnetaddr».

Надеюсь, что это кому-то пригодится.