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  }