v0.5.0-alpha.0 - etcd now listens on its IANA assigned ports along with its temporary ports (4001/7001) by default - 2379 for client communication - 2380 for peer communication - Members can listen on and advertise multiple ports. This enables a single member to listen on a public interface and a container bridge at the same time. - etcd peers proxy requests to the leader so clients no longer need to follow HTTP 307 redirects. This means if you can reach a single etcd member you can successfully read from/write to the cluster without regard to the network topology. - An etcd cluster now has a “cluster id” and each member has a unique “member id”. etcd will reject requests from members with mismatched cluster ids or unknown member ids. This protects the cluster from many common misconfigurations (like the dreaded duplicate ETCD_NAME) - etcd cluster bootstrap configuration has changed to be fully static. The team found that users attempting to bootstrap a cluster often had trouble configuring the cluster correctly and using a static configuration makes it easier to tell users when something has gone wrong. Full details can be found in the clustering documentation: https://github.com/coreos/etcd/blob/master/Documentation/0.5/clustering.md - Runtime cluster reconfiguration is done explicitly through an HTTP API (/v2/admin/members. Full details can be found in the API documentation: https://github.com/coreos/etcd/blob/master/Documentation/0.5/admin_api.md - The Raft implementation (github.com/coreos/etcd/raft) has been re-designed to enable faster and more thorough testing. The central raft state machine code is succinct (>600 LOC) and easy to understand when read alongside the Raft whitepaper. - The Raft log is now a strict append-only write-ahead log and includes a rolling CRC to each of the records in the log. - The key store starts up completely clean. The internal _etcd/* keys are no longer exposed to the user from the /v2/keys API. - etcd can operate in a pure proxy mode not participating in Raft consensus and also includes a readonly proxy. - ETCD_NAME is now advisory only and is not used internally by etcd to identify a member. This means that it is safe to change the name. Also, the client URL list that each member publishes can be changed from the flags and updated on restart. - The peers flags has been deprecated, in order to support the ability to specify machines with multiple addresses - Cluster auto adjustment (also known as standby-mode) has been deprecated. This feature was meant to help people manage their etcd cluster but it was a difficult to understand feature which lead to a lot of support burden. Instead, we have introduced an explicit proxy mode for etcd, and explicit cluster configuration operations (joining and removing nodes). - The TOML configuration file has been deprecated. The recommended replacement is to use environment variables (e.g. in a systemd unit file). - Discovery services now must provide a target cluster size. This is due to our experience helping users debug cluster bootstrap with the discovery service. We found that users could become confused when they thought that they had launched three machines (for a fault tolerance of one), but that only two had successfully started, and so etcd was accepting writes. Then when the inevitable happened and a single machine failed, etcd became unavailable.