etcd第一集
网站: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)
#设置一个键的值
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/

etcd第一集的更多相关文章
- NanUI for Winform 使用示例【第一集】——山寨个代码编辑器
NanUI for Winform从昨天写博客发布到现在获得了和多朋友的关注,首先感谢大家的关注和支持!请看昨天本人的博文<NanUI for Winform发布,让Winform界面设计拥有无 ...
- Windows Phone开发(43):推送通知第一集——Toast推送
原文:Windows Phone开发(43):推送通知第一集--Toast推送 好像有好几天没更新了,抱歉抱歉,最近"光荣"地失业,先是忙于寻找新去处,唉,暂时没有下文.而后又有一 ...
- FJUT第四周寒假作业之第一集,临时特工?(深度优先搜索)
原网址:http://210.34.193.66:8080/vj/Contest.jsp?cid=163#P2 第一集,临时特工? TimeLimit:1000MS MemoryLimit:128M ...
- k8s部署etcd数据库集群
⒈下载 https://github.com/etcd-io/etcd/releases ⒉解压 tar -zxvf etcd-v3.3.12-linux-amd64.tar.gz ⒊移动可执行文件及 ...
- etcd-v2第一集
网站:https://github.com/coreos/etcd 一些观点:https://yq.aliyun.com/articles/11035 1.etcd是键值存储仓库,配置共享和服务发现2 ...
- Unity 图文重现官方教程视频 2droguelike 第一集
初衷: 本人初学Unity,四处收集了一些视频和教材,学习和摸索了一段时间, 我发现官网教程简单易上手,只不过他是英文讲解不方便,我就想把他翻译翻译吧, 然后我又发现看视频学习要暂停回放好多遍,麻烦, ...
- 创芯Xilinx Microblaze 学习系列第一集
创芯Xilinx Microblaze 学习系列第一集 Xilinx ISE Design Suite 13.2 The MicroBlaze™ embedded processor soft cor ...
- k8s集群部署之环境介绍与etcd数据库集群部署
角色 IP 组件 配置 master-1 192.168.10.11 kube-apiserver kube-controller-manager kube-scheduler etcd 2c 2g ...
- SpringBoot第一集:入门(2020最新最易懂)
2020最新SpringBoot第一集:入门(2020最新最易懂) 学习思路: 是什么?为什么要学,有什么用?有什么特点?简单明了的总结一句话! SpringBoot推荐开发工具: Spring To ...
随机推荐
- Hadoop的数据输入的源码解析
我们知道,任何一个工程项目,最重要的是三个部分:输入,中间处理,输出.今天我们来深入的了解一下我们熟知的Hadoop系统中,输入是如何输入的? 在hadoop中,输入数据都是通过对应的InputFor ...
- iOS保存cookie的方法
SURLRequest*request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/ ...
- j2ee学习资料收集
1 tomcat web.xml加载顺序, 讲解了web.xml什么时候加载,内部的各个组件加载的顺序 http://blog.sina.com.cn/s/blog_4553489c01010 ...
- xamarin.forms 版本自动更新(针对android)
1.首先同过url地址下载文件,这里必须要启用单独一个下载线程 new Thread(run).Start(); 通过url下载的方法 public void run() { ...
- htop基本使用
一.什么是htop? top是所有类unix系统的必备工具,能直观方便的查看到系统负载.内存及进程等信息. 而htop具有top工具的全部功能且还新增了一些额外的功能和使用体验改进.与top相比,其具 ...
- nodejs入门 SSH服务器远程部署nodejs2
服务器安装nodejs昨天好像出了点问题 今天参考的链接是http://nodejs.cn/download/package-manager/#debian-and-ubuntu-based-linu ...
- linux命令:chgrp
1.命令介绍: chgrp用来改变文件或目录所属组的权限,要改变成的组必须在/etc/group文件存在才可以. 2.命令格式: chgrp [选项] 组 文件 3.命令参数: 必要参数: -c 当发 ...
- 炫酷的Linux终端命令大全-1
1. 命令行日常快捷键. CTRL + U ------------------------------- 剪切光标前的内容 CTRL + K ----- ...
- PSP(16/03/14-16/03/15)
//整理了自己过去的时间记录文件,最早用电子版记录是15/04/21,依旧断断续续记录到15/11/21,每月至少三次记录,然而自己并没有对数据进行整理,只是纯粹记录,真是浪费了花在上面的时间.期间八 ...
- IE8下ajax请求失败的解决方案
今天发现IE9以下的浏览器,ajax请求返回数据异常研究半天发现是type参数未设置,由于默认方式是Get,添加上type:“post”就恢复正常了