专栏首页木二天空004.etcd集群部署-动态发现

004.etcd集群部署-动态发现

一 etcd发现简介

1.1 需求背景

在实际环境中,集群成员的ip可能不会提前知道。如使用dhcp自动获取的情况,在这些情况下,使用自动发现来引导etcdetcd集群,而不是指定静态配置,这个过程被称为“发现”。

  • etcd Discovery

使用已有的 etcd cluster 来注册和启动

  • DNS发现

使用 DNS 启动。

1.2 实现机制

Discovery service protocol帮助新的etcd成员使用共享URL在集群引导阶段发现所有其他成员。

该协议使用新的发现令牌来引导一个唯一的etcd集群。一个发现令牌只能代表一个etcd集群。只要此令牌上的发现协议启动,即使它中途失败,也不能用于引导另一个etcd集群。

提示:Discovery service protocol仅用于集群引导阶段,不能用于运行时重新配置或集群监视。

1.3 协议工作流程

Discovery protocol是使用内部etcd集群来协调新集群的引导程序。首先,所有新成员都与发现服务交互,并帮助生成预期的成员列表。然后,每个新成员使用此列表引导其服务器,该列表执行与--initial-cluster标志相同的功能,即设置所有集群的成员信息。

二 集群部署-etcd自带发现

2.1 环境准备

ntp配置:略 #建议配置ntp服务,保证时间一致性

etcd版本:v3.3.9

防火墙及SELinux:关闭防火墙和SELinux

名称

地址

主机名

备注

etcd1

172.24.8.71

etcd1.example.com

etcd2

172.24.8.72

etcd2.example.com

etcd3

172.24.8.73

etcd3.example.com

  1 # hostnamectl set-hostname etcd1.example.com
  2 # hostnamectl set-hostname etcd2.example.com
  3 # hostnamectl set-hostname etcd3.example.com
  4 # vi /etc/hosts
  5 #……
  6 172.24.8.71 etcd1.example.com
  7 172.24.8.72 etcd2.example.com
  8 172.24.8.73 etcd3.example.com

提示:CentOS6.x则修改/etc/sysconfig/network,以上为建议配置项。

2.2 安装etcd

  1 # ETCD_VER=v3.3.9
  2 # GITHUB_URL=https://github.com/coreos/etcd/releases/download
  3 # DOWNLOAD_URL=${GITHUB_URL}
  4 # rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
  5 # rm -rf /tmp/etcd-download-test
  6 # mkdir -p /tmp/etcd-download-test		#创建下载保存目录
  7 # curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
  8 # tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
  9 # cp /tmp/etcd-download-test/etcd /usr/local/bin/
 10 # cp /tmp/etcd-download-test/etcdctl /usr/local/bin/
 11 # rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
 12 
 13 # rm -rf /tmp/etcd-download-test/
 14 # ETCDCTL_API=3
 15 # etcd --version
 16 # etcdctl --version				#查看已安装版本

提示:所有节点均需要安装etcd。

2.3 启动前准备

  1 # mkdir -p /var/log/etcd/			#建议创建etcd日志保存目录
  2 # mkdir -p /data/etcd			#建议创建单独的etcd数据目录

2.4 创建集群发现

  1 [root@etcd1 ~]# curl https://discovery.etcd.io/new?size=3	#使用公共etcd发现服务
  2 https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8

提示:size为集群节点数量,若未指定数量,则默认位3。

2.5 启动集群

  1 [root@etcd1 ~]# etcd --name etcd1 --data-dir /data/etcd \
  2 --initial-advertise-peer-urls http://172.24.8.71:2380 \
  3 --listen-peer-urls http://172.24.8.71:2380 \
  4 --listen-client-urls http://172.24.8.71:2379,http://127.0.0.1:2379 \
  5 --advertise-client-urls http://172.24.8.71:2379 \
  6 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8
  7 
  8 [root@etcd2 ~]# etcd --name etcd2 --data-dir /data/etcd \
  9 --initial-advertise-peer-urls http://172.24.8.72:2380 \
 10 --listen-peer-urls http://172.24.8.72:2380 \
 11 --listen-client-urls http://172.24.8.72:2379,http://127.0.0.1:2379 \
 12 --advertise-client-urls http://172.24.8.72:2379 \
 13 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8
 14 
 15 [root@etcd3 ~]# etcd --name etcd3 --data-dir /data/etcd \
 16 --initial-advertise-peer-urls http://172.24.8.73:2380 \
 17 --listen-peer-urls http://172.24.8.73:2380 \
 18 --listen-client-urls http://172.24.8.73:2379,http://127.0.0.1:2379 \
 19 --advertise-client-urls http://172.24.8.73:2379 \
 20 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8

提示:每个成员必须指定不同的名称标志,否则发现将因重复的名称而失败。

2.6 集群检测

  1 [root@etcd1 ~]# etcdctl member list
  2 [root@etcd1 ~]# etcdctl cluster-health

三 集群部署-DNS发现

参考官方文档:

https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 007.基于Docker的Etcd分布式部署

    提示:quay.io/coreos/etcd镜像国内可能无法pull,可在国外节点pull,然后scp至集群节点。

    木二
  • 008.Docker Flannel+Etcd分布式网络部署

    Flannel是一种基于overlay网络的跨主机容器网络解决方案,即将TCP数据包封装在另一种网络包里面进行路由转发和通信,Flannel是CoreOS开发,...

    木二
  • 001.etcd简介及单节点使用

    etcd 是 CoreOS 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(...

    木二
  • etcd原理以及基本技术概述铺垫

    作为要了解etcd这个数据库,那么第一步就是要知道从哪里去访问官网,再下一步就是如何从官网中获取自己需要的文档资料。

    Devops海洋的渔夫
  • etcd项目

    说明:etcd是一个分布式键值存储,用于分布式系统的最关键数据。etcd提供了一种可靠的方法,可以在一组机器上存储数据,具有最佳的稳定性、可靠性、可伸缩性和性能...

    CNCF
  • Jepsen对etcd 3.4.3测试的最新结果

    Jepsen对etcd 3.4.3进行了测试和分析,得到了良好的结果和有用的反馈。

    CNCF
  • 彻底搞懂 etcd 系列文章(二):etcd 的多种安装姿势

    etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管。etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册与发现,还可以作为 key...

    aoho求索
  • 【番外篇】ETCD学习

    etcd是一个开源的、分布式的键值对数据存储系统,提供共享配置、服务的注册和发现。etcd与zookeeper相比算是轻量级系统,两者的一致性协议也一样,etc...

    BH9AP_Librant
  • CNCF托管etcd

    etcd是一个分布式键值存储,它提供了一种可靠的方法,可以在一组机器上存储数据,具有最佳的稳定性、可靠性、可伸缩性和性能。该项目 - 经常与Kubernetes...

    CNCF
  • ETCD:从应用场景到实现原理的全方位解读 转

    随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用强一致性的服务发现存储仓库,渐渐为开发人员所关注。在...

    henrylee2cn

扫码关注云+社区

领取腾讯云代金券