xdays

etcd基础

简介

etcd是一个分布式kv存储,与我前面介绍的Consul有些类似,底层都是基于raft协议的,它的主要用途包括为应用提供集中的配置管理和服务发现。

安装

etcd是go语言开发的,所以安装成本非常低,一般我们用systemd来管理etcd,这里我们简单过下安装过程:

curl -L  https://github.com/coreos/etcd/releases/download/v2.2.5/etcd-v2.2.5-linux-amd64.tar.gz -o etcd-v2.2.5-linux-amd64.tar.gz
tar xzvf etcd-v2.2.5-linux-amd64.tar.gz
cd etcd-v2.2.5-linux-amd64
mkdir -p ...

Consul基础

简介

  • 服务发现,提供了DNS和HTTP两种接口
  • 健康检查,可针对服务和节点两个级别检查
  • KV存储,提供HTTP接口
  • 多数据中心支持

基础

概览

architect-of-consul

  • 通过一个WAN的Gossip池来原生支持跨数据中心的状态同步
  • 一个数据中心内部通过LAN Gossip来维持数据中心内部状态同步
  • 一个数据中心内部通过Raft协议来维护在Server模式的agent之间的leader选举和同步数据
  • Client模式下的agent负责转发RPC请求给Server模式的agent
  • 所有的agent都负责做健康检查

Raft

Raft一致性算法是Consul的核心,用于在一个数据中心内部的Server之间同步数据,关于Raft算法这里有个非常直观的演示。

Gossip

Gossip分布式通信协议是Consul的另一个核心,用于管理成员和广播消息。

Agent

Consul要在集群的所有的节点上部署一个agent,可以工作在client或者server模式。client模式agent主要职责是做健康检查,对外提供HTTP和DNS接口以及同步数据,以及向server模式的agent转发请求;server模式的agent额外的需要维护集群的状态跨数据中心通信等。

安装

consul仅有一个二进制文件,开箱即用。 从这里下载。

启动

启动Server模式的agent

consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -ui-dir /tmp ...