From e189b1942c8130d473a1a4128c3d9ef5edfaa564 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期五, 23 十月 2020 10:58:30 +0800 Subject: [PATCH] fix --- ClusterApi.go | 109 +++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 82 insertions(+), 27 deletions(-) diff --git a/ClusterApi.go b/ClusterApi.go index d1e0dc4..c41143c 100644 --- a/ClusterApi.go +++ b/ClusterApi.go @@ -12,6 +12,7 @@ "strings" "time" ) + //鍒濆鍖栭厤缃枃浠� func InitYml(configPath string) (bool, error) { v := viper.New() @@ -28,19 +29,36 @@ return true, nil } -//鍚姩鏈嶅姟 -func StartServer(binPath string, ip string) bool { - resultMsg := CMDSC("sh " + binPath + "/elasticsearch -d") +//鍒濆鍖栫储寮� +func InitIndex(indexPath string) (bool) { + resultMsg := CMDSC("sh " + indexPath + "/indexInit.sh") if resultMsg == "杩愯澶辫触" { return false } - bool := VerifyNodeServer(ip, "9200") - return bool + return true +} + +//鍚姩鏈嶅姟 +func StartServer(binPath string, ip string, port string) bool { + resultMsg := CMDSC("sh " + binPath + "/es_start.sh") + if resultMsg == "杩愯澶辫触" { + return false + } + return true } //鍏抽棴鏈嶅姟 -func StopServer(binPath string) { - +func StopServer(binPath string, ip string, port string) bool { + b := VerifyShortNodeServer(ip, port) + if b == true { + resultMsg := CMDSC("sh " + binPath + "/es_stop.sh") + if resultMsg == "杩愯澶辫触" { + return true + } + time.Sleep(time.Second * 3) + } + bs := VerifyShortNodeServer(ip, port) + return bs } //鏇存崲鑺傜偣瑙掕壊 @@ -61,34 +79,28 @@ if err := v.WriteConfig(); err != nil { return false, err } - return true,nil + return true, nil } - -//楠岃瘉璇ヨ妭鐐规槸鍚﹁鍒涘缓杩� -func VerifyCreated(configPath string, ip string) (bool, error) { +//楠岃瘉璇ヨ妭鐐规槸鍚﹁浣跨敤杩� +func VerifyCreated(configPath string) (bool, error) { v := viper.New() v.SetConfigType("yml") v.SetConfigName("elasticsearch") v.AddConfigPath(configPath) err := v.ReadInConfig() if err != nil { - return false, err + return true, err } hosts := v.GetStringSlice("discovery.zen.ping.unicast.hosts") - for _, pick := range hosts { - if pick == ip { - return true, errors.New("璇ヨ妭鐐瑰凡缁忚鎵ц鈥滃垱寤洪泦缇も��") - } - } if len(hosts) > 1 { - return true, errors.New("璇ヨ妭鐐瑰凡缁忚鎵ц鈥滃姞鍏ラ泦缇も��") + return true, errors.New("璇ヨ妭鐐瑰凡缁忚浣跨敤") } return false, nil } //楠岃瘉鑺傜偣鏈嶅姟鏄惁姝e父鍚姩 -func VerifyNodeServer(ip string, port string) bool { +func VerifyNodeServer(ip string, port string, waitTime int) bool { b := false url := "http://" + ip + ":" + port for i := 1; i < 3; i++ { @@ -96,7 +108,7 @@ if err != nil { b = false if i < 3 { - time.Sleep(time.Second * 10) + time.Sleep(time.Second * time.Duration(waitTime)) continue } } else { @@ -105,6 +117,16 @@ } } return b +} + +//楠岃瘉鑺傜偣鏈嶅姟鏄惁姝e父鍚姩(鐭獙璇�) +func VerifyShortNodeServer(ip string, port string) bool { + url := "http://" + ip + ":" + port + _, err := HttpRC("GET", url, nil) + if err != nil { + return false + } + return true } //楠岃瘉鑺傜偣瑙掕壊 @@ -123,6 +145,37 @@ role = "master" } return role, nil +} + +//鏌ヨ缁勬挱鍒楄〃 +func GetDiscoveryZenPingUnicastHosts(configPath string) ([]string, error) { + v := viper.New() + v.SetConfigType("yml") + v.SetConfigName("elasticsearch") + v.AddConfigPath(configPath) + err := v.ReadInConfig() + if err != nil { + return nil, err + } + hosts := v.GetStringSlice("discovery.zen.ping.unicast.hosts") + return hosts, nil +} + +//璁剧疆缁勬挱鍒楄〃 +func SetDiscoveryZenPingUnicastHosts(configPath string, hosts []string) (bool, error) { + v := viper.New() + v.SetConfigType("yml") + v.SetConfigName("elasticsearch") + v.AddConfigPath(configPath) + err := v.ReadInConfig() + if err != nil { + return false, err + } + v.Set("discovery.zen.ping.unicast.hosts", hosts) + if err := v.WriteConfig(); err != nil { + return false, err + } + return true, nil } //鏇存柊缁勬挱鍒楄〃 @@ -154,18 +207,22 @@ } //娣诲姞缁勬挱鎴愬憳 -func AddDiscoveryZenPingUnicastHosts(configPath string, ip string) []string { +func AddDiscoveryZenPingUnicastHosts(configPath string, ip string) (bool, error) { v := viper.New() v.SetConfigType("yml") v.SetConfigName("elasticsearch") v.AddConfigPath(configPath) - err := v.ReadInConfig() - if err != nil { - + errR := v.ReadInConfig() + if errR != nil { + return false, errR } hosts := v.GetStringSlice("discovery.zen.ping.unicast.hosts") hosts = append(hosts, ip) - return hosts + v.Set("discovery.zen.ping.unicast.hosts", hosts) + if errW := v.WriteConfig(); errW != nil { + return false, errW + } + return true, nil } type NodeInfo struct { @@ -229,7 +286,6 @@ return flag, nil } - func CMDSC(scriptStr string) string { cmd := exec.Command("sh", "-c", scriptStr) var out bytes.Buffer @@ -248,7 +304,6 @@ } request, err := http.NewRequest(method, url, bytes.NewBuffer(parama)) request.Header.Set("Content-type", "application/json") - if err != nil { fmt.Println("build request fail !") return nil, err -- Gitblit v1.8.0