python 微服务 etcd_etcd 用作服务发现

[TOC]

## 概述

### 功能一: etcd 实现共享配置

* 理论上,应用唯一需要的配置的 `ETCD_HOST` 环境变量,用于指定ETCD地址。通常使用 docker。

* 应用启动时从 etcd 获取一次配置信息,(获取该 key 的 value)

* 同时系统在 etcd 节点上注册一个 Watcher,这样每次配置发生改变之后,应用都能通过 etcd 实时获取到最新配置。

### 功能二: etcd 服务注册与发现

因为 etcd 有以下特性:

* 强一致和高可用。 采用了 Raft 算法的 etcd 能勾为我们提供强一致性和高可用性的保证

* 提供了注册服务和监听服务状态的机制 etcd 可以对某个 key 设置 TTL,可以通过监听服务的心跳来检测服务状态。

* 提供了一种查找和连接服务的机制。当监听到添加了某个服务之后,可以去连接该服务。 有时候我们可以在每一台提供服务的机器上部署一个 proxy 模式的 etcd 节点。 每个服务只要访问自己的 etcd 节点即可。

* etcd 用来检测有来做代理的,监听某个路径,如果,某个etcd 下添加新的 server_ip 到路径下, etcd 就会监听到新的ip

![UTOOLS1575430934970.png](http://yanxuan.nosdn.127.net/8c05aac8dc9e65dde67f135b0f1c6cc8.png)

## 安装

```

$ wget https://github.com/coreos/etcd/releases/download/v3.1.5/etcd-v3.1.5-linux-amd64.tar.gz

$ tar xzvf etcd-v3.1.5-linux-amd64.tar.gz

$ mv etcd-v3.1.5-linux-amd64 /opt/etcd

```

## 单机启动

[详细配置](https://github.com/etcd-io/etcd/blob/master/etcd.conf.yml.sample)

配置 `etcd.conf`

```

name: 'idcpj'

# 开启远程监听

listen-client-urls: http://0.0.0.0:2379

```

启动

```

./etcd --config-file=etcd.conf

```

## 单机 etcd 集群

## 接口操作

etcd在键的组织上采用了层次化的空间结构(类似于文件系统中目录的概念),用户指定的键可以为单独的名字,如:`testkey`,此时实际上放在根目录`/`下面,也可以为指定目录结构,如`/cluster1/node2/testkey`,则将创建相应的目录结构

### 操作值

#### set

`etcdctl set /testdir/testkey "Hello world"`

#### get

当键不存在时,则会报错

```

etcdctl get /testdir/testkey

```

#### update

当键不存在时,则会报错

`etcdctl update /testdir/testkey "Hello"`

#### rm

当键不存在时,则会报错

`etcdctl rm /testdir/testkey`

#### mk

如果给定的键不存在,则创建一个新的键值

当键存在的时候,执行该命令会报错

`etcdctl mk /testdir/testkey "Hello world"`

### 操作目录

#### mkdir

如果给定的键目录不存在,则创建一个新的键目录

当键目录存在的时候,执行该命令会报错

`etcdctl mkdir testdir2`

#### setdir - 创建一个键目录

创建一个键目录。如果目录不存在就创建,如果目录存在更新目录TTL。

```

etcdctl setdir testdir3

```

#### updatedir - 更新一个已经存在的目录

```

etcdctl updatedir testdir2

```

#### rmdir - 删除目录

若目录不空,会报错

```

etcdctl setdir dir1

etcdctl rmdir dir1

```

#### ls

```

$ etcdctl ls

---

/testdir

/testdir2

/dir

```

### backup - 备份数据

```

etcdctl backup --data-dir /var/lib/etcd --backup-dir /home/etcd_backup

--data-dir etcd的数据目录

--backup-dir 备份到指定路径

```

### watch 监听值

建立监听

```

./etcdctl watch /1/2 --forever

```

触发监听

```

./etcdctl set /1/2 "hello2"

```

### exec-watch 监测一键的变化就执行给定命令

`./etcdctl exec-watch /1/2 -- sh -c "ls"`

`./etcdctl set /1/2 "hello2"`

### member 集群操作

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值