节点因阈值切换到备用IP时保持在线状态

This commit is contained in:
GoEdgeLab
2021-12-16 10:09:19 +08:00
parent 68ce114319
commit 26ff3f3c0c
2 changed files with 24 additions and 0 deletions

View File

@@ -443,6 +443,7 @@ func (this *NodeIPAddressDAO) UpdateAddressBackupIP(tx *dbs.Tx, addressId int64,
return errors.New("invalid addressId")
}
var op = NewNodeIPAddressOperator()
op.IsUp = true // IP必须在线备用IP才会有用
op.Id = addressId
op.BackupThresholdId = thresholdId
op.BackupIP = ip

View File

@@ -146,6 +146,26 @@ func (this *HealthCheckExecutor) Run() ([]*HealthCheckResult, error) {
}
if isChanged {
// 发送消息
var message = ""
var messageType string
var messageLevel string
if result.IsOk {
message = "健康检查成功,节点\"" + result.Node.Name + "\"IP\"" + result.NodeAddr + "\"已恢复上线"
messageType = models.MessageTypeHealthCheckNodeUp
messageLevel = models.MessageLevelSuccess
} else {
message = "健康检查失败,节点\"" + result.Node.Name + "\"IP\"" + result.NodeAddr + "\"已自动下线"
messageType = models.MessageTypeHealthCheckNodeDown
messageLevel = models.MessageLevelError
}
err = models.NewMessageDAO().CreateNodeMessage(nil, nodeconfigs.NodeRoleNode, this.clusterId, int64(result.Node.Id), messageType, messageLevel, message, message, nil, false)
if err != nil {
remotelogs.Error("HEALTH_CHECK_EXECUTOR", err.Error())
return
}
// 触发阈值
err = models.SharedNodeIPAddressDAO.FireThresholds(nil, nodeconfigs.NodeRoleNode, int64(result.Node.Id))
if err != nil {
@@ -153,6 +173,9 @@ func (this *HealthCheckExecutor) Run() ([]*HealthCheckResult, error) {
return
}
}
// 我们只处理IP的上下线不修改节点的状态
return
}
// 修改节点状态