| | |
| | | } |
| | | |
| | | //更新所有节点的脚本参数 |
| | | 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 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++ { |
| | |
| | | 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) |
| | |
| | | func AsMaster() bool { |
| | | AddNewMasterToPeers() |
| | | nowPeers := GetNowPeersList() |
| | | fmt.Println("nowPeers: ", nowPeers) |
| | | RequestMasterNodesOperation(nowPeers) |
| | | return true |
| | | } |
| | |
| | | //向集群加入新的master |
| | | 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", |