linux - SMTP 警报不适用于 keepalived

标签 linux smtp load-balancing keep-alive

我一直致力于一个项目,该项目将建立一组高可用性负载平衡器。负载平衡和高可用性软件似乎工作得很好(我正在使用 Crossroads 进行负载平衡,使用 Keepalived 使负载平衡服务器具有高可用性,并使用 Conntrackd 进行负载平衡器的健康检查)但我在设置配置时遇到问题Keepalived 文件在状态转换发生时发送电子邮件(master->backup/backup->master)。我已按照手册页 (man keepalived.conf) 上的说明进行操作,告诉我如何设置电子邮件通知,但我未能在预期时间收到电子邮件。我很容易出现拼写检查和简单的错误,但在检查了将近 10 个小时之后,我似乎找不到任何东西,而且我已经没有什么可以尝试的了。

我正在使用的服务器之一(我将其命名为 loadbalance1)有时会在发生更改时使用 smtp_alert 发送电子邮件,但它只会在它从备份转换为主控(而不是主控到备份)时通知我).当它不起作用时,日志文件(/var/log/messages 和/var/log/syslog)通知我出现 SMTP 错误状态 550。我知道这些问题与配置文件中指定的错误电子邮件地址有关,但据我所知它们是正确的。我所拥有的唯一表明 keepalived 或我的配置文件错误的是系统管理员通过电子邮件向人们发送有关“{”是不正确的邮件收件人的消息。我在计算机上打开了 smtp 端口。发生的另一件奇怪的事情是,有时当 keepalived 尝试联系邮件服务器时,它想查看本地机器,但它不在。我指定邮件服务器在别处,但出于某种原因它想在本地查看。

另一台服务器 loadbalance2 永远不会发送 smtp_alert 来发送电子邮件,无论它进行何种状态转换。我可以在 keepalived 的日志文件(/var/log/messages 和/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
      }

如果配置文件中存在一些不一致之处,我深表歉意。任何建议、帮助或意见都将受到赞赏。如果您需要更多信息,我将很乐意提供帮助。

最佳答案

对于那些可能面临同样问题的人,我设法解决了这个问题。我不确定这是否是解决方案,但它可能有所贡献。

-我不得不将机器的日期和时间更改为当前时间(其中一台由于是克隆机而关闭了几年)。电子邮件服务器可能由于系统时间间隔而阻止了后端服务器的电子邮件?

-日期-s hh:mm:ss

-日期-s年-月-日

- 必须解决两台机器上具有相同主机名的问题。正如我所说,它是另一个的克隆,我从来没有意外地改变过它。我可能一直从后端服务器收到通知,但从未区分这两者,因为我收到来自同一主机名的电子邮件

-对配置文件做了一个应该可以忽略不计的小改动

    global_defs
    {
          notification_email {
              user@domain.com
          }
    }

不确定这是否有所不同,但哦,好吧......现在可以使用了

关于linux - SMTP 警报不适用于 keepalived,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6472326/

相关文章:

您可以使用 LD_PRELOAD 更改结构吗

linux - 复制文件夹,保留目标中的文件夹结构

node.js - 如何从本地应用程序服务器捕获电子邮件。 Nodejs

php - 最近PHPMAILER停止发送邮件

networking - haproxy 中每个后端的 maxconn 限制

wso2 - 使用 ESB 和 DSS 集群的动态负载平衡,WSO2

ssl - Play 2 : Support for Server Name Indication

linux - 使用 bash 脚本根据给定条件使用 sed 提取位置特定记录

linux - 我可以在 shell 脚本的第一行省略 "shebang"的完整路径吗?

java - SMTP c++ 客户端