0%

mac etcd

##一、使用 brew 安装

1、 确定 brew 是否有 etcd 包:

1
brew search etcd

当然肯定有这个包,这样做的好处是养成一个好的习惯,避免盲目使用 brew install balabala

####2、安装

1
brew install etcd

image

####3、运行 etcd
安装完后,会有相关提示,告知我们怎么使用,推荐使用 brew services 来管理这些应用。
运行 brew services list, 可以看到相关应用的状况,很方便。哎,真香!

image

brew services 常用的操作

1
2
3
4
5
6
7
8
# 启动某个应用,这里用 etcd 做演示
brew services start etcd

# 停止某个应用
brew services stop etcd

# 查看当前应用列表
brew services list

image

从执行结果中可以看出:

  • etcdserver: name = default, name表示节点名称,默认为default。
  • etcdserver: data dir = default.etcd,data-dir保存日志和快照的目录,默认为当前工作目录“./default.etcd/”。
  • etcdserver: initial advertise peer URLs = http://localhost:2380,通过http://localhost:2380,和集群中其他节点通信。
  • etcdserver: advertise client URLs = http://localhost:2379,通过http://localhost:2379,对外提供HTTP API服务,供客户端交互。如果配置webui,就使用这个地址。
  • etcdserver: heartbeat = 100ms leader发送心跳到followers的间隔时间。
  • etcdserver: election = 1000ms 重新投票的超时时间,如果follow在该时间间隔没有收到心跳包,会触发重新投票,默认为1000ms
  • 集群和每个节点都会生成一个 uuid。
  • 启动的时候,会运行 raft协议,选举出 leader。

好了, etcd 已经启动了,现在验证下,是否正确的启动:

1
etcdctl endpoint health

正常情况会输出:
image

至此,etcd 已经安装完毕。

二、安装etcd webui

在安装etcd webui之前,请确保已安装node工具。使用brew search node命令,可以查看候选安装包;使用brew install node命令,即可安装node工具。

使用git命令下载etcd webui代码,并修改配置文件:

1
2
3
$ git clone https://github.com/henszey/etcd-browser.git
$ cd etcd-browser/
$ vim server.js

编辑server.js,修改内容如下:

1
2
3
var etcdHost = process.env.ETCD_HOST || '127.0.0.1'; // || '172.17.42.1';
var etcdPort = process.env.ETCD_PORT || 2379; // 4001
var serverPort = process.env.SERVER_PORT || 8000;

将etcd host修改为本机,将etcd port修改为2379(对于旧版etcd,修改为4001)。

在安装etcd webui之前,务必先启动etcd。

启动etcd webui,执行命令:

1
node server.js

执行结果如下所示:

1
proxy /api requests to etcd on 127.0.0.1:2379etc-browser listening on port 8000

在浏览器中,直接访问:http://127.0.0.1:8000/,响应页面如下:

image

至此,mac下安装etcd成功,配置etcd可视化页面etcd webui成功。

##三、操作
最常见的就是put、get和del命令。

1
2
3
4
5
6
7
8
9
10
11
# 放入一个 键值对
~ etcdctl put "name" "zyq1"
OK
#取出一个 键值对
~ etcdctl get "name"
name
zyq1
# 删除一个 键值对
~ etcdctl del "name"
1
# 放入一个 键值对

watch
watch命令用来监测key的变化,会建立长连接,一直监听。

1
2
3
4
5
6
 ~  etcdctl watch "name"
PUT
name
zyq1
DELETE
name

##四、租约
租约是一段时间,可以为etcd的key授予租约。当key被附加到租约时,它的生存时间被绑定到租约的生存时间,一旦租约的TTL到期,租约就过期并且所有附带的key都将被删除。

一个租约可以绑定不止一个key。

1
2
3
4
5
6
7
8
9
10
# 创建一个20s的租约
$ ./etcdctl lease grant 20
lease 694d673115905e37 granted with TTL(20s)

# 使用租约的 id 进行 put 操作
$ ./etcdctl put --lease=694d673115905e37 "name" "zyq"

# 20s后get发现 key被删除了
$ ./etcdctl get "name"
# 空应答

租约可以被删除

1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建一个20s的租约
$ ./etcdctl lease grant 1000
lease 694d673115905e49 granted with TTL(1000s)

# 使用租约的 id 进行 put 操作
$ ./etcdctl put --lease=694d673115905e49 "name" "zyq"
OK
# 删除租约
$ ./etcdctl lease revoke 694d673115905e49
lease 694d673115905e49 revoked
# 发现key也被删除了
$ ./etcdctl get "name"
# 空应答

租约可以自动续租

1
2
3
4
5
6
7
# 创建一个20s的租约
$ ./etcdctl lease grant 20
lease 694d673115905e4f granted with TTL(20s)
# 自动续租
$ ./etcdctl lease keep-alive 694d673115905e4f
lease 694d673115905e4f keepalived with TTL(20)
lease 694d673115905e4f keepalived with TTL(20)

————————————————
转自链接:
https://learnku.com/articles/42515
https://blog.csdn.net/chinawangfei/article/details/94555155

------------- 本文结束 感谢您的阅读-------------