Сердцебиение не работает. Порт не открыт.

Вопрос или проблема

Я пытался настроить две виртуальные машины с активным сердцебиением: osboxes и osboxes2.

Когда я запускаю nmap localhost, вот вывод:

Nmap сканирование отчёт для localhost (127.0.0.1)
Хост в сети (латентность 0.00017 с).
Не показано: 991 закрытых порта
ПОРТ       СОСТОЯНИЕ СЕРВИС
22/tcp     открыт  ssh
25/tcp     открыт  smtp
53/tcp     открыт  domain
80/tcp     открыт  http
443/tcp    открыт  https
631/tcp    открыт  ipp
3306/tcp   открыт  mysql
9050/tcp   открыт  tor-socks
10000/tcp  открыт  snet-sensor-mgmt

Вот tcpdump такого интерфейса eth0:

18:38:22.267817 IP 192.168.141.135.48748 > 192.168.141.255.694: UDP, длина 315
18:38:22.268640 IP 192.168.141.135.38234 > osboxes2.694: UDP, длина 315
18:38:22.269421 IP osboxes2 > 192.168.141.135: ICMP osboxes2 udp порт 694 недоступен, длина 351

Как вы можете видеть, udp порт 694 недоступен. Когда я пытаюсь пинговать osboxes с osboxes2:

PING 192.168.141.137 (192.168.141.137) 56(84) байт данных.
64 байта от 192.168.141.137: icmp_seq=1 ttl=64 время=0.284 мс
64 байта от 192.168.141.137: icmp_seq=2 ttl=64 время=0.291 мс
64 байта от 192.168.141.137: icmp_seq=3 ttl=64 время=0.681 мс

Файл ha.cf из osboxes:

#Файл журнала отладки:
logfile /var/log/ha-log

#Файл журнала
debugfile /var/log/ha-debug

#Куда будут идти логи
logfacility local0

#Частота в секундах сердцебиений
keepalive 2

#Время, указывающее на смерть узла
deadtime 25

#Время, в течение которого heartbeat должен ждать сердцебиений (не сердцебиений beatboxes)
warntime 10

#Максимальное время для объявления другого сервера мёртвым
initdead 50

#Порт синхронизации
udpport 694

#Адрес широковещательной рассылки сети
bcast eth0

#Не понимаю. Если нужно, потом разобраться.
ucast eth0 192.168.141.137

#Определить, следует ли серверу вернуться к мастер-узлу, если он отвечает
auto_failback on

#Названия узлов кластера
node osboxes2
node osboxes

haresourcers из osboxes:

osboxes 192.168.141.135 apache

Стоит отметить, что osboxes (главный узел) это 192.168.141.135, а osboxes2 это 192.168.141.137.

Я подозреваю, что проблема заключается в том, что порт 694 не открыт, так как он недоступен.

Попробуйте удалить строку bcast из вашей конфигурации (или просто закомментируйте её).

Определяя ucast и bcast, вы по сути говорите heartbeat использовать два различных типа связи (универсальную и широковещательную), что может запутать.

Вики linux-ha.org содержит документацию по всем возможным директивам для конфигурации heartbeat: http://linux-ha.org/wiki/Ha.cf

Большая часть этой информации также доступна в справочной странице: # man ha.cf

Ответ или решение

Проблема с работой heartbeat и недоступностью порта 694 может быть решена несколькими способами. Рассмотрим возможные причины и решения проблемы на основе предоставленных вами данных.

1. Анализ природных ресурсов и конфигурация

Проверка конфигурации

Вы указали следующие ключевые параметры в конфигурационном файле ha.cf:

  • udpport: 694
  • bcast: eth0
  • ucast: eth0 192.168.141.137

Определение как unicast, так и broadcast может привести к путанице, так как две различные стратегии передачи пакетов используют разные методы связи. Поскольку у вас есть только два узла, рекомендуется использовать только unicast.

Решение: Закомментируйте или удалите строку с bcast в вашем ha.cf:

# bcast eth0

Оставьте только ucast для назначения адреса:

ucast eth0 192.168.141.137

2. Проверка сетевых настроек

Открытие порта

Проверьте настройки брандмауэра (firewall) на обоих машинах (osboxes и osboxes2). Убедитесь, что порт 694 открыт для UDP-трафика.

Для проверки и открытия порта на Ubuntu используйте следующие команды:

sudo ufw status           # Проверка текущего статуса брандмауэра
sudo ufw allow 694/udp    # Открытие порта 694 для UDP

Для CentOS или RHEL, используйте firewalld:

sudo firewall-cmd --zone=public --add-port=694/udp --permanent
sudo firewall-cmd --reload

3. Тестирование соединения

Используйте nc (netcat) для тестирования соединения на порту 694 между двумя узлами. Пример на osboxes:

nc -u -l 694

На osboxes2:

echo "test" | nc -u 192.168.141.135 694

Если osboxes получает сообщение, значит порт открыт и доступен.

4. Проверка системных логов

В логах, указанных в вашем конфигурационном файле, ищите дополнительные подсказки о том, почему heartbeat не работает:

cat /var/log/ha-log
cat /var/log/ha-debug

5. Убедитесь в правильности IP-адресов

Проанализируйте конфигурацию на предмет правильности IP-адресов обоих узлов. Убедитесь, что osboxes имеет IP-адрес 192.168.141.135, а osboxes2 – 192.168.141.137.

Заключение

Если после выполнения всех вышеуказанных шагов проблема сохраняется, обратитесь к документации, как на linux-ha.org, так и в мануалах команды man ha.cf, чтобы получить более подробную информацию о возможных конфигурационных опциях и диагностики.

Следуя этим рекомендациям, вы сможете устранить проблему с недоступностью heartbeat и портом 694. Не забудьте перезапустить службы heartbeat после внесения изменений в конфигурацию.

Оцените материал
Добавить комментарий

Капча загружается...