系统相关
首页 > 系统相关> > linux-SMTP警报不适用于keepalived

linux-SMTP警报不适用于keepalived

作者:互联网

我一直在进行一个项目,该项目将建立一组高度可用的负载平衡器.负载平衡和高可用性软件似乎运行良好(我正在使用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
          }
    }

不知道这是否有所作为,但是哦…现在可以了

标签:smtp,load-balancing,linux,keep-alive
来源: https://codeday.me/bug/20191208/2090013.html