zoukankan      html  css  js  c++  java
  • 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)

    #设置一个键的值
    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/

  • 相关阅读:
    C# in Depth Third Edition 学习笔记-- Lambda表达式和表达式树
    几个比较实用的.Net 反编译工具
    使用Microsoft.Practices.EnterpriseLibrary.Data调用存数过程Output参数注意事项
    C# in Depth Third Edition 学习笔记-- C#2的一些特性
    C# in Depth Third Edition 学习笔记-- 可空类型
    C# in Depth Third Edition 学习笔记-- C#2.0: 解决C#1.0的问题 1 泛型
    C# in Depth Third Edition 学习笔记-- 值类型和引用
    .Net 程序员应该知道的工具和网站
    HTML 转 PDF
    C#、ASP.NET获取当前应用程序的绝对路径,获取程序工作路径 (转帖)
  • 原文地址:https://www.cnblogs.com/wjx0912/p/6132503.html
Copyright © 2011-2022 走看看