etcd项目

etcd项目

 

先说一下什么是etcd,etcd是一个数据库,它的目标是构建一个高可用的分布式键值数据库,它是基于GO语言实现.在分布式系统中,各种服务的配置信息的管理分享,服务的发现是一个很基本同时也是很重要的问题.CoreOS项目就希望基于etcd来解决这一问题.

etcd再设计的时候重点考虑了下面四个要素:

1.简单:支持REST风格的HTTP+JSON API

2.安全:支持HTTPS方式的访问

3.快速:支持并发1k/s的写操作

4.可靠:支持分布式结构,基于Raft的一致性算法.

 

一般情况下,用户使用etcd可以在多个节点上启动多个实例,并添加它们为一个集群,同一个集群中的etcd实例将会保持彼此信息的一致性.

 

先来说一下如何安装etcd,楼主在网上看到的关于etcd的安装方式一般都是使用AWS上的二进制代码,但是这样的后果是连接超时,因为需要翻墙,所以导致无法安装.楼主开始了漫长的寻找,结果楼主没找到...

 

楼主最终找到了一个办法,翻墙...开始的时候,楼主一直觉得肯定有国内源,现在楼主也坚信存在国内的源,但是楼主没找到,肯定有!!楼主选择了翻墙,因为楼主用的VPN是别人的服务器,这里实在不好意思公布出来...对不起了各位...

 

如果你的ubuntu可以翻墙的话,你可以接着往下看,如果你没找到其他的安装方式,可以不看,如果你找到了其他的安装方式,欢迎来电.

 

二进制方式下载

 

编译好的二进制文件都放在AWS的服务器上,这就是需要翻墙的原因.咱们使用curl工具下载压缩包,并解压

curl -L  https://github.com/coreos/etcd/releases/download/v2.0.0-rc.1/etcd-v2.0.0-rc.1-linux-amd64.tar.gz -o etcd-v2.0.0-rc.1-linux-amd64.tar.gz
tar xzvf etcd-v2.0.0-rc.1-linux-amd64.tar.gz
cd etcd-v2.0.0-rc.1-linux-amd64

解压后,可以看到文件包括:

$ls
etcd  etcdctl  etcd-migrate  README-etcdctl.md  README.md

 

其中etcd是服务主文件,etcdctl是提供给用户的命令客户端,etcd-migrate负责进行迁移.

将三个文件都放到系统可执行目录 /usr/local/bin/或者/usr/bin/

$cp etcd* /usr/local/bin/

运行etcd,经默认组建一个两个节点的集群.数据库服务默认监听在23794001端口,etcd实例监听在23807001端口.显示类似如下的信息:

$./etcd
2016/06/12 06:00:39 no data-dir provided, using default data-dir ./default.etcd
2016/06/12 06:00:39 etcd: listening for peers on http://localhost:2380
2016/06/12 06:00:39 etcd: listening for peers on http://localhost:7001
2016/06/12 06:00:39 etcd: listening for client requests on http://localhost:2379
2016/06/12 06:00:39 etcd: listening for client requests on http://localhost:4001
2016/06/12 06:00:39 etcdserver: name = default


此时,可以使用etcdctl命令进行测试,设置和获取键值testkey:”hello world”,检查etcd服务是否启动成功:

$./etcdctl set testkey “hello world”
hello world
$./etcdctl get testkey
hello world


说明etcd服务已经成功启动了.

当然,你完全可以再打卡一个终端,通过HTTP访问本地2379或者4001端口的方式来进行操作,例如查看testkey的值:

$curl -L http://localhost:4001/v2/keys/testkey


 

 

使用etcdctl

etcdctl是一个命令行客户端,它能提供一些简洁的命令,供用户直接跟etcd打交道,而无需基于HTTP API方式.etcd项目中已经包含了etcdctl工具,该工具支持如下的命令,大体上分为数据库操作和非数据库操作.

 

数据库操作无非就是CRUD.

 

重点说一下非数据库操作

 

backup

备份etcd的数据

 

支持的选项包括

--data-dir etcd的数据目录
--backup-dir 备份到指定路径


 

watch

检测一个值的变化,一旦键值发生更新,就会输出最新的值并退出.

例如,用户更新testkey键值为Hello world

$etcdctl watch testkey
Hello world


支持的选项包括

--forever        一直监测,直到用户按 `CTRL+C` 退出
--after-index '0'    在指定 index 之前一直监测
--recursive        返回所有的键值和子键值


 

exec-watch

 

检测一个键值的变化,一旦键值发生更新,就执行给定命令.

例如,用户更新testkey键值.

$etcdctl exec-watch testkey -- sh -c ‘ls’
default.etcd
Documentation
etcd
etcdctl
etcd-migrate
README-etcdctl.md
README.md


 

支持的选项包括

--after-index ‘0’ 在指定index之前一直检测
--recursive 返回所有的键值和子键值


member

通过list,add,remove命令列出,添加,删除etcd实例到etcd集群中.

例如,本地启动一个etcd服务失利后,可以用如下命令进行查看.

$etcdctl member list

能看到输出信息.

展开阅读全文

没有更多推荐了,返回首页