NLB信息
负载均衡器:LoadBal
节点1
NODE 2
每当节点不充当负载平衡服务器时,我希望收到电子邮件。我有一个计划任务,连续运行以下脚本。当节点不充当负载平衡服务器时,脚本会向我发送电子邮件。
我的测试场景:
场景1:
从NLB停止节点1但我没有收到电子邮件。
情景2
停止了任务。我没有启用节点1,它仍然无法使用
完成任务。我收到了一封电子邮件,要检查我的NLB
将节点1添加回NLB我仍然每分钟都收到检查NLB失败(在制作中:我将每小时而不是每五分钟暂停一次脚本)
有什么理由?它可能必须与我的do while循环做一些事情吗?
cls
Import-Module NetworkLoadBalancingClusters
$nodeStatus = Get-NlbClusterNode -hostname "computer1"
$status = $nodeStatus[0].State.ToString()
$status1 = $nodeStatus[1].State.ToString()
do {
$flag = 1
if ($status -match "converged" -and $status1 -match "converged")
{
$message = "good"
}
else {
$message2 = "check nlb"
$flag = $flag + 1
}
if ($flag -igt 1) {
Write-Host "Sending Email notification to user"
$smtpServer = "smtp.sample.com"
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$msg = New-Object Net.Mail.MailMessage
$msg.To.Add("sample.google.com")
$msg.From = "SPagent@sample.com"
$msg.Subject = "NLB node(s) is not started"
$msg.Body = $message2
$smtp.Send($msg)
$body = ""
Start-Sleep -minutes 5
}
$response = "Y"
}
while ($response -eq "Y")
答案 0 :(得分:0)
在您的脚本中,您获得一次节点的状态,然后进入无限循环。因此,您的节点状态永远不会改变,这就是您在senario 1中没有收到通知电子邮件的原因。然后,使用senario 2表示节点1处于脱机状态,然后它永远不会更新它的状态,因此这就是您保留的原因收到电子邮件。您要做的是不断获取节点的状态。所以你可能想做这样的事情:
do {
$nodeStatus = Get-NlbClusterNode -hostname "computer1"
$status = $nodeStatus[0].State.ToString()
$status1 = $nodeStatus[1].State.ToString()
$flag = 1
# do your normal stuff ...
}
while ($response -eq "Y")