<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>v3.2 docs on etcd</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/</link><description>Recent content in v3.2 docs on etcd</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/index.xml" rel="self" type="application/rss+xml"/><item><title>Libraries and tools</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/integrations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/integrations/</guid><description>&lt;p&gt;Note that third-party libraries and tools (not hosted on &lt;a href="https://github.com/etcd-io" target="_blank" rel="noopener"&gt;etcd-io main repository&lt;/a&gt;) mentioned below are not tested or maintained by the etcd team. Before using them, users are recommended to read and investigate them.&lt;/p&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/etcd-io/etcd/tree/main/etcdctl" target="_blank" rel="noopener"&gt;etcdctl&lt;/a&gt; - A command line client for etcd&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20190113041300/https://github.com/fanhattan/etcd-backup" target="_blank" rel="noopener"&gt;etcd-backup&lt;/a&gt; - A powerful command line utility for dumping/restoring etcd - Supports v2&lt;/li&gt;
&lt;li&gt;&lt;a href="https://npmjs.org/package/etcd-dump" target="_blank" rel="noopener"&gt;etcd-dump&lt;/a&gt; - Command line utility for dumping/restoring etcd.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/xetorthio/etcd-fs" target="_blank" rel="noopener"&gt;etcd-fs&lt;/a&gt; - FUSE filesystem for etcd&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rekby/etcddir" target="_blank" rel="noopener"&gt;etcddir&lt;/a&gt; - Realtime sync etcd and local directory. Work with windows and linux.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/henszey/etcd-browser" target="_blank" rel="noopener"&gt;etcd-browser&lt;/a&gt; - A web-based key/value editor for etcd using AngularJS&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/datawisesystems/etcd-lock" target="_blank" rel="noopener"&gt;etcd-lock&lt;/a&gt; - Master election &amp;amp; distributed r/w lock implementation using etcd - Supports v2&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/matishsiao/etcd-console" target="_blank" rel="noopener"&gt;etcd-console&lt;/a&gt; - A web-base key/value editor for etcd using PHP&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nikfoundas/etcd-viewer" target="_blank" rel="noopener"&gt;etcd-viewer&lt;/a&gt; - An etcd key-value store editor/viewer written in Java&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mickep76/etcdtool" target="_blank" rel="noopener"&gt;etcdtool&lt;/a&gt; - Export/Import/Edit etcd directory as JSON/YAML/TOML and Validate directory using JSON schema&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20190113041300/https://github.com/mickep76/etcdrest" target="_blank" rel="noopener"&gt;etcd-rest&lt;/a&gt; - Create generic REST API in Go using etcd as a backend with validation using JSON schema&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20190113041250/https://github.com/kamilhark/etcdsh" target="_blank" rel="noopener"&gt;etcdsh&lt;/a&gt; - A command line client with support of command history and tab completion. Supports v2&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sinsharat/etcdloadtest" target="_blank" rel="noopener"&gt;etcdloadtest&lt;/a&gt; - A command line load test client for etcd version 3.0 and above.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tzfun/etcd-workbench" target="_blank" rel="noopener"&gt;etcd-workbench&lt;/a&gt; - A free and powerful ui client for etcd v3. Provides desktop application and web packages.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="libraries"&gt;Libraries&lt;/h2&gt;
&lt;p&gt;The sections below list etcd client libraries by language.&lt;/p&gt;</description></item><item><title>Data model</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/data_model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/data_model/</guid><description>&lt;p&gt;etcd is designed to reliably store infrequently updated data and provide reliable watch queries. etcd exposes previous versions of key-value pairs to support inexpensive snapshots and watch history events (“time travel queries”). A persistent, multi-version, concurrency-control data model is a good fit for these use cases.&lt;/p&gt;
&lt;p&gt;etcd stores data in a multiversion &lt;a href="https://en.wikipedia.org/wiki/Persistent_data_structure" target="_blank" rel="noopener"&gt;persistent&lt;/a&gt; key-value store. The persistent key-value store preserves the previous version of a key-value pair when its value is superseded with new data. The key-value store is effectively immutable; its operations do not update the structure in-place, but instead always generates a new updated structure. All past versions of keys are still accessible and watchable after modification. To prevent the data store from growing indefinitely over time from maintaining old versions, the store may be compacted to shed the oldest versions of superseded data.&lt;/p&gt;</description></item><item><title>Demo</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/demo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/demo/</guid><description>&lt;p&gt;This series of examples shows the basic procedures for working with an etcd cluster.&lt;/p&gt;
&lt;h2 id="set-up-a-cluster"&gt;Set up a cluster&lt;/h2&gt;
&lt;img src="https://storage.googleapis.com/etcd/demo/01_etcd_clustering_2016051001.gif" alt="01_etcd_clustering_2016050601"/&gt;
&lt;p&gt;On each etcd node, specify the cluster members:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;TOKEN=token-01
CLUSTER_STATE=new
NAME_1=machine-1
NAME_2=machine-2
NAME_3=machine-3
HOST_1=10.240.0.17
HOST_2=10.240.0.18
HOST_3=10.240.0.19
CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Run this on each machine:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# For machine 1
THIS_NAME=${NAME_1}
THIS_IP=${HOST_1}
etcd --data-dir=data.etcd --name ${THIS_NAME} \
	--initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
	--advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
	--initial-cluster ${CLUSTER} \
	--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

# For machine 2
THIS_NAME=${NAME_2}
THIS_IP=${HOST_2}
etcd --data-dir=data.etcd --name ${THIS_NAME} \
	--initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
	--advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
	--initial-cluster ${CLUSTER} \
	--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

# For machine 3
THIS_NAME=${NAME_3}
THIS_IP=${HOST_3}
etcd --data-dir=data.etcd --name ${THIS_NAME} \
	--initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
	--advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
	--initial-cluster ${CLUSTER} \
	--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Or use our public discovery service:&lt;/p&gt;</description></item><item><title>etcd v3 authentication design</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/auth_design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/auth_design/</guid><description>&lt;h2 id="why-not-reuse-the-v2-auth-system"&gt;Why not reuse the v2 auth system?&lt;/h2&gt;
&lt;p&gt;The v3 protocol uses gRPC as its transport instead of a RESTful interface like v2. This new protocol provides an opportunity to iterate on and improve the v2 design. For example, v3 auth has connection based authentication, rather than v2&amp;rsquo;s slower per-request authentication. Additionally, v2 auth&amp;rsquo;s semantics tend to be unwieldy in practice with respect to reasoning about consistency, which will be described in the next sections. For v3, there is a well-defined description and implementation of the authentication mechanism which fixes the deficiencies in the v2 auth system.&lt;/p&gt;</description></item><item><title>etcd versus other key-value stores</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/why/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/why/</guid><description>&lt;p&gt;The name &amp;ldquo;etcd&amp;rdquo; originated from two ideas, the unix &amp;ldquo;/etc&amp;rdquo; folder and &amp;ldquo;d&amp;quot;istibuted systems. The &amp;ldquo;/etc&amp;rdquo; folder is a place to store configuration data for a single system whereas etcd stores configuration information for large scale distributed systems. Hence, a &amp;ldquo;d&amp;quot;istributed &amp;ldquo;/etc&amp;rdquo; is &amp;ldquo;etcd&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;etcd is designed as a general substrate for large scale distributed systems. These are systems that will never tolerate split-brain operation and are willing to sacrifice availability to achieve this end. etcd stores metadata in a consistent and fault-tolerant way. An etcd cluster is meant to provide key-value storage with best of class stability, reliability, scalability and performance.&lt;/p&gt;</description></item><item><title>etcd3 API</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/api/</guid><description>&lt;p&gt;This document is meant to give an overview of the etcd3 API&amp;rsquo;s central design. It is by no means all encompassing, but intended to focus on the basic ideas needed to understand etcd without the distraction of less common API calls. All etcd3 API&amp;rsquo;s are defined in &lt;a href="https://github.com/etcd-io/etcd/blob/v3.2.32/etcdserver/etcdserverpb/rpc.proto" target="_blank" rel="noopener"&gt;gRPC services&lt;/a&gt;, which categorize remote procedure calls (RPCs) understood by the etcd server. A full listing of all etcd RPCs are documented in markdown in the &lt;a href="../../dev-guide/api_reference_v3/"&gt;gRPC API listing&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Frequently Asked Questions (FAQ)</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/faq/</guid><description>&lt;h3 id="etcd-general"&gt;etcd, general&lt;/h3&gt;
&lt;h4 id="do-clients-have-to-send-requests-to-the-etcd-leader"&gt;Do clients have to send requests to the etcd leader?&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://raft.github.io/raft.pdf" target="_blank" rel="noopener"&gt;Raft&lt;/a&gt; is leader-based; the leader handles all client requests which need cluster consensus. However, the client does not need to know which node is the leader. Any request that requires consensus sent to a follower is automatically forwarded to the leader. Requests that do not require consensus (e.g., serialized reads) can be processed by any cluster member.&lt;/p&gt;
&lt;h3 id="configuration"&gt;Configuration&lt;/h3&gt;
&lt;h4 id="what-is-the-difference-between-listen-clientpeer-urls-advertise-client-urls-or-initial-advertise-peer-urls"&gt;What is the difference between listen-&amp;lt;client,peer&amp;gt;-urls, advertise-client-urls or initial-advertise-peer-urls?&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;listen-client-urls&lt;/code&gt; and &lt;code&gt;listen-peer-urls&lt;/code&gt; specify the local addresses etcd server binds to for accepting incoming connections. To listen on a port for all interfaces, specify &lt;code&gt;0.0.0.0&lt;/code&gt; as the listen IP address.&lt;/p&gt;</description></item><item><title>Glossary</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/glossary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/glossary/</guid><description>&lt;p&gt;This document defines the various terms used in etcd documentation, command line and source code.&lt;/p&gt;
&lt;h2 id="alarm"&gt;Alarm&lt;/h2&gt;
&lt;p&gt;The etcd server raises an alarm whenever the cluster needs operator intervention to remain reliable.&lt;/p&gt;
&lt;h2 id="authentication"&gt;Authentication&lt;/h2&gt;
&lt;p&gt;Authentication manages user access permissions for etcd resources.&lt;/p&gt;
&lt;h2 id="client"&gt;Client&lt;/h2&gt;
&lt;p&gt;A client connects to the etcd cluster to issue service requests such as fetching key-value pairs, writing data, or watching for updates.&lt;/p&gt;
&lt;h2 id="cluster"&gt;Cluster&lt;/h2&gt;
&lt;p&gt;Cluster consists of several members.&lt;/p&gt;
&lt;p&gt;The node in each member follows raft consensus protocol to replicate logs. Cluster receives proposals from members, commits them and apply to local store.&lt;/p&gt;</description></item><item><title>Install</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/install/</guid><description>&lt;h2 id="system-requirements"&gt;System requirements&lt;/h2&gt;
&lt;p&gt;The etcd performance benchmarks run etcd on 8 vCPU, 16GB RAM, 50GB SSD GCE instances, but any relatively modern machine with low latency storage and a few gigabytes of memory should suffice for most use cases. Applications with large v2 data stores will require more memory than a large v3 data store since data is kept in anonymous memory instead of memory mapped from a file. For running etcd on a cloud provider, we suggest at least a medium instance on AWS or a standard-1 instance on GCE.&lt;/p&gt;</description></item><item><title>KV API guarantees</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/api_guarantees/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/learning/api_guarantees/</guid><description>&lt;p&gt;etcd is a consistent and durable key value store with &lt;a href="../api/#transaction"&gt;mini-transaction&lt;/a&gt; support. The key value store is exposed through the KV APIs. etcd tries to ensure the strongest consistency and durability guarantees for a distributed system. This specification enumerates the KV API guarantees made by etcd.&lt;/p&gt;
&lt;h3 id="apis-to-consider"&gt;APIs to consider&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Read APIs
&lt;ul&gt;
&lt;li&gt;range&lt;/li&gt;
&lt;li&gt;watch&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Write APIs
&lt;ul&gt;
&lt;li&gt;put&lt;/li&gt;
&lt;li&gt;delete&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Combination (read-modify-write) APIs
&lt;ul&gt;
&lt;li&gt;txn&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="etcd-specific-definitions"&gt;etcd specific definitions&lt;/h3&gt;
&lt;h4 id="operation-completed"&gt;Operation completed&lt;/h4&gt;
&lt;p&gt;An etcd operation is considered complete when it is committed through consensus, and therefore “executed” -- permanently stored -- by the etcd storage engine. The client knows an operation is completed when it receives a response from the etcd server. Note that the client may be uncertain about the status of an operation if it times out, or there is a network disruption between the client and the etcd member. etcd may also abort operations when there is a leader election. etcd does not send &lt;code&gt;abort&lt;/code&gt; responses to clients’ outstanding requests in this event.&lt;/p&gt;</description></item><item><title>Metrics</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/metrics/</guid><description>&lt;p&gt;etcd uses &lt;a href="http://prometheus.io/" target="_blank" rel="noopener"&gt;Prometheus&lt;/a&gt; for metrics reporting. The metrics can be used for real-time monitoring and debugging. etcd does not persist its metrics; if a member restarts, the metrics will be reset.&lt;/p&gt;
&lt;p&gt;The simplest way to see the available metrics is to cURL the metrics endpoint &lt;code&gt;/metrics&lt;/code&gt;. The format is described &lt;a href="http://prometheus.io/docs/instrumenting/exposition_formats/" target="_blank" rel="noopener"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Follow the &lt;a href="http://prometheus.io/docs/introduction/getting_started/" target="_blank" rel="noopener"&gt;Prometheus getting started doc&lt;/a&gt; to spin up a Prometheus server to collect etcd metrics.&lt;/p&gt;
&lt;p&gt;The naming of metrics follows the suggested &lt;a href="http://prometheus.io/docs/practices/naming/" target="_blank" rel="noopener"&gt;Prometheus best practices&lt;/a&gt;. A metric name has an &lt;code&gt;etcd&lt;/code&gt; or &lt;code&gt;etcd_debugging&lt;/code&gt; prefix as its namespace and a subsystem prefix (for example &lt;code&gt;wal&lt;/code&gt; and &lt;code&gt;etcdserver&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Production users</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/production-users/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/production-users/</guid><description>&lt;p&gt;This document tracks people and use cases for etcd in production. By creating a list of production use cases we hope to build a community of advisors that we can reach out to with experience using various etcd applications, operation environments, and cluster sizes. The etcd development team may reach out periodically to check-in on how etcd is working in the field and update this list.&lt;/p&gt;
&lt;h2 id="all-kubernetes-users"&gt;All Kubernetes Users&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Application&lt;/em&gt;: &lt;a href="https://kubernetes.io/" target="_blank" rel="noopener"&gt;https://kubernetes.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Environments&lt;/em&gt;: AWS, OpenStack, Azure, Google Cloud, Huawei Cloud, Bare Metal, etc&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;This is a meta user; please feel free to document specific Kubernetes clusters!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Reporting bugs</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/reporting_bugs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/reporting_bugs/</guid><description>&lt;p&gt;If any part of the etcd project has bugs or documentation mistakes, please let us know by &lt;a href="https://github.com/etcd-io/etcd/issues/new" target="_blank" rel="noopener"&gt;opening an issue&lt;/a&gt;. We treat bugs and mistakes very seriously and believe no issue is too small. Before creating a bug report, please check that an issue reporting the same problem does not already exist.&lt;/p&gt;
&lt;p&gt;To make the bug report accurate and easy to understand, please try to create bug reports that are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Specific. Include as much details as possible: which version, what environment, what configuration, etc. If the bug is related to running the etcd server, please attach the etcd log (the starting log with etcd configuration is especially important).&lt;/p&gt;</description></item><item><title>Tuning</title><link>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/tuning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-1113--etcd.netlify.app/docs/v3.2/tuning/</guid><description>&lt;p&gt;The default settings in etcd should work well for installations on a local network where the average network latency is low. However, when using etcd across multiple data centers or over networks with high latency, the heartbeat interval and election timeout settings may need tuning.&lt;/p&gt;
&lt;p&gt;The network isn&amp;rsquo;t the only source of latency. Each request and response may be impacted by slow disks on both the leader and follower. Each of these timeouts represents the total time from request to successful response from the other machine.&lt;/p&gt;</description></item></channel></rss>