Вопрос или проблема
Я пытался настроить две виртуальные машины с активным сердцебиением: 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 после внесения изменений в конфигурацию.