etcd-v2第一集
网站:https://github.com/coreos/etcd
一些观点:https://yq.aliyun.com/articles/11035
1.etcd是键值存储仓库,配置共享和服务发现
2.2379用于客户端通信,2380用于节点通信。
3.etcd可以集群使用,也可以单机。不支持密码认证,但可选ssl认证,最好不要走公网。
4.数据持久化
5.开机启动
/usr/local/bin/etcd --name=test123 --data-dir=/home/wyt/bin/etcd-v3.0.15-linux-amd64/data
--listen-client-urls=http://0.0.0.0:2379 --listen-peer-urls=http://0.0.0.0:2380
--advertise-client-urls=http://0.0.0.0:2379 --initial-advertise-peer-urls=http://0.0.0.0:2380
说明:
--listen-client-urls list of URLs to listen on for client traffic(用户客户端数据通信端口)
--listen-peer-urls list of URLs to listen on for peer traffic(各个etcd节点的数据通信端口,交互,选举,数据同步等)
--advertise-client-urls list of this member's client URLs to advertise to the public(集群参数:etcd服务器之间通讯的端口)
--initial-advertise-peer-urls list of this member's peer URLs to advertise to the rest of the cluster(集群参数)
上面是我的理解,下面摘抄自其它地方(http://www.cnblogs.com/breg/p/5728237.html):
—data-dir 指定节点的数据存储目录,这些数据包括节点ID,集群ID,集群初始化配置,Snapshot文件,若未指定—wal-dir,还会存储WAL文件;
—wal-dir 指定节点的was文件的存储目录,若指定了该参数,wal文件会和其他数据文件分开存储。
—name 节点名称
—initial-advertise-peer-urls 告知集群其他节点url.
— listen-peer-urls 监听URL,用于与其他节点通讯
— advertise-client-urls 告知客户端url, 也就是服务的url
— initial-cluster-token 集群的ID
— initial-cluster 集群中所有节点
端口映射:
iptables -t nat -A PREROUTING -p tcp --dport 65079 -j REDIRECT --to-port 2379
iptables -t nat -A PREROUTING -p tcp --dport 65080 -j REDIRECT --to-port 2380
6.设置键值
etcdctl set mykey "abcdefg"
etcdctl get mykey
etcdctl rm mykey
curl -L http://192.168.8.163:2379/version
curl -L http://192.168.8.163:65079/version
7.测试命令(来自:http://debugo.com/using-etcd/?utm_source=tuicool&utm_medium=referral)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | #设置一个键的值 etcdctl set /foo/bar "hello world" hello world #设置一个带time to live的键 etcdctl set /foo/bar "hello world" --ttl 60 hello world #当值为"hello world"时,替换为"Goodbye world"。 etcdctl set /foo/bar "Goodbye world" --swap-with-value "hello world" etcdctl set /foo/bar "Goodbye world" --swap-with-value "hello world" Goodbye world etcdctl set /foo/bar "Goodbye world" --swap-with-value "hello world" Error: 101: Compare failed ([hello world != Goodbye world]) [7] #仅当不存在时创建 etcdctl mk /foo/new_bar "Hello world" Hello world etcdctl mk /foo/new_bar "Hello world" Error: 105: Key already exists (/foo/new_bar) [8] #仅当存在时更新建 etcdctl update /foo/bar "hello etcd" hello etcd #创建一个directory node etcdctl mkdir /foo/dir #创建一个directory node,或者将一个file node设置成directory node etcdctl setDir /foo/dir #删除file node etcdctl rm /foo/bar #删除directory node etcdctl rmdir /foo/dir etcdctl rm /foo/dir --dir #递归删除 etcdctl rm /foo/dir --recursive #当值为"Hello world"时删除 etcdctl rm /foo/bar --with-value "Hello world" #获得某个键的值 etcdctl get /foo/bar hello, etcd #获得某个键在集群内的一致性值 etcdctl get /foo/bar --consistent hello, etcd #获得一些扩展的元信息 etcdctl -o extended get /foo/bar Key: /foo/bar Created-Index: 14 Modified-Index: 14 TTL: 0 Etcd-Index: 14 Raft-Index: 5013 Raft-Term: 0 hello, etcd #其中,索引是一个对于etcd上任何改变中唯一、单调递增的整数。这个特殊的索引反映了etcd在某个key被创建后的时间点的etcd状态机。比如此时新建一个/foo/bar1,那么该节点的created-index和modified-index为15,代表了当前etcd的最新改变。 #列出目录的内容,-p则对directory node以/结尾 etcdctl ls /foo etcdctl ls /foo /foo/bar /foo/new_bar /foo/dir etcdctl ls / --recursive /foo /foo/bar /foo/new_bar /foo/dir #设置监视(watch),此时该命令会一直等待并输出下一次变化。 etcdctl watch /foo/bar hello, etcd! #while another terminal etcdctl update /foo/bar "hello, etcd!" hello, etcd! #持续监视更新 etcdctl watch /foo/bar --forever ...... #使用Ctrl+c结束 #当反生变化时执行一个应用 etcdctl exec-watch /foo/bar -- sh -c "echo hi" hi hi ...... #监视目录下所有节点的改变 etcdctl exec-watch --recursive /foo -- sh -c "echo hi" |
8.web界面
下载工程:https://github.com/henszey/etcd-browser
修改server.js
var etcdHost = process.env.ETCD_HOST || '127.0.0.1';
var etcdPort = process.env.ETCD_PORT || 2379;
var serverPort = process.env.SERVER_PORT || 8000;
前面2个是etcd地址和数据端口,8000是提供的web端口,在浏览器上输入:http://192.168.8.xx:8000/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战