| | |
| | | "encoding/json" |
| | | "errors" |
| | | "fmt" |
| | | "github.com/spf13/viper" |
| | | "io/ioutil" |
| | | "net/http" |
| | | "os/exec" |
| | | "strings" |
| | | "time" |
| | | |
| | | "github.com/spf13/viper" |
| | | ) |
| | | |
| | | //初始化配置文件 |
| | |
| | | return true, nil |
| | | } |
| | | |
| | | //初始化索引 |
| | | func InitIndex(indexPath string) bool { |
| | | resultMsg := CMDSC("sh " + indexPath + "/indexInit.sh") |
| | | if resultMsg == "运行失败" { |
| | | return false |
| | | } |
| | | return true |
| | | } |
| | | |
| | | //启动服务 |
| | | func StartServer(binPath string, ip string, port string) bool { |
| | | resultMsg := CMDSC("sh " + binPath + "/es_start.sh") |
| | | if resultMsg == "运行失败" { |
| | | return false |
| | | } |
| | | b := VerifyNodeServer(ip, port) |
| | | return b |
| | | return true |
| | | } |
| | | |
| | | //关闭服务 |
| | |
| | | if b == true { |
| | | resultMsg := CMDSC("sh " + binPath + "/es_stop.sh") |
| | | if resultMsg == "运行失败" { |
| | | return false |
| | | return true |
| | | } |
| | | time.Sleep(time.Second * 3) |
| | | } |
| | | return b |
| | | bs := VerifyShortNodeServer(ip, port) |
| | | return bs |
| | | } |
| | | |
| | | //更换节点角色 |
| | |
| | | return true, nil |
| | | } |
| | | |
| | | //更换节点集群名称 |
| | | func UpdateClusterName(configPath string, name 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("cluster.name", name) |
| | | if err := v.WriteConfig(); err != nil { |
| | | return false, err |
| | | } |
| | | 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") |
| | |
| | | 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 |
| | | } |
| | | |
| | | //验证节点服务是否正常启动 |
| | | 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++ { |
| | |
| | | if err != nil { |
| | | b = false |
| | | if i < 3 { |
| | | time.Sleep(time.Second * 10) |
| | | time.Sleep(time.Second * time.Duration(waitTime)) |
| | | continue |
| | | } |
| | | } else { |
| | |
| | | } |
| | | |
| | | //验证节点角色 |
| | | func VerifyNodeRole(configPath string, ) (string, error) { |
| | | func VerifyNodeRole(configPath string) (string, error) { |
| | | role := "slave" |
| | | v := viper.New() |
| | | v.SetConfigType("yml") |
| | |
| | | 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") |
| | |
| | | } |
| | | 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 |