0. 前言
  时隔多日,前段时间忙完一个可有可无的项目后,又进入摸鱼时间,没有办法,非互联网公司,就是闲得蛋疼。又开始了自学之路。以前入门过Docker,然后又很久没有看了,最近重新看了一下,推荐一下这个人的博客: https://www.cnblogs.com/CloudMan6 写得不错,深入浅出。然后学着测试练习一下,部署Etcd服务当作练手。下面是利用Docker部署一个Etcd单机集群测试环境。顺便回顾一下Docker 基本操作。
  由于Docker更新特别快,需要较新的Linux内核版本,加上墙的原因,有时候安装Docker不是那么顺心,建议保持好心态。IRNG加油!
  可以参考
  https://www.cnblogs.com/wunaozai/p/6936787.html
  https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.1cbe1991CFEvea

1 apt-get update
2 apt-get -y install apt-transport-https ca-certificates curl software-properties-common
3 curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
4 add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
5 apt-get -y update
6 apt-get -y install docker-ce

1. 下载Etcd
  在这里 https://github.com/etcd-io/etcd/releases 下载最新二进制包,用Go写的,最近遇到的一些开源软件,Go语言的出镜率有点高啊,是不是有必要入坑了呀!

2. 编写Dockerfile
  既然学了Docker,那么就自己写个Dockerfile来build一个Docker Image,现在etcd最新版是3.3.10

 1 FROM alpine:3.2
 2 RUN apk add --update ca-certificates openssl tar && \
 3 wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz && \
 4 tar -zxvf etcd-v3.3.10-linux-amd64.tar.gz && \
 5 mv etcd-v3.3.10-linux-amd64/etcd* /bin/ && \
 6 apk del --purge tar openssl && \
 7 rm -Rf etcd-v3.3.10-linux-amd64* /var/cache/apk/*
 8 VOLUME /data
 9 EXPOSE 2379 2380
10 CMD ["/bin/etcd"]

  Docker构建

docker build -t etcd:3.3 .

  这里顺便介绍一下如何把Image推送到私有仓库(阿里云)

1 docker login registry.cn-shenzhen.aliyuncs.com
2 docker tag etcd:3.3 registry.cn-shenzhen.aliyuncs.com/wunaozai/etcd:3.3
3 docker push registry.cn-shenzhen.aliyuncs.com/wunaozai/etcd:3.3
4
5 docker pull registry.cn-shenzhen.aliyuncs.com/wunaozai/etcd:3.3

3. 启动

  我这里模拟启动3个Etcd服务,之前需要创建虚拟网卡

docker network create --driver bridge --subnet 172.22.16.0/24 --gateway 172.22.16.254 my_net2

  创建etcd服务

 1 docker run -d --name etcd-client-1 -p 2001:2379 -p 3001:2380 -v /root/workspace/docker/k8s/etcd/data1/:/data --network my_net2 --ip 172.22.16.1 etcd:3.3 \
 2       /bin/etcd \
 3       --data-dir=/data --name node1 \
 4       --initial-advertise-peer-urls http://172.22.16.1:2380 --listen-peer-urls http://0.0.0.0:2380 \
 5       --advertise-client-urls http://172.22.16.1:2379 --listen-client-urls http://172.22.16.1:2379,http://127.0.0.1:2379 \
 6       --initial-cluster-state new --initial-cluster-token docker-etcd \
 7       --initial-cluster node1=http://172.22.16.1:2380,node2=http://172.22.16.2:2380,node3=http://172.22.16.3:2380
 8
 9 docker run -d --name etcd-client-2 -p 2002:2379 -p 3002:2380 -v /root/workspace/docker/k8s/etcd/data2/:/data --network my_net2 --ip 172.22.16.2 etcd:3.3 \
10       /bin/etcd \
11       --data-dir=/data --name node2 \
12       --initial-advertise-peer-urls http://172.22.16.2:2380 --listen-peer-urls http://0.0.0.0:2380 \
13       --advertise-client-urls http://172.22.16.2:2379 --listen-client-urls http://172.22.16.2:2379,http://127.0.0.1:2379 \
14       --initial-cluster-state new --initial-cluster-token docker-etcd \
15       --initial-cluster node1=http://172.22.16.1:2380,node2=http://172.22.16.2:2380,node3=http://172.22.16.3:2380
16
17 docker run -d --name etcd-client-3 -p 2003:2379 -p 3003:2380 -v /root/workspace/docker/k8s/etcd/data3/:/data --network my_net2 --ip 172.22.16.3 etcd:3.3 \
18       /bin/etcd \
19       --data-dir=/data --name node3 \
20       --initial-advertise-peer-urls http://172.22.16.3:2380 --listen-peer-urls http://0.0.0.0:2380 \
21       --advertise-client-urls http://172.22.16.3:2379 --listen-client-urls http://172.22.16.3:2379,http://127.0.0.1:2379 \
22       --initial-cluster-state new --initial-cluster-token docker-etcd \
23       --initial-cluster node1=http://172.22.16.1:2380,node2=http://172.22.16.2:2380,node3=http://172.22.16.3:2380

  docker ps -a 命令界面

  weaveworks/scope 管理界面 安装参考 https://github.com/weaveworks/scope

1 curl -L git.io/scope -o /usr/local/bin/scope
2 chmod a+x /usr/local/bin/scope
3 scope launch

4. 进入到etcd容器

docker exec -it etcd-client-1 /bin/sh
etcdctl member list

5. API操作
  我们可以对任意一个node节点进行读写,即使容器关闭,这些KV数据都保存在Host主机上的。

curl http://127.0.0.1:2001/v2/keys/hello -XPUT -d value="hello world"
curl http://127.0.0.1:2003/v2/keys/hello

参考资料
  https://github.com/etcd-io/etcd
  https://www.cnblogs.com/CloudMan6
  https://www.cnblogs.com/xishuai/p/docker-etcd.html
  https://www.cnblogs.com/wunaozai/p/6936787.html
  https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.1cbe1991CFEvea

本文地址: https://www.cnblogs.com/wunaozai/p/9917488.html

转载于:https://www.cnblogs.com/wunaozai/p/9917488.html

物联网架构成长之路(22)-Docker练习之Etcd服务搭建相关推荐

  1. 物联网架构成长之路(24)-Docker练习之Compose容器编排

    0.前言 一开始学的之后,是想一步到位直接上Kubernetes(K8s)的,后面没想到,好像有点复杂,有些概念不是很懂.因此学习东西还是要循序渐进,慢慢来.先了解单机编排技术Docker Compo ...

  2. 物联网架构成长之路(18)-接阿里云OSS服务

    1.申请/购买OSS服务 在阿里云上申请/购买OSS服务, 然后在会得AccessKeyID,AccessKeySecret,bucketName 这三个东西 2.增删改查 在pom.xml文件上增加 ...

  3. 物联网架构成长之路(35)-利用Netty解析物联网自定义协议

    一.前言 前面博客大部分介绍了基于EMQ中间件,通信协议使用的是MQTT,而传输的数据为纯文本数据,采用JSON格式.这种方式,大部分一看就知道是熟悉Web开发.软件开发的人喜欢用的方式.由于我也是做 ...

  4. 2020 物联网架构成长之路-物联网架构小结

    1. 说明 这一小节,也不具体讲些什么了.最近一个半月都在摸鱼,没什么事做,慢慢学习着SpringBoot和SpringCloud.下面两张图是进行的一次小结.以后随着深入,整个架构肯定是会变的.现在 ...

  5. 物联网架构成长之路(3)-EMQ消息服务器了解

    1. 了解 物联网最基础的就是通信了.通信协议,物联网协议好像有那么几个,以前各个协议都有优劣,最近一段时间,好像各大厂商都采用MQTT协议,所以我也不例外,不搞特殊,采用MQTT协议,选定了协议,接 ...

  6. 架构成长之路 | 图解分布式共识算法Paxos议会协议

    作者:码途   阿里云智能-全球技术服务部 在系列的前一篇文章中,阐述了 Paxos 的单法令教会协议,也在文章的总结中提到了教会协议只是作为 Paxos 最核心的共识算法,并不具备实际的单独应用场景 ...

  7. 微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建

    微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建 通过采用微服相关架构构建一套以Kubernetes+Docker为自动化运维基础平台,以微服务为服务中心,在此基础之上构 ...

  8. 基于Gitlab Jenkins Docker集群 微服务搭建自动化部署平台

    随着公司应用系统的不断增多,原有手工部署流程越来越不满足上线的需求.为了各个系统能快速迭代与测试,减少上线流程时间和人为出错,迫切需要一套自动化部署系统. 转载原文:https://luoji.liv ...

  9. 架构成长之路:常见的五种MySQL高可用方案分析

    1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中 ...

  10. 架构成长之路 | 图解分布式共识算法Paxos教会协议

    作者:码途   阿里云智能-全球技术服务部 分布式共识算法是保证分布式一致性的基础,本文主要以简化类比的方式阐述了Paxos算法中的单法令教会会议(The Single-decree SYNOD)的算 ...

最新文章

  1. MERGE INTO 解决大数据量 10w 更新缓慢的问题
  2. Linux中搭建Maven私服
  3. Python词云#疫情退去后,你最想做什么
  4. Oracle闪回详解
  5. Java黑皮书课后题第5章:**5.7(金融应用:计算将来的学费)假设今年某大学的大学为10000美元,学费的年增长率为5%,一年后,学费将是10500美元。编写程序,计算10年后的学费,10~13费
  6. 微信小程序php get_php处理微信小程序request请求
  7. 怎样做一个真正的男人
  8. corosync + pacemaker + drbd 实现mysql存储的高可用(一)
  9. DataTable新增列设置DefaultValue问题。
  10. python virtualenv
  11. 项目管理中的流程管理
  12. mysql+读的负载均衡_MySQL Proxy快速实现读写分离以及负载均衡
  13. UnicodeEncodeError:#39;ascii#39;编解码器无法在位置20编码字符u#39;\\ xa0#39;:序数不在范围内(128)
  14. QQ在线客服代码(不需要加好友即可发起临时会话)
  15. 前端对页面中的 checked 选中状态的展示
  16. 解决CRMEB跨域问题
  17. MySQL查询最大值、最小值所在行
  18. 浅显解释 人工智能 vs 机器学习
  19. python选股策略,金叉,死叉,绿色云
  20. ATTCK框架以及使用场景

热门文章

  1. 【渝粤教育】国家开放大学2018年春季 0284-21T外国文学 参考试题
  2. 解决Python中设置与获取cookie时出现的中文编码问题。
  3. maven,eclipse--build时出现No compiler is provided in this environment
  4. LGP2046[NOI2010]海拔正确性证明
  5. Codeforces Round #524 (Div. 2) Masha and two friends
  6. codevs 1683 车厢重组
  7. Codefroces 762A k-th divisor 数论
  8. 雷林鹏分享:PHP XML Parser 函数
  9. 部署Hadoop2.0高性能集群
  10. 题目1012:畅通工程(并查集)