From f541528a95fd0a8a68c4729a577ffd04b49231ee Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期三, 15 四月 2020 20:18:14 +0800 Subject: [PATCH] fix peers ip array --- controllers/swfsControllers.go | 66 +++++++++++++++++++++----------- 1 files changed, 43 insertions(+), 23 deletions(-) diff --git a/controllers/swfsControllers.go b/controllers/swfsControllers.go index 2c47473..cb6454c 100644 --- a/controllers/swfsControllers.go +++ b/controllers/swfsControllers.go @@ -1,6 +1,7 @@ package controllers import ( + "encoding/json" "fmt" "github.com/gin-gonic/gin" "io/ioutil" @@ -80,19 +81,21 @@ func AsMaVo() { AsMaster() - ReplaceLineContentBySearch(StartScriptAsMaVo, Option, config.Server.ScriptPath, StartServerScript) + ReplaceLineContentBySearch(Option+StartScriptAsMaVo, Option, config.Server.ScriptPath, StartServerScript) } func (sc *SeaweedfsController) RoleOfVolumeToMasterController(c *gin.Context) { AsMaster() - ReplaceLineContentBySearch(StartScriptAsMaVo, Option, config.Server.ScriptPath, StartServerScript) + ReplaceLineContentBySearch(Option+StartScriptAsMaVo, Option, config.Server.ScriptPath, StartServerScript) } func (sc *SeaweedfsController) RestartServerController(c *gin.Context) { StopServer(config.Server.ScriptPath) time.Sleep(time.Second * 1) StartServer(config.Server.ScriptPath) - result := strings.Split("=", GetLocalStartupItem(config.Server.ScriptPath, StartServerScript))[1] + //fmt.Println("GetLocalStartupItem: ", GetLocalStartupItem(config.Server.ScriptPath, StartServerScript)) + result := strings.Split(GetLocalStartupItem(config.Server.ScriptPath, StartServerScript), "=")[1] + fmt.Println("result: ", result) util.ResponseFormat(c, code.Success, result) } @@ -114,51 +117,67 @@ } //鏇存柊鎵�鏈夎妭鐐圭殑鑴氭湰鍙傛暟 -func UpdateAllNodesScriptArgument(nowPeers []interface{}) { - for _, val := range nowPeers { - ip := val.(string) +func UpdateAllNodesScriptArgument(peersIp []string) { + for _, ip := range peersIp { + fmt.Println("ip: ", ip) url := "http://" + ip + ":7020/node/api-v/swfs/updateSWFSService" + fmt.Println("url", url) http.Get(url) } } //璇锋眰浣滀负涓昏妭鐐规搷浣滄祦绋� func RequestMasterNodesOperation(nowPeers []interface{}) { + peersIp := make([]string, 0) + for _, val := range nowPeers { + peersIp = append(peersIp, strings.Split(val.(string), ":")[0]) + } coreBaseUnit, _ := strconv.Atoi(config.Server.CoreBaseUnit) - UpdateAllNodesScriptArgument(nowPeers) - RestartAllServer(nowPeers, coreBaseUnit) + UpdateAllNodesScriptArgument(peersIp) + RestartAllServer(peersIp, coreBaseUnit) } //閲嶅惎鎵�鏈夎妭鐐规湇鍔″苟楠岃瘉 func Restart(ip string, timeOut int) { url := "http://" + ip + ":7020/node/api-v/swfs/restartServer" + var info interface{} httpRes, _ := http.Get(url) defer httpRes.Body.Close() body, _ := ioutil.ReadAll(httpRes.Body) - startupItem := "" + json.Unmarshal(body, &info) + res, ok := info.(map[string]interface{}) + if !ok { + fmt.Println("http response interface can not change map[string]interface{}") + } + startupItem := res["data"].(string) if httpRes.StatusCode == 200 { startupItem = string(body) } tick := time.Tick(1 * time.Second) for countdown := timeOut; countdown > 0; countdown-- { - Verification(startupItem, ip) + result := Verification(startupItem, ip) + if result == true { + break + } <-tick } } -func Verification(startupItem string, ip string) { +//楠岃瘉鏈嶅姟鐘舵�� +func Verification(startupItem string, ip string) bool { + resStatu := false switch startupItem { case StartScriptAsVolume: verificationVolumeUrl := "http://" + ip + ":6700" _, volume1Err := http.Get(verificationVolumeUrl) if volume1Err == nil { - break + resStatu = true } case StartScriptAsMaster: verificationMasterUrl := "http://" + ip + ":6333" _, masterErr := http.Get(verificationMasterUrl) if masterErr == nil { - break + resStatu = true } case StartScriptAsMaVo: verificationMasterUrl := "http://" + ip + ":6333" @@ -166,26 +185,26 @@ _, masterErr := http.Get(verificationMasterUrl) _, volume1Err := http.Get(verificationVolumeUrl) if masterErr == nil && volume1Err == nil { - break + resStatu = true } } + return resStatu } //鑾峰彇鏈湴鍚姩椤� func GetLocalStartupItem(scriptPath string, scriptFile string) string { startupItem := GetNowLineContent(scriptPath+"/"+scriptFile, Option) - fmt.Println(startupItem) + fmt.Println("startupItem: ", startupItem) return startupItem } //鏋勫缓閲嶅惎娴佺▼ -func RestartAllServer(nowPeers []interface{}, coreBaseUnit int) { - coreThread := len(nowPeers)/coreBaseUnit + 1 +func RestartAllServer(peersIp []string, coreBaseUnit int) { + coreThread := len(peersIp)/coreBaseUnit + 1 masterIp := make([]string, 0) timeOut, _ := strconv.Atoi(config.Server.TimeOut) var waitGroup sync.WaitGroup - for i, val := range nowPeers { - ip := val.(string) + for i, ip := range peersIp { if (i+1)%coreThread == 0 { masterIp = append(masterIp, strings.Split(ip, ":")[0]) for i := 0; i < len(masterIp); i++ { @@ -196,7 +215,7 @@ masterIp = make([]string, 0) } else { masterIp = append(masterIp, strings.Split(ip, ":")[0]) - if len(nowPeers) == i+1 { + if len(peersIp) == i+1 { var waitGroup sync.WaitGroup for i := 0; i < len(masterIp); i++ { go Restart(masterIp[i], timeOut) @@ -213,7 +232,7 @@ //鑾峰彇鏌ユ壘鍐呭褰撳墠琛屽唴瀹� func GetNowLineContent(filePath string, searchContent string) string { - scriptStr := "cat" + filePath + "| grep " + searchContent + scriptStr := "cat " + filePath + "| grep " + searchContent fmt.Println("scriptStr: ", scriptStr) return strings.Split(util.RunScript(scriptStr), "\n")[0] } @@ -224,7 +243,7 @@ if nowPeers == nil || len(nowPeers) == 0 { return false } - ReplaceLineContentBySearch(StartScriptAsVolume, Option, config.Server.ScriptPath, StartServerScript) + ReplaceLineContentBySearch(Option+StartScriptAsVolume, Option, config.Server.ScriptPath, StartServerScript) ReplaceLineContentBySearch(GetNewPeers(), Peer, config.Server.ScriptPath, StartServerScript) StartServer(config.Server.ScriptPath) return true @@ -234,6 +253,7 @@ func AsMaster() bool { AddNewMasterToPeers() nowPeers := GetNowPeersList() + fmt.Println("nowPeers: ", nowPeers) RequestMasterNodesOperation(nowPeers) return true } @@ -272,7 +292,7 @@ //鍚戦泦缇ゅ姞鍏ユ柊鐨刴aster func AddNewMasterToPeers() (result bool) { peer := config.Server.EsServerIp + ":6333" - addUrl := "http://" + config.Server.EsServerIp + ":" + config.Server.EsServerPort + "/" + config.BasicFS.IndexName + "/_update_by_query" + addUrl := "http://" + config.Server.EsServerIp + ":" + config.Server.EsServerPort + "/" + config.BasicFS.IndexName + "/_update_by_query?refresh=true" addJson := `{ "script": { "lang": "painless", -- Gitblit v1.8.0