Я работал над проектом, который установит набор высокодоступных балансировщиков нагрузки.Программное обеспечение для балансировки нагрузки и высокой доступности, кажется, работает нормально (я использую Crossroads для балансировки нагрузки и Keepalived для обеспечения высокой доступности серверов балансировки нагрузки, а Conntrackd для проверки работоспособности балансировщиков нагрузки), но у меня возникают проблемы при настройке конфигурациифайл для Keepalived для отправки электронных писем при смене состояния (master-> backup / backup-> master).Я следовал инструкциям на страницах руководства (man keepalived.conf), в которых рассказывалось, как настроить уведомление по электронной почте, но я не получаю электронные письма в ожидаемое время.Я склонен к проверке орфографии и простой ошибке, но после просмотра этой проблемы в течение почти 10 часов я не могу ничего найти, и у меня заканчиваются вещи, которые можно попробовать.
Один из серверов, которые я использую (я назову его loadbalance1), иногда будет использовать smtp_alert для отправки электронных писем, когда происходит изменение, но он будет уведомлять меня только после перехода из резервной копии в главную (немастер для резервного копирования).Когда это не работает, файлы журнала (/ var / log / messages и / var / log / syslog) уведомляют меня о том, что возникает ошибка 550 SMTP.Я понимаю, что эти проблемы связаны с неправильным адресом электронной почты, указанным в файле конфигурации, но, насколько я могу судить, они верны.Единственное, что у меня есть, это говорит о том, что keepalived или мой конфигурационный файл неверны, это то, что sysadmin отправляет электронное письмо людям с сообщениями о том, что '{' является неподходящим получателем почты.У меня на компьютере открыт порт smtp.Еще одна странная вещь, которая происходит, иногда, когда keepalived пытается связаться с почтовым сервером, он хочет посмотреть на локальный компьютер, когда его там нет.Я указываю почтовый сервер как находящийся в другом месте, но по какой-то причине он хочет выглядеть локально.
Другой сервер loadbalance2 никогда не отправит smtp_alert для отправки электронных писем независимо от того, какой переход состояния он выполняет.В файлах журнала для keepalived (/ var / log / messages and / var / log / syslog) я вижу, что сервер резервного копирования loadbalance2 переходит в состояние MASTER, но никогда не отправляет электронное письмо.Выдает ту же ошибку, что и loadbalance1, но она здесь никогда не работает.Он имеет тот же файл конфигурации, что и loadbalance1.
Ниже приведен файл конфигурации, keepalived.conf
global_defs
{
notification_email
{
fakeemail@example.com
}
notification_email_from sysamin@example.com
##Mail server below##
smtp_server www.xxx.yyy.zzz
smtp_connect_timeout 30
lvs_id NLB_MASTER
vrrp_sync_group
{
group
{
loadbalance1
loadbalance2
}
##The following scripts don't seem to work properly either##
##The scripts are not executed at expected times ##
notify_master "/path/to/script.sh master"
notify_backup "/path/to/script.sh backup"
notify_fault "/path/to/script.sh fault"
notify "/path/to/script.sh"
smtp_alert
}
vrrp_instance loadbalance1
{
state MASTER
interface eth0
virtual_router_id 20
priority 100
#In some examples online smtp_alert is here
virtual_ipaddress
{
www.xxx.yyy.zzz/24 brd www.xxx.yyy.255 dev eth0
}
##Not entirely sure if this is correct##
notify_master "/path/to/script.sh master"
notify_backup "/path/to/script.sh backup"
notify_fault "/path/to/script.sh fault"
notify "/path/to/script.sh"
smtp_alert
}
vrrp_instance loadbalance2
{
state MASTER
interface eth0
virtual_router_id 30
priority 100
#In some examples online smpt_alert is here
virtual_ipaddress
{
www.xxx.yyy.zzz/24 brd www.xxx.yyy.255 dev eth1
}
##Not entirely sure if this is correct##
notify_master "/path/to/script.sh master"
notify_backup "/path/to/script.sh backup"
notify_fault "/path/to/script.sh fault"
notify "/path/to/script.sh"
smtp_alert
}
Если в файле конфигурации есть несколько несоответствий, прошу прощения.Любые предложения, помощь или мнения приветствуются.Если вам нужна дополнительная информация, я буду рад вам помочь.