ETCD 单机安装
由于测试的需要,有时需要搭建一个单机版的etcd 环境,为了方便以后搭建查看,现在对单机部署进行记录。
一、部署单机etcd
- 下载 指定版本的etcd
下载地址ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/22/x86_64/e/etcd-2.2.5-1.fc22.x86_64.rpm
先判断是否已经安装了etcd,已经安装的话就需要先删除掉,注意权限问题
[vagrant@localhost wae]$ yum list installed | grep etcd
etcd.x86_64 2.2.-.el7 installed
[vagrant@localhost wae]$ yum remove etcd.x86_64
Loaded plugins: fastestmirror
You need to be root to perform this command.
[vagrant@localhost wae]$ sudo yum remove etcd.x86_64
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package etcd.x86_64 :2.2.-.el7 will be erased
--> Finished Dependency Resolution Dependencies Resolved ===================================================================================================
Package Arch Version Repository Size
===================================================================================================
Removing:
etcd x86_64 2.2.-.el7 installed M Transaction Summary
===================================================================================================
Remove Package Installed size: M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Erasing : etcd-2.2.-.el7.x86_64 /
warning: /etc/etcd/etcd.conf saved as /etc/etcd/etcd.conf.rpmsave
Verifying : etcd-2.2.-.el7.x86_64 / Removed:
etcd.x86_64 :2.2.-.el7 Complete!安装下载的rpm包
[vagrant@localhost etcd]$ sudo yum localinstall etcd-2.2.-.fc22.x86_64.rpm
验证安装成功
[vagrant@localhost etcd]$ etcdctl --version
etcdctl version 2.2. - 创建一个服务描述文件,放入systemd的服务目录下,一般安装完成都会自动创建
[vagrant@localhost etcd]$ sudo vi /usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target [Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
User=etcd
# set GOMAXPROCS to number of processors
ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd --name=\"${ETCD_NAME}\" --data-dir=\"${ETCD_DATA_DIR}\" --listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\""
Restart=on-failure
LimitNOFILE= [Install]
WantedBy=multi-user.target - 修改etcd的配置
一般默认访问的地址是http://localhost:2379,这边我们可以自定义,因为是单机,我们就直接127.0.0.1,有想法的就端口修改下好了[vagrant@localhost etcd]$ sudo vi /etc/etcd/etcd.conf
# [member]
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
#ETCD_WAL_DIR=""
#ETCD_SNAPSHOT_COUNT="10000"
#ETCD_HEARTBEAT_INTERVAL="100"
#ETCD_ELECTION_TIMEOUT="1000"
#ETCD_LISTEN_PEER_URLS="http://localhost:2380"
ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:4001"
#ETCD_MAX_SNAPSHOTS="5"
#ETCD_MAX_WALS="5"
#ETCD_CORS=""
#
#[cluster]
#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380"
# if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..."
#ETCD_INITIAL_CLUSTER="default=http://localhost:2380"
#ETCD_INITIAL_CLUSTER_STATE="new"
#ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS="http://127.0.0.1:4001"
#ETCD_DISCOVERY=""
#ETCD_DISCOVERY_SRV=""
#ETCD_DISCOVERY_FALLBACK="proxy"
#ETCD_DISCOVERY_PROXY=""
#
#[proxy]
#ETCD_PROXY="off"
#ETCD_PROXY_FAILURE_WAIT="5000"
#ETCD_PROXY_REFRESH_INTERVAL="30000"
#ETCD_PROXY_DIAL_TIMEOUT="1000"
#ETCD_PROXY_WRITE_TIMEOUT="5000"
#ETCD_PROXY_READ_TIMEOUT="0"
#
#[security]
#ETCD_CERT_FILE=""
#ETCD_KEY_FILE=""
#ETCD_CLIENT_CERT_AUTH="false"
#ETCD_TRUSTED_CA_FILE=""
#ETCD_PEER_CERT_FILE=""
#ETCD_PEER_KEY_FILE=""
#ETCD_PEER_CLIENT_CERT_AUTH="false"
#ETCD_PEER_TRUSTED_CA_FILE=""
#
#[logging]
#ETCD_DEBUG="false"
# examples for -log-package-levels etcdserver=WARNING,security=DEBUG
#ETCD_LOG_PACKAGE_LEVELS=""如果想要局域网可以访问的话,则将 127.0.0.1 换成宿主机的 ip 即可了,最后外部用 ip 进行接口访问即可。
- 启动并测试ETCD
首先设置开机启动:systemctl enable etcd[vagrant@localhost etcd]$ sudo systemctl daemon-reload
[vagrant@localhost etcd]$ sudo systemctl start etcd
[vagrant@localhost etcd]$ sudo systemctl status etcd
● etcd.service - Etcd Server
Loaded: loaded (/usr/lib/systemd/system/etcd.service; disabled; vendor preset: disabled)
Active: active (running) since Fri -- :: UTC; 8s ago
Main PID: (etcd)
Memory: 26.0M
CGroup: /system.slice/etcd.service
└─ /usr/bin/etcd --name=default --data-dir=/var/lib/etcd/default.etcd --listen-cl... Mar :: localhost.localdomain systemd[]: Starting Etcd Server...
Mar :: localhost.localdomain systemd[]: Started Etcd Server.查看集群健康状态
[vagrant@localhost etcd]$ sudo etcdctl cluster-health
member ce2a822cea30bfca is healthy: got healthy result from http://127.0.0.1:4001
cluster is healthyok,没有问题
- 卸载与删除etcd
[vagrant@localhost wae]$ yum list installed | grep etcd
etcd.x86_64 2.2.-.el7 installed
[vagrant@localhost wae]$ yum remove etcd.x86_64
二、接口测试
etcd的数据形式是以健对值方式存在的。
- 通过接口获取版本信息
[vagrant@localhost etcd]$ curl http://127.0.0.1:4001/version -XGET
{"etcdserver":"2.2.5","etcdcluster":"2.2.0"} - 更新一个健对值信息,并通过 ke y获取到 value
[vagrant@localhost etcd]$ etcdctl set /tmp/message wozainali
wozainali
[vagrant@localhost etcd]$ etcdctl get /tmp/message
wozainali设置的方式:etcdctl set key value
获取的方式:etcdctl get key - 通过接口获取健对值信息
[vagrant@localhost etcd]$ curl http://127.0.0.1:4001/v2/keys/tmp/message -XGET
{"action":"get","node":{"key":"/tmp/message","value":"wozainali","modifiedIndex":,"createdIndex":}}再看看 详细的请求信息
[vagrant@localhost etcd]$ curl http://127.0.0.1:4001/v2/keys/tmp/message -XGET
{"action":"get","node":{"key":"/tmp/message","value":"wozainali","modifiedIndex":,"createdIndex":}}
[vagrant@localhost etcd]$ curl http://127.0.0.1:4001/v2/keys/tmp/message -XGET -vv
* About to connect() to 127.0.0.1 port (#)
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port (#)
> GET /v2/keys/tmp/message HTTP/1.1
> User-Agent: curl/7.29.
> Host: 127.0.0.1:
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json
< X-Etcd-Cluster-Id: 7e27652122e8b2ae
< X-Etcd-Index: 12
< X-Raft-Index: 37173
< X-Raft-Term: 3
< Date: Fri, 09 Mar 2018 09:16:15 GMT
< Content-Length: 104
<
{"action":"get","node":{"key":"/tmp/message","value":"wozainali","modifiedIndex":12,"createdIndex":12}}
* Connection #0 to host 127.0.0.1 left intact - 通过接口更新一个健对值信息
[vagrant@localhost etcd]$ curl http://127.0.0.1:4001/v2/keys/tmp/message -XPUT -d value=nihaoha
{"action":"set","node":{"key":"/tmp/message","value":"nihaoha","modifiedIndex":,"createdIndex":},"prevNode":{"key":"/tmp/message","value":"wozainali","modifiedIndex":,"createdIndex":}}
[vagrant@localhost etcd]$ curl http://127.0.0.1:4001/v2/keys/tmp/message -XGET
{"action":"get","node":{"key":"/tmp/message","value":"nihaoha","modifiedIndex":,"createdIndex":}}我们看到更新的时候,会有两条记录,一条是当前记录,一条是之前的记录,多次更新也只会保留最近的信息,获取的时候默认获取最新的信息
[vagrant@localhost etcd]$ curl http://127.0.0.1:4001/v2/keys/tmp/message -XPUT -d value=wowowow
{"action":"set","node":{"key":"/tmp/message","value":"wowowow","modifiedIndex":,"createdIndex":},"prevNode":{"key":"/tmp/message","value":"nihaoha","modifiedIndex":,"createdIndex":}}具体复杂的操作需要去看官方文档,这边只做了解使用。https://coreos.com/etcd/docs/latest/v2/api.html
- 通过接口删除健对值信息
[vagrant@localhost etcd]$ curl http://127.0.0.1:4001/v2/keys/tmp/message -XDELETE
{"action":"delete","node":{"key":"/tmp/message","modifiedIndex":,"createdIndex":},"prevNode":{"key":"/tmp/message","value":"wowowow","modifiedIndex":,"createdIndex":}}
[vagrant@localhost etcd]$ curl http://127.0.0.1:4001/v2/keys/tmp/message -XGET
{"errorCode":,"message":"Key not found","cause":"/tmp/message","index":}可以看到删除之后,重新去获取该 key 的值,提示Key not found,证明我们删除成功了。
以上就是,简单的指定etcd单机安装,以及api的几个简单应用。
三、问题
- 在修改访问ip问局域网ip之后发现,使用 etcdctl 进行操作的时候会出现如下错误
[vagrant@localhost etcd]$ etcdctl ls
Error: dial tcp 127.0.0.1:: getsockopt: connection refused
[vagrant@localhost etcd]$
[vagrant@localhost etcd]$
[vagrant@localhost etcd]$ etcdctl cluster-health
cluster may be unhealthy: failed to list members
Error: client: etcd cluster is unavailable or misconfigured
error #: dial tcp 127.0.0.1:: getsockopt: connection refused
error #: dial tcp 127.0.0.1:: getsockopt: connection refused查询之后,发现应该是 ETCD_LISTEN_CLIENT_URLS 没有写入 http://127.0.0.1:4001 的原因,追加配置 http://127.0.0.1:4001,重新试一下
[vagrant@localhost etcd]$ etcdctl ls
/test
/test123
/tmp
/test1223
[vagrant@localhost etcd]$ etcdctl cluster-health
member ce2a822cea30bfca is healthy: got healthy result from http://192.168.10.50:4001
cluster is healthy
[vagrant@localhost etcd]$现在就可以了。
注意,添加配置的时候,用英文的逗号隔开.
ETCD 单机安装的更多相关文章
- cenots7单机安装Kubernetes
关于什么是Kubernetes请看另一篇内容:http://www.cnblogs.com/boshen-hzb/p/6482734.html 一.环境搭建 master安装的组件有: docker ...
- (原) 1.1 Zookeeper单机安装
本文为原创文章,转载请注明出处,谢谢 zookeeper 单机安装配置 1.安装前准备 linux系统(此文环境为Centos6.5) Zookeeper安装包,官网https://zookeeper ...
- Linux下Kafka单机安装配置方法(图文)
Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...
- Ubuntu 下 Neo4j单机安装和集群环境安装
1. Neo4j简介 Neo4j是一个用Java实现的.高性能的.NoSQL图形数据库.Neo4j 使用图(graph)相关的概念来描述数据模型,通过图中的节点和节点的关系来建模.Neo4j完全兼容A ...
- Hbase单机安装部署
Hbase单机安装部署 http://blogxinxiucan.sh1.newtouch.com/2017/07/27/Hbase单机安装部署/ 下载Hbase Hbase官网下载地址 http:/ ...
- 单机安装Hadoop
单机安装hadoop ------------------------------------------------------------------ 操作系统:centos7 64 位 hado ...
- 服务发现系统etcd之安装和使用
一.概述 etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现.etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致 ...
- Linux下Kafka单机安装配置方法
Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: •Kafka将消息以topi ...
- ArcGIS 10.1 for Server安装教程系列—— Linux下的单机安装
http://www.oschina.net/question/565065_81231 因为Linux具有稳定,功能强大等特性,因此常常被用来做为企业内部的服务器,我们的很多用户也是将Ar ...
随机推荐
- Luogu 5017 NOIP2018普及组T3 摆渡车 (斜率优化 + 必要的转移进行剪枝)
题意: 有 n 名同学要乘坐摆渡车从人大附中前往人民大学,第 i 位同学在第 ti 分钟去 等车.只有一辆摆渡车在工作,但摆渡车容量可以视为无限大.摆渡车从人大附中出发. 把车上的同学送到人民大学. ...
- DocView mode 0 -- 介绍
DocView mode,可作为主模式也可以作为minor mode,可以用来阅读DVI(ps后缀),PDF,OpenDocument(libreoffice文档),微软的doc.支持截取 ...
- python基础——12(包的概念)
一.模块 1.模块的加载顺序 加载顺序:内存-->内置-->sys.path(一系列自定义模块) import sys sys.path #环境变量:存放文件路径的列表 重点:默认列表的 ...
- struts 乱码
在进行struts开发的过程中,总也是出现很多的乱码问题 ,但归根到底,也只是以下三种情况: ㈠页面显示中文乱码 ㈡传递参数中文乱码 ㈢国际化资源文件乱码 下面就这三中情况介绍怎么在具体项目中处理这些 ...
- js中的事件委托或事件代理
一,概述 JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件. 举一个网上大牛们讲事件委托都会举的例子:就是取快递来解释,有三个同事预 ...
- 【05】project board
GitHub 上的 project board 我总是用 Jira 做大项目,独立项目用 Trello,这两者我都很喜欢. 后来我知道,GitHub 也有类似的 project board: 我个人为 ...
- STM32F407 SPI 个人笔记
概述 SPI ,Serial Peripheral interface,串行外围设备接口 全双工,同步的通信总线,四根线 主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器 ...
- [android 开发篇] 易白教程网址
http://www.yiibai.com/android/android_bluetooth.html
- Laya 屏幕适配
Laya 屏幕适配 @author ixenos 2019-03-20 21:44:52 1.最简单的方案:原比例,对照屏幕尺寸的最小比率缩放,有黑边 Laya.stage.scaleMode = S ...
- 多重部分和 poj1742
Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar. ...