zoukankan      html  css  js  c++  java
  • etcd——是什么做什么如何用

    etcd是什么

    etcd是一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。 
    etcd是一个服务发现系统,具备以下的特点: 
    简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单 
    安全:支持SSL证书验证 
    快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作 
    可靠:采用raft算法,实现分布式系统数据的可用性和一致性

    etcd下载、安装、启动

    wget https://github.com/coreos/etcd/releases/download/v3.1.5/etcd-v3.1.5-linux-amd64.tar.gz
    
    tar xzvf etcd-v3.1.5-linux-amd64.tar.gz
    
    cd etcd-v3.1.5-linux-amd64
    
    启动一个单点的 etcd 服务,只需要运行 etcd 命令就行
    设置了数据源的本地存储路径为 ~/data.etcd,服务侦听的地址为0.0.0.0:2379
    etcd -data-dir ~/data.etcd -advertise-client-urls  http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379

    用screen 启动

    sh run.sh

    cd build
    ./etcd -version
    screen -dmS etcd ./etcd -data-dir ~/data.etcd -advertise-client-urls  http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379
    screen -wipe
    echo "ok"

    若默认启动的话:
    #./etcd

    etcd 默认将数据存放到当前路径的 default.etcd/ 目录下
    在 http://localhost:2380 和集群中其他节点通信
    在 http://localhost:2379 提供 HTTP API 服务,供客户端交互
    该节点的名称默认为 default
    集群和每个节点都会生成一个 uuid
    启动的时候,会运行 raft,选举出 leader 保证集群数据不丢失
    这将在端口2379上进行etcd侦听以进行客户端通信,并在端口2380上进行侦听以进行服务器到服务器的通信。(这两个端口已经被 IANA 官方预留给 etcd)

    etcdctl的使用

    etcdctl是一个命令行的客户端,它提供了一个简洁的命令,可理解为命令工具集,可以方便我们在对服务进行测试或者手动修改数据库内容。

    etcdctl与其他xxxctl的命令原理及操作类似(例如kubectl,systemctl)。

    Etcd常用命令

    (一)数据库操作命令
    etcd 在键的组织上采用了层次化的空间结构(类似于文件系统中目录的概念),数据库操作围绕对键值和目录的 CRUD [增删改查]
    (符合 REST 风格的一套操作:Create, Read, Update, Delete)完整生命周期的管理。 具体的命令选项参数可以通过 etcdctl command
    --help来获取相关帮助。 1)对象为键值 set[增:无论是否存在]:etcdctl set key value mk[增:必须不存在]:etcdctl mk key value rm[删]:etcdctl rm key update[改]:etcdctl update key value get[查]:etcdctl get key 2)对象为目录 setdir[增:无论是否存在]:etcdctl setdir dir mkdir[增:必须不存在]: etcdctl mkdir dir rmdir[删]:etcdctl rmdir dir updatedir[改]:etcdctl updatedir dir ls[查]:etcdclt ls (二)非数据库操作命令 backup[备份 etcd 的数据] etcdctl backup watch[监测一个键值的变化,一旦键值发生更新,就会输出最新的值并退出] etcdctl watch key exec-watch[监测一个键值的变化,一旦键值发生更新,就执行给定命令] etcdctl exec-watch key --sh -c "ls" member[通过 list、add、remove、update 命令列出、添加、删除 、更新etcd 实例到 etcd 集群中] etcdctl member list;etcdctl member add 实例;etcdctl member remove 实例;etcdctl member update 实例。 etcdctl cluster-health[检查集群健康状态] (三)常用配置参数 设置配置文件,默认为/etc/etcd/etcd.conf。 配置参数 参数说明 -name 节点名称 -data-dir 保存日志和快照的目录,默认为当前工作目录,指定节点的数据存储目录 -addr 公布的ip地址和端口。 默认为127.0.0.1:2379 -bind-addr 用于客户端连接的监听地址,默认为-addr配置 -peers 集群成员逗号分隔的列表,例如 127.0.0.1:2380,127.0.0.1:2381 -peer-addr 集群服务通讯的公布的IP地址,默认为 127.0.0.1:2380. -peer-bind-addr 集群服务通讯的监听地址,默认为-peer-addr配置 -wal-dir 指定节点的was文件的存储目录,若指定了该参数,wal文件会和其他数据文件分开存储 -listen-client-urls -listen-peer-urls 监听URL,用于与其他节点通讯 -initial-advertise-peer-urls 告知集群其他节点url. -advertise-client-urls 告知客户端url, 也就是服务的url -initial-cluster-token 集群的ID -initial-cluster 集群中所有节点 -initial-cluster-state -initial-cluster-state=new 表示从无到有搭建etcd集群 -discovery-srv 用于DNS动态服务发现,指定DNS SRV域名 -discovery 用于etcd动态发现,指定etcd发现服务的URL [https://discovery.etcd.io/],用环境变量表示
     1035  ./etcdctl -h
     1036  ./etcdctl set --ttl '10' key "Hello..."
     1037  ./etcdctl get key
     1038  ./etcdctl ls
     1039  ./etcdctl set key "Hello world"
     1040  ./etcdctl watch key
     1041  ./etcdctl rm key
     1042  ./etcdctl ls
     1043  ./etcdctl set testkey "Hello world"
     1044  ./etcdctl get testkey 
     1045  ./etcdctl exec-watch testkey -- sh -c 'll'
     1046  ./etcdctl exec-watch testkey -- sh -c 'ls'
     1047  ./etcdctl member list
     1048  ./etcdctl ll
     1049  ./etcdctl ls
     1050  ./etcdctl member list
     1002  ./etcdctl update key "haha"
     1003  ./etcdctl update testkey "haha........"
     1004  ./etcdctl update testkey "haha......."
     1005  ./etcdctl update testkey "haha........"
     1006  ./etcdctl -help
     1007  ./etcdctl ls
     1008  ./etcdctl member lsit
     1009  ./etcdctl member list
     1010  ./etcdctl ls
     1011  ./etcdctl member list
     1012  ./etcdctl ls
     1013  ./etcdctl member list
  • 相关阅读:
    在ASP.Net和IIS中删除不必要的HTTP响应头
    java合并多个word 2007 文档 基于docx4j
    [转]怎样与 CORS 和 cookie 打交道
    css 设置div半透明 悬浮在页面底部 不随滚动条滚动
    [转]理解Vuex的辅助函数mapState, mapActions, mapMutations用法
    [转]Vue中用props给data赋初始值遇到的问题解决
    [转]import xxx from 和 import {xxx} from的区别
    [转]详解vue父组件传递props异步数据到子组件的问题
    [转]js判断数据类型的四种方法
    [转]iview的render函数用法
  • 原文地址:https://www.cnblogs.com/xingchong/p/15750019.html
Copyright © 2011-2022 走看看