etcd

ETCD:多机上的集群

允我心安 提交于 2019-12-05 16:51:21
原文地址: cluster on multiple machines 总览 启动一个集群静态的要求是每一个集群中的成员需要知道其他成员的位置。在许多情况下,集群成员的IP可能无法提前知道。在这种情况下,etcd集群可以在发现服务的帮助下进行启动。 一旦etcd集群已经启动,添加或移除成员可以通过 运行时重新配置 。在运行时重新配置之前,为了更好地理解设计,我们建议读 运行时重新配置设计文档 。 这篇引导etcd集群的启动将包括以下机制: 静态 etcd发现 DNS发现 每种引导机制都将用于创建具有以下详细信息的三台计算机etcd集群: Name Address Hostname infra0 10.0.1.10 infra0.example.com infra1 10.0.1.11 infra1.example.com infra2 10.0.1.12 infra2.example.com 静态 集群的成员,在启动之前它们的地址和集群的大小,我们可以通过设置 initial-cluster 参数使用离线的启动配置。每一个机器将会通过以下的环境变量或命令行获得配置信息: ETCD_INITIAL_CLUSTER="infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380

ETCD:HTTP JSON API通过gRPC网关

假装没事ソ 提交于 2019-12-05 16:51:12
原文地址: HTTP JSON API through the gRPC gateway etcd v3 使用 gRPC 作为消息协议。etcd项目包括一个基于gRPC的 Go客户端 和一个命令行工具, etcdctl ,通过gRPC与etcd集群进行交互.对于没有gRPC支持的语言,etcd提供JSON gRPC网关 ,这个网关提供一个RESTful风格的代理可以将HTTP/JSON请求转换为gRPC消息。 使用 gRPC网关 这个网关接受一个到etcd's buffer协议消息定义的JSON格式的映射,注意 Key 和 Value 字段定义为byte 数组,因此JSON必须使用base64编码,下面的例子使用 curl ,但是每个HTTP/JSON客户端的工作原理都和例子相同。 注意 gRPC网关节点从etcd v3.3发生变化: etcd v3.2以及之前版本只使用 [CLIENT-URL]/v3alpha/* 。 etcd v3.3使用 [CLIENT-URL]/v3beta/* 保持 [CLIENT-URL]/v3alpha/* 使用。 etcd v3.4使用 [CLIENT-URL]/v3/* 保持 [CLIENT-URL]/v3beta/* 使用。 [CLIENT-URL]/v3alpha/* 被抛弃使用。 etcd v3.5以及最新版本只使用 [CLIENT-URL

ETCD:运行时重新配置设计

£可爱£侵袭症+ 提交于 2019-12-05 16:51:04
原文地址: the runtime configuration design 运行时重新配置是分布式系统中最难,最容易出错的部分,尤其是在基于共识(像etcd)的系统中。 阅读并学习关于etcd的运行时重新配置命令设计和如何追溯这些错误. 两阶段配置更新保证集群安全 在etcd中,每一次运行时重新配置安全的原因是由于两阶段更新。例如,添加一个成员,首先将新配置通知集群后启动新的成员。 阶段一 通知集群关于新的配置 添加一个成员到etcd集群中,通过API调用请求将一个新成员添加到集群中。这是将新的成员添加到集群中唯一的方法。当集群同意配置的更新后将返回API的调用。 阶段二 启动一个新的成员 将一个新成员加入到存在的集群中,指定正确的 initial-cluster 和设置 initial-cluster-state 为 existing .当成员启动后,它首先联系已存在的集群并验证当前集群配置是否和期望的 initial-cluster 匹配。当一个新的成员成功启动,集群将获得期望的配置。 用户将过程分为两个阶段需要清楚了解集群成员关系的变化。实际上,这为用户提供了更大的灵活性,并使事情更容易。例如,如果试图添加一个与集群中现有的成员Id相同的新成员到集群中,操作将会立即失败由于阶段一并没有影响到运行中的集群。提供了类似的保护阻止通过错误操作添加新的成员

ETCD:gRPC代理

若如初见. 提交于 2019-12-05 16:50:59
原文地址: gRPC proxy gRPC代理是在gRPC层(L7)运行的无状态etcd反向代理。代理旨在减少核心etcd群集上的总处理负载。对于水平可伸缩性,它合并了监视和租约API请求。 为了保护集群免受滥用客户端的侵害,它会缓存关键范围请求。 gRPC代理支持多个etcd服务器端点。 代理启动时,它会随机选择一个etcd服务器端点来使用.该端点将处理所有请求,直到代理检测到端点故障为止。 如果gRPC代理检测到端点故障,它将切换到其他端点(如果有)以向其客户端隐藏故障。 将来可能会支持其他重试策略,例如加权轮询。 可扩展的监视 API gRPC代理将同一键或范围上的多个客户端监视程序(c-watcher)合并为连接到etcd服务器的单个监视程序(s-watcher)。 代理将所有事件从S-watcher广播到其c-watcher。 假设N个客户端监视相同的密钥,则一个gRPC代理可以将etcd服务器上的监视负载从N减少到1。用户可以部署多个gRPC代理来进一步分配服务器负载。 在以下示例中,三个客户端监视键A。gRPC代理将三个监视程序合并,从而创建一个附加到etcd服务器的监视程序。 +-------------+ | etcd 服务器 | +------+------+ ^ 监视 key A (s-watcher) | +-------+-----+ | gRPC 代理

ETCD:实验特性和APIs

吃可爱长大的小学妹 提交于 2019-12-05 16:50:52
原文地址: Experimental features and APIs 大多数情况下,etcd项目是稳定的,但我们仍在快速发展! 我们相信快速发布理念。 我们希望获得有关仍在开发和稳定中的功能的早期反馈。 因此,存在并且将会有更多的实验性功能和API。 我们计划根据社区的早期反馈来改进这些功能,如果兴趣不足,请在接下来的几个版本中放弃这些功能。 请不要在生产环境中依赖任何实验性功能或API。 当前实验API/特性是: 键值对排序 包装器: 当etcd客户端切换端点时,如果新端点落后于集群的其余部分,则对可序列化读取的响应可能推迟。排序包装器从响应标头缓存当前集群修订版。 如果响应修订版本小于缓存修订版本,则客户端选择另一个端点并重新发出读取。在grpcproxy中启动 --experimental-serializable-ordering . 来源: https://www.cnblogs.com/cbkj-xd/p/11934602.html

ETCD:配置参数

泄露秘密 提交于 2019-12-05 16:50:48
原文地址: Configuration flags etcd通过配置文件,多命令行参数和环境变量进行配置, 可重用的配置文件是YAML文件,其名称和值由一个或多个下面描述的命令行标志组成。为了使用此文件,请将文件路径指定为 --config-file 标志或 ETCD_CONFIG_FILE 环境变量的值。如果需要的话 配置文件示例 可以作为入口点创建新的配置文件。 在命令行上设置的选项优先于环境中的选项。 如果提供了配置文件,则其他命令行标志和环境变量将被忽略。例如, etcd --config-file etcd.conf.yml.sample --data-dir /tmp 将会忽略 --data-dir 参数。 参数 --my-flag 的环境变量的格式为 ETCD_MY_FLAG .它适用于所有参数。 客户端请求 官方的etcd端口 为2379,2380是节点通信端口。可以将etcd端口设置为接受TLS流量,非TLS流量,或同时接受TLS和非TLS流量。 要在Linux启动时使用自定义设置自动启动etcd,强烈建议使用 systemd 单元。 成员标记 --name 人类可读的该成员的名字 默认值:"default" 环境变量:ETCD_DATA_DIR 该值被该节点吃的 --initial-cluster 参数引用(例如 default=http://localhost

ETCD:系统限制

懵懂的女人 提交于 2019-12-05 16:50:41
原文地址: System limits 请求大小限制 etcd被设计用来处理小键值对典型的如元数据。较大的请求数据也起作用,但可能会增加其他请求的延迟。默认情况下,任意的请求最大的空间为1.5MiB,这个限制参数可以通过 --max-request-bytes 参数对etcd服务器进行配置。 存储大小限制 默认的存储大小限制为2GB,可以通过参数 --quota-backend-bytes 进行配置。正常环境下8GB是etcd支持的最大存储大小,如果配置的值超过它,etcd将在启动时发出警告。 来源: https://www.cnblogs.com/cbkj-xd/p/11934596.html

ETCD:词汇表

邮差的信 提交于 2019-12-05 16:50:23
原文地址: 词汇表 本文档定义了etcd文档,命令行和源代码中使用的各种术语。 Alarm 每当集群需要操作员干预以保持可靠性时,etcd服务器都会发出警报。 Authentication 身份验证管理etcd资源的用户访问权限。 Client 客户端连接到etcd集群以发出服务请求,例如获取键值对,写入数据或监视更新。 Cluster 集群由几个成员组成。 每个成员中的节点均遵循Raft共识协议来复制日志。 集群从成员那里接收提议,将它们提交并应用于本地存储。 Compaction 在给定修订之前,压缩会丢弃所有etcd事件历史记录和取代的密钥。 它用于回收etcd后端数据库中的存储空间。 Election etcd集群在其成员之间举行选举,以选择一名领导人作为Raft共识协议的一部分。 Endpoint 指向etcd服务或资源的URL。 Key 用户定义的标识符,用于在etcd中存储和检索用户定义的值。 Key range 包含单个键,所有x的词法间隔(例如a <x <= b)或大于给定键的所有键的一组键。 Keyspace etcd集群中所有键的集合。 Lease 短期可再生合同,在合同到期时会删除与其相关的密钥。 Member 参与为etcd集群提供服务的逻辑etcd服务器。 Modification Revision 保留对给定密钥的最后一次写入的第一个修订版。 Peer

ETCD:在容器中运行etcd集群

試著忘記壹切 提交于 2019-12-05 16:50:17
原文地址: Docker container 以下指南显示了如何使用 静态引导过程 在rkt和Docker上运行etcd。 rkt 运行单节点的etcd 以下rkt run命令将在端口2379上公开etcd客户端API,并在端口2380上公开对等API。 配置etcd时使用主机IP地址。 export NODE1=192.168.1.21 信任CoreOS App签名密钥 。 sudo rkt trust --prefix quay.io/coreos/etcd # gpg key fingerprint is: 18AD 5014 C99E F7E3 BA5F 6CE9 50BD D3E0 FC8A 365E 运行etcd v3.2版本或指定其他发行版本。 sudo rkt run --net=default:IP=${NODE1} quay.io/coreos/etcd:v3.2 -- -name=node1 -advertise-client-urls=http://${NODE1}:2379 -initial-advertise-peer-urls=http://${NODE1}:2380 -listen-client-urls=http://0.0.0.0:2379 -listen-peer-urls=http://${NODE1}:2380 -initial

ETCD:单机单节点

允我心安 提交于 2019-12-05 16:49:40
原文地址: Setting up local clusters 设置单节点集群 对于测试环境与开发环境,最快速与简单的方式是配置一个本地集群。对于生产环境,参考 集群 部分。 本地单节点集群 启动一个集群 运行以下命令来部署一个单节点的etcd集群: $ ./etcd ... 如果 etcd 二进制文件不在当前工作目录,那可能位于 $GOPATH/bin/etcd 或者是 /usr/local/bin/etcd .合适地运行命令。 运行的 etcd 成员在 localhost:2379 监听客户端的请求。 与集群进行交互 使用 etcdctl 与运行中的集群进行交互操作 1. 例子:在集群中存储一个键值对: $ ./etcdctl put foo bar OK 如果 OK 被打印在控制台,说明已经成功存储Key-Value对。 2. 获取键 foo 对应的值: $ ./etcdctl get foo bar 如果 bar 被返回,说明与 etcd 集群的交互操作和期望中的相同。 本地多节点集群 启动一个集群 在 etcd 的 git 仓库中存在一个 Procfile 文件提供一种简单的方式可以对本地多节点集群进行配置。在启动多节点集群之前,将工作目录导向 etcd 的根目录并执行以下操作: 1. 安装`goreman`控制基于`Procfile`的应用: ``` $ go get