阿里云ECS Ubuntu18 部署单节点etcd方法

阿里云ECS Ubuntu18 部署单节点etcd方法

安装

安装etcd

有两种方法安装,第一种使用apt,第二种从github下载编译好的二进制文件,我使用的是第二种。

我下的是3.3的最后一个版本。

mv /tmp/etcd-download-test/etcd /usr/local/bin/
mv /tmp/etcd-download-test/etcdctl /usr/local/bin/
# 编辑/etc/profile 设置API版本为3
export ETCDCTL_API=3

测试etcd

# 默认方式启动
etcd

etcdctl put mykey "this is awesome"
etcdctl get mykey

编辑配置文件

/etc/etcd/etcd.conf

因为云公有IP是动态绑定的,ifconfig不可能查到ECS的公网IP

name: "sigle"
data-dir: "/home/data/etcd"
# 172.17.35.123是阿里云ECS的内网IP
listen-client-urls: "http://172.17.35.123:2379"
advertise-client-urls: "http://172.17.35.123:2379"

后台运行

nohup etcd --config-file=/etc/etcd/etcd.conf >/tmp/etcd.log 2>&1 &

测试Go版本的Client

大坑

安装好Go后,创建一个go module项目,注意这里有个坑,依赖的gRPC版本不能使用默认,要改为:

google.golang.org/grpc v1.26.0 // indirect

详细看

[]: https://www.cnblogs.com/roastpiglet/p/13045039.html

get.go

package main

import (
	"context"
	"fmt"
	"go.etcd.io/etcd/clientv3"
	"log"
	"time"
)

const requestTimeout = time.Second * 5
const pIP = "X.X.X.X:2379"

func GetClient() *clientv3.Client {
	cli, err := clientv3.New(clientv3.Config{
	    // 如果是ECS内部访问,使用内网IP
		//Endpoints:   []string{"172.17.35.123:2379"},
		// 如果外部访问,使用公网IP
		Endpoints:   []string{pIP},
		DialTimeout: 5 * time.Second,
	})
	if err != nil {
		fmt.Println("connet fail.")
		return nil
	} else {
		fmt.Println("connet success.")
		return cli
	}
}

func KvGet() {
	cli := GetClient()
	if cli == nil {
		fmt.Println("cli == nil")
	}
	defer cli.Close()

	_, err := cli.Put(context.TODO(), "foo", "bar")
	if err != nil {
		log.Fatal(err)
	}

	ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
	resp, err := cli.Get(ctx, "foo")
	cancel()
	if err != nil {
		log.Fatal(err)
	}
	for _, ev := range resp.Kvs {
		fmt.Printf("%s : %s\n", ev.Key, ev.Value)
	}
}

func main() {
	KvGet()
}

参考链接

https://github.com/etcd-io/etcd/blob/master/clientv3/example_kv_test.go

https://github.com/etcd-io/etcd/tree/master/clientv3

https://github.com/etcd-io/etcd

https://www.cnblogs.com/roastpiglet/p/13045039.html

https://blog.csdn.net/taoerchun/article/details/104446800

http://www.manongjc.com/detail/13-vdpxhkvxlwuynxh.html

阿里云ECS Ubuntu18 部署单节点etcd方法

上一篇:vim-多文件和多窗口


下一篇:vim-命令行的操作