From 71b8885babe6dfd25c91b007018347c0c1bfac74 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期五, 20 十月 2023 17:35:52 +0800 Subject: [PATCH] 添加主节点变更和主动切换功能 --- system-service/controllers/cluster.go | 63 +++++++++++++++++++++++++++++++ 1 files changed, 62 insertions(+), 1 deletions(-) diff --git a/system-service/controllers/cluster.go b/system-service/controllers/cluster.go index da13d0a..39b980f 100644 --- a/system-service/controllers/cluster.go +++ b/system-service/controllers/cluster.go @@ -1,6 +1,7 @@ package controllers import ( + "vamicro/config" "vamicro/system-service/models" "vamicro/system-service/service" "vamicro/system-service/vo" @@ -11,6 +12,49 @@ ) type ClusterController struct { +} + +// @Summary 鏌ヨ褰撳墠闆嗙兢鐘舵�� +// @Description 鏌ヨ鏈湴闆嗙兢 +// @Produce json +// @Tags cluster +// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" +// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" +// @Router /data/api-v/cluster/status [get] +func (cc ClusterController) GetClusterStat(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { + var clusterE models.Cluster + var reply = bhomeclient.Reply{ + Success: false, + Msg: "", + Data: nil, + } + + arr, err := clusterE.FindAll() + if err == nil { + if arr != nil && len(arr) > 0 { + // 琛ㄧず宸插姞鍏ラ泦缇� + reply.Success = true + + var nodeE models.Node + nodes, _ := nodeE.FindNodesByClusterId(arr[0].ClusterId) + //logger.Debug("鏌ヨ闆嗙兢鑺傜偣:", nodes) + for _, node := range nodes { + //logger.Debug("鑺傜偣:", node.NodeId, " serverId:", config.Server.AnalyServerId, " stat:", node.DriftState) + if node.NodeId == config.Server.AnalyServerId { + if node.DriftState == "master" { + reply.Msg = "master" + + } else { + reply.Msg = "slave" + } + break + } + } + reply.Data = nodes + } + } + + return &reply } // @Summary 鏌ヨ鏈湴闆嗙兢 @@ -27,13 +71,14 @@ if arr != nil && len(arr) > 0 { var nodeE models.Node nodes, _ := nodeE.FindNodesByClusterId(arr[0].ClusterId) - logger.Debugf("FindCluster nodes=%v", nodes) + //logger.Debugf("FindCluster nodes=%v", nodes) return &bhomeclient.Reply{Success: true, Data: map[string]interface{}{ "clusterId": arr[0].ClusterId, "clusterName": arr[0].ClusterName, "password": arr[0].Password, "nodes": nodes, "virtualIp": arr[0].VirtualIp, + "localId": config.Server.AnalyServerId, }} } else { return &bhomeclient.Reply{Success: true} @@ -70,6 +115,22 @@ } } +func (cc ClusterController) Update2Master(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { + var nodeVo vo.UpdateClusterVo + err := c.BindJSON(&nodeVo) + if err != nil || nodeVo.NodeId == "" { + return &bhomeclient.Reply{Success: false, Msg: "鍙傛暟鏈夎"} + } + + sv := service.NewClusterService(h.Bk) + b, _ := sv.UpdateDriftStateByNodeId(nodeVo.ClusterId, nodeVo.NodeId, "master") + if b { + return &bhomeclient.Reply{Success: true, Data: nil} + } else { + return &bhomeclient.Reply{Success: false, Msg: "鍙樻洿澶辫触"} + } +} + // @Summary 鎼滅储闆嗙兢 // @Description 鎼滅储闆嗙兢 // @Accept json -- Gitblit v1.8.0