简介
etcd作为一个分布式的key-value存储仓库,在分布式集群的机器中提供了一个可靠的途径来访问仓库中的数据。它是开源的并且可以在github上获取到。ETCD优雅地处理网络分区中的leader选举,并容忍机器故障,包括leader。
你的应用程序可以对etcd中的数据读写。一个简单的例子就是可以将数据库链接作为key-value的存储形式存储在etcd中。这些值可以被监听,允许你的应用程序在值改变时可以对自己重新操作。
更高一级的使用场景类似分布式锁和数据库选举等,当然也可以用在服务注册和发现中。
一.etcd安装
1.etcd安装包下载
- 执行以下命令,获取安装包(注意版本,本文档以64位centos7系统为例)
curl -L https://github.com/coreos/etcd/releases/download/v3.3.4/etcd-v3.3.4-linux-amd64.tar.gz -o etcd-v3.3.4.tar.gz
- 另外也可以点我选择合适版本下载,自行上传至linux服务器中
2.解压安装包
- 执行以下命令,解压安装包
tar -xzvf etcd-v3.3.4.tar.gz
3.配置环境变量
- 执行以下命令,编辑/etc/profile文件
vi /etc/profile
- 在文件末尾加入以下行(根据实际路径自行修改path路径)
export PATH="$PATH:/home/etcd/etcd-v3.3.4-linux-amd64"
- 依次按【Esc】【:】【wq!】键保存编辑的/etc/profile文件
- 执行以下命令,使配置的环境变量生效
source /etc/profile
4.确认是否安装成功
- 执行以下命令,看是否正常输出
etcd -version
- 如果输出如下结果,则说明已经正常安装
etcd Version: 3.3.4 Git SHA: fdde8705f Go Version: go1.9.5 Go OS/Arch: linux/amd64
二.etcd集群安装
1.etcd环境准备
- 准备三台linux服务器,本文档以ip分别为10.0.0.11,10.0.0.12,10.0.0.13三台服务器为例说明搭建etcd集群
- 按照上述步骤【一.etcd安装】分别在三台服务器上执行etcd安装包安装工作
2.集群安装准备
- 分别在三台服务器中执行以下命令创建etcd data存储文件夹,可按照实际情况创建
mkdir /home/etcd/data
- 防火墙端口开放,分别在三台服务器中执行以下命令,开放2379,2380两个端口
firewall-cmd --zone=public --add-port=2380/tcp --permanent;firewall-cmd --reload; firewall-cmd --zone=public --add-port=2379/tcp --permanent;firewall-cmd --reload;
3.集群安装
-
在ip为10.0.0.11的服务器上执行以下命令,创建第一个集群节点
etcd --name heyean-etcd-node1 --data-dir=/home/etcd/data --initial-advertise-peer-urls http://10.0.0.11:2380 \ --listen-peer-urls http://10.0.0.11:2380 \ --listen-client-urls http://10.0.0.11:2379,http://127.0.0.1:2379 \ --advertise-client-urls http://10.0.0.11:2379 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster heyean-etcd-node1=http://10.0.0.11:2380,heyean-etcd-node2=http://10.0.0.12:2380,heyean-etcd-node3=http://10.0.0.13:2380 \ --initial-cluster-state new
-
在ip为10.0.0.12的服务器上执行以下命令,创建第二个集群节点
etcd --name heyean-etcd-node2 --data-dir=/home/etcd/data --initial-advertise-peer-urls http://10.0.0.12:2380 \ --listen-peer-urls http://10.0.0.12:2380 \ --listen-client-urls http://10.0.0.12:2379,http://127.0.0.1:2379 \ --advertise-client-urls http://10.0.0.12:2379 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster heyean-etcd-node1=http://10.0.0.11:2380,heyean-etcd-node2=http://10.0.0.12:2380,heyean-etcd-node3=http://10.0.0.13:2380 \ --initial-cluster-state new
-
在ip为10.0.0.13的服务器上执行以下命令,创建第三个集群节点
etcd --name heyean-etcd-node3 --data-dir=/home/etcd/data --initial-advertise-peer-urls http://10.0.0.13:2380 \ --listen-peer-urls http://10.0.0.13:2380 \ --listen-client-urls http://10.0.0.13:2379,http://127.0.0.1:2379 \ --advertise-client-urls http://10.0.0.13:2379 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster heyean-etcd-node1=http://10.0.0.11:2380,heyean-etcd-node2=http://10.0.0.12:2380,heyean-etcd-node3=http://10.0.0.13:2380 \ --initial-cluster-state new
4.验证集群状态
-
重开一个客户端连接登录至上述三台服务器中的任意一台,输入以下命令,查看集群状态是否正常
etcdctl member list
-
如出现类似如下信息则说明集群安装成功
69e16e5e3ae4740f: name=heyean-etcd-node3 peerURLs=http://10.0.0.13:2380 clientURLs=http://10.0.0.13:2379 isLeader=true a2705b7bc6c4bf28: name=heyean-etcd-node1 peerURLs=http://10.0.0.11:2380 clientURLs=http://10.0.0.11:2379 isLeader=false e4b162836d3eaf3a: name=heyean-etcd-node2 peerURLs=http://10.0.0.12:2380 clientURLs=http://10.0.0.12:2379 isLeader=false