From ff666a8621bdad5abcf0301da721726f8debdff5 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sun, 29 Aug 2021 16:01:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E5=81=A5=E5=BA=B7=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E8=BF=9E=E7=BB=AD=E4=B8=8B=E7=BA=BF=E6=AC=A1=E6=95=B0=E4=BB=8E?= =?UTF-8?q?1=E5=8D=87=E7=BA=A7=E4=B8=BA3/=E4=BF=AE=E5=A4=8D=E5=81=A5?= =?UTF-8?q?=E5=BA=B7=E6=A3=80=E6=9F=A5=E5=8F=AF=E8=83=BD=E5=AF=BC=E8=87=B4?= =?UTF-8?q?DNS=E4=B8=8D=E6=96=AD=E5=90=8C=E6=AD=A5=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/node_cluster_dao.go | 7 ++--- internal/db/models/node_dao.go | 8 ++++-- internal/setup/sql_upgrade.go | 37 +++++++++++++++++++++++++ internal/tasks/health_check_executor.go | 6 ++-- 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/internal/db/models/node_cluster_dao.go b/internal/db/models/node_cluster_dao.go index a37fbce4..59c2bb90 100644 --- a/internal/db/models/node_cluster_dao.go +++ b/internal/db/models/node_cluster_dao.go @@ -301,11 +301,8 @@ func (this *NodeClusterDAO) UpdateClusterHealthCheck(tx *dbs.Tx, clusterId int64 op := NewNodeClusterOperator() op.Id = clusterId op.HealthCheck = healthCheckJSON - err := this.Save(tx, op) - if err != nil { - return err - } - return this.NotifyUpdate(tx, clusterId) + // 不需要通知更新 + return this.Save(tx, op) } // CountAllEnabledClustersWithGrantId 计算使用某个认证的集群数量 diff --git a/internal/db/models/node_dao.go b/internal/db/models/node_dao.go index ebc92fcd..59debf99 100644 --- a/internal/db/models/node_dao.go +++ b/internal/db/models/node_dao.go @@ -1098,9 +1098,11 @@ func (this *NodeDAO) UpdateNodeUpCount(tx *dbs.Tx, nodeId int64, isUp bool, maxU return false, err } - err = this.NotifyDNSUpdate(tx, nodeId) - if err != nil { - return false, err + if changed { + err = this.NotifyDNSUpdate(tx, nodeId) + if err != nil { + return true, err + } } return diff --git a/internal/setup/sql_upgrade.go b/internal/setup/sql_upgrade.go index 16abacd0..42bcfed8 100644 --- a/internal/setup/sql_upgrade.go +++ b/internal/setup/sql_upgrade.go @@ -7,6 +7,7 @@ import ( "github.com/TeaOSLab/EdgeAPI/internal/errors" "github.com/TeaOSLab/EdgeAPI/internal/utils" "github.com/TeaOSLab/EdgeCommon/pkg/dnsconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/systemconfigs" "github.com/iwind/TeaGo/dbs" @@ -45,6 +46,9 @@ var upgradeFuncs = []*upgradeVersion{ { "0.2.8.1", upgradeV0_2_8_1, }, + { + "0.3.0", upgradeV0_3_0, + }, } // UpgradeSQLData 升级SQL数据 @@ -324,3 +328,36 @@ func upgradeV0_2_8_1(db *dbs.DB) error { return nil } + +// v0.3.0 +func upgradeV0_3_0(db *dbs.DB) error { + // 升级健康检查 + ones, _, err := db.FindOnes("SELECT id,healthCheck FROM edgeNodeClusters WHERE state=1") + if err != nil { + return err + } + for _, one := range ones { + var clusterId = one.GetInt64("id") + var healthCheck = one.GetString("healthCheck") + if len(healthCheck) == 0 { + continue + } + var config = &serverconfigs.HealthCheckConfig{} + err = json.Unmarshal([]byte(healthCheck), config) + if err != nil { + continue + } + if config.CountDown <= 1 { + config.CountDown = 3 + configJSON, err := json.Marshal(config) + if err != nil { + continue + } + _, err = db.Exec("UPDATE edgeNodeClusters SET healthCheck=? WHERE id=?", string(configJSON), clusterId) + if err != nil { + return err + } + } + } + return nil +} diff --git a/internal/tasks/health_check_executor.go b/internal/tasks/health_check_executor.go index 57433d26..40fb90df 100644 --- a/internal/tasks/health_check_executor.go +++ b/internal/tasks/health_check_executor.go @@ -6,11 +6,11 @@ import ( "encoding/json" "github.com/TeaOSLab/EdgeAPI/internal/db/models" "github.com/TeaOSLab/EdgeAPI/internal/errors" + "github.com/TeaOSLab/EdgeAPI/internal/remotelogs" "github.com/TeaOSLab/EdgeAPI/internal/utils" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/iwind/TeaGo/lists" - "github.com/iwind/TeaGo/logs" "github.com/iwind/TeaGo/types" "net" "net/http" @@ -95,7 +95,7 @@ func (this *HealthCheckExecutor) Run() ([]*HealthCheckResult, error) { countTries = 10 } if countTries < 1 { - countTries = 1 + countTries = 3 } tryDelay := 1 * time.Second @@ -134,7 +134,7 @@ func (this *HealthCheckExecutor) Run() ([]*HealthCheckResult, error) { if healthCheckConfig.AutoDown { isChanged, err := models.SharedNodeDAO.UpdateNodeUpCount(nil, int64(result.Node.Id), result.IsOk, healthCheckConfig.CountUp, healthCheckConfig.CountDown) if err != nil { - logs.Println("[HEALTH_CHECK]" + err.Error()) + remotelogs.Error("HEALTH_CHECK", err.Error()) } else if isChanged { // 通知恢复或下线 if result.IsOk {