第二章 Etcd的初步认识

本文章主要讲解实操与重要知识点,理论知识较少,若不清楚etcd是什么,请自觉百度初步认识以下。

1 、Etcd的一些常见的应用场景

1.1、服务注册发现:

在这里插入图片描述
如下图所示:Etcd充当服务注册方的角色。
当请求方—>提供方—>注册方,发现2宕机了,服务注册方会删掉2,且选择改成1,3。请求方会继续查找注册方的服务。

1.2、配置中心:

实际上就是实现了热加载,时时更新数据,不需要先关闭网络,在更新数据,然后再启动网络。只需要直接时时启动,修改即可。
在这里插入图片描述
这时候就要问了,那为什么要用etcd,而不去用zookeeper?

  1. 第一点,zookeeper比较复杂。底层使用Paxos的强一致性算法(很难的一个算法),使用起来也比较复杂,需要安装客户端,而且只支持c与java
  2. Zookeeper是使用java编写的,java偏向与中型应用,它会导入大量的依赖,使用起来与维护起来比较繁琐。而相对etcd,比较简单·,算法本身也不是很复杂。
  3. Apache基金会发展比较缓慢。导致版本上更不上。

etcd使用的好处又在哪?

  1. etcd是使用go语言编写,比较简单,部署简单,使用http接口也简单,raft也可以保证强一致性,raft也很容易让人理解。
  2. 数据持久化,时时更新追踪
  3. 安全,且etcd支持tls安全认证。

1.3、Etcd的日志功能:

在这里插入图片描述

在这里插入图片描述

2、实战:

2.1、启动etcd

开始尝试使用etcd:(连接etcd)
注意:(如果使用的etcd是v3版本)[默认的etcdctl使用的是v2版本的命令。]
我们需要设置环境变量ETCDCTL_API=3来让他使用3的API
export ETCDCTL_API=3

github下载etcd:https://github.com/etcd-io/etcd

下载完之后进行解压即可使用,里面有etcd、etcdctl的工具,【这里我使用的是ubuntu版本】
启动etcd工具:
etcd
然后另外启动终端启动etcdctl。
在这里插入图片描述
这就表明启动etcd成功。

2.2、用docker启动etcd

我们怎么将etcd装到docker中:https://blog.csdn.net/ucmir183/article/details/84454575

docker run -d \
-p 2379:2379 \
-p 2380:2380 \
--name etcd etcd /usr/local/bin/etcd \
-name etcd0 \
--listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://0.0.0.0:2380 \
--initial-cluster etcd0=http://0.0.0.0:2380 \
--initial-cluster-token tkn \
--initial-cluster-state new

查看etcd Server版本

docker exec etcd /bin/sh -c "/usr/local/bin/etcd --version"

在这里插入图片描述
检查etcd命令行工具版本

docker exec etcd /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"

在这里插入图片描述
通过etcd命令行检查etcd每个节点的健康状况

docker exec etcd /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"

在这里插入图片描述
Docker操作etcd进行读写:

docker exec etcd /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put zwx "zwx" "
docker exec etcd /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get zwx"

在这里插入图片描述

2.3、Docker启动多个etcd

安装goreman:go get github.com/mattn/goreman
开发中使用则推荐轻量级小工具goreman。goreman用于多线程管理工具

有关goreman网址:https://studygolang.com/articles/01373

在etcd中编写local-cluster-profile文件
etcd1:

etcd1: etcd --name infra1 --listen-client-urls http://127.0.0.1:12379 --advertise-client-urls http://127.0.0.1:12379 --listen-peer-urls http://127.0.0.1:12380 --initial-advertise-peer-urls http://127.0.0.1:12380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new 

etcd2:

etcd2: etcd --name infra2 --listen-client-urls http://127.0.0.1:22379 --advertise-client-urls http://127.0.0.1:22379 --listen-peer-urls http://127.0.0.1:22380 --initial-advertise-peer-urls http://127.0.0.1:22380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new

ectd3:

ectd3: etcd --name infra3 --listen-client-urls http://127.0.0.1:32379 --advertise-client-urls http://127.0.0.1:32379 --listen-peer-urls http://127.0.0.1:32380 --initial-advertise-peer-urls http://127.0.0.1:32380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new 

在这里插入图片描述
通过goreman启动三个etcd服务:goreman -f local-cluster-profile start
用户可以使用 etcd 的命令行工具 etcdctl 与启动的集群进行交互,例如,访 问任意一个 etcd server 获取集群 member 信息, 对应的命令就是 member listo
etcdctl 默认访问 localhost:2379,我们可以通过“–endpoints ”参数来指定etcd server的地址。

etcdctl --endpoints=localhost 12379 member list

在这里插入图片描述
如果 etcd1 和 etcd2 要与 etcd3 通信,使用的 URL 就是 http://localhost:32380。 而 clientURLs 指的就是该 etcd server 向客户端暴露的通信地址。 例如,如果客户
端要与 etcd2 进行通信,使用的 URL 则是 http://127.0.0.1:32379
当我们向etcd2写入数据时:
在这里插入图片描述
这时我们尝试下让ectd1宕机,再对etcd1操作,再让etcd1恢复看看效果:
记得先打开启动etcd工具。也就是启动etcd客户端。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3、多节点集群化部署

在这里插入图片描述
将三个节点集体设置不同地址,同一个端口。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
建议去网上观看电子书或者买书:云原生分布式存储基石 etcd深入解析

第一章 初步学习etcdRaft
第三章 介绍etcdctl的命令代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值