github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/etcd/cluster/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "encoding/json" 6 "fmt" 7 "github.com/prometheus/common/log" 8 "go.etcd.io/etcd/clientv3" 9 "time" 10 ) 11 12 var ( 13 dialTimeout = 5 * time.Second 14 requestTimeout = 2 * time.Second 15 endpoints = []string{"192.168.1.151:2377", "192.168.1.151:2378", "192.168.1.151:2379"} 16 ) 17 18 func main() { 19 20 cli, err := clientv3.New(clientv3.Config{ 21 Endpoints: endpoints, 22 DialTimeout: dialTimeout, 23 }) 24 if err != nil { 25 log.Fatal(err) 26 } 27 defer cli.Close() 28 29 showMemberList(cli) 30 } 31 32 func put(cli *clientv3.Client) { 33 kv := clientv3.NewKV(cli) 34 if response, err := kv.Put(context.TODO(), "/cron/jobs/job1", "{xxx:xxx}", clientv3.WithPrevKV()); err != nil { 35 log.Fatal(response) 36 } else { 37 fmt.Println(response.Header.Revision) 38 if response.PrevKv != nil { 39 fmt.Println("value : ", string(response.PrevKv.Value)) 40 } 41 } 42 } 43 44 func showMemberList(cli *clientv3.Client) { 45 resp, err := cli.MemberList(context.Background()) 46 if err != nil { 47 log.Fatal(err) 48 } 49 databytes, err := json.MarshalIndent(resp.Members, "", " ") 50 fmt.Println("members:", string(databytes)) 51 for _, member := range resp.Members { 52 status, err := cli.Status(context.TODO(), member.ClientURLs[0]) 53 if err != nil { 54 fmt.Println(err) 55 continue 56 } 57 fmt.Println(status) 58 } 59 60 } 61 62 func addMember(cli *clientv3.Client) { 63 peerURLs := []string{"http://192.168.1.151:2383"} 64 mresp, err := cli.MemberAdd(context.Background(), peerURLs) 65 66 if err != nil { 67 log.Fatal(err) 68 } 69 fmt.Println("added member.PeerURLs:", mresp.Member.PeerURLs) 70 resp, err := cli.MemberList(context.Background()) 71 if err != nil { 72 log.Fatal(err) 73 } 74 fmt.Println("添加后 members:", resp.Members) 75 }