diff --git a/internal/db/models/node_ip_address_dao.go b/internal/db/models/node_ip_address_dao.go index 47ea783a..bb3ccb29 100644 --- a/internal/db/models/node_ip_address_dao.go +++ b/internal/db/models/node_ip_address_dao.go @@ -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 diff --git a/internal/tasks/health_check_executor.go b/internal/tasks/health_check_executor.go index eb11140f..ab982f50 100644 --- a/internal/tasks/health_check_executor.go +++ b/internal/tasks/health_check_executor.go @@ -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 } // 修改节点状态