From 26ff3f3c0cc9fbe3638deb9b5648c7b6c8cef374 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Thu, 16 Dec 2021 10:09:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E7=82=B9=E5=9B=A0=E9=98=88=E5=80=BC?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=88=B0=E5=A4=87=E7=94=A8IP=E6=97=B6?= =?UTF-8?q?=E4=BF=9D=E6=8C=81=E5=9C=A8=E7=BA=BF=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/node_ip_address_dao.go | 1 + internal/tasks/health_check_executor.go | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) 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 } // 修改节点状态