基于已有集群动态发现方式部署 Etcd 集群
etcd提供了多种部署集群的方式,在「通过静态发现方式部署etcd集群」 一文中我们介绍了如何通过静态发现方式部署集群。
不过很多时候,你只知道你要搭建一个多大(包含多少节点)的集群,但是并不能事先知道这几个节点的ip,从而无法使用--initial-cluster参数。
这个时候,你就需要使用discovery的方式来搭建etcd集群。discovery方式有两种:etcd discovery和DNS discovery。
这里我们先介绍下etcd discovery方式。这种启动方式依赖另外一个ETCD集群,在该集群中创建一个目录,并在该目录中创建一个_config的子目录,并且在该子目录中增加一个size节点,指定集群的节点数目。在这种情况下,将该目录在ETCD中的URL作为节点的启动参数,即可完成集群启动。
etcd discovery集群方式分为两种:自定义的etcd discovery和公共 etcd discovery。
- 公共etcd discovery服务
公共的discovery就是通过CoreOS提供的公共discovery服务申请token。
获取集群标识
集群标识可以从已有的etcd集群中创建,这里通过CoreOS提供的公共discovery服务申请token
$ curl -w "\n" 'https://discovery.etcd.io/new?size=3'
https://discovery.etcd.io/c5b52d9d8fd7af9017bd7b54cf13e420
以上命令会生成一个链接样式的token,参数size代表要创建的集群大小。
修改etcd配置
依次编辑三个节点的etcd配置文件,删除ETCD_INITIAL_CLUSTER、ETCD_INITIAL_CLUSTER_STATE、ETCD_INITIAL_CLUSTER_TOKEN配置参数并加上ETCD_DISCOVERY参数为获取的集群标识即可。
这里以etcd1节点为例(etcd2、etcd3同理):
# 编辑etcd配置文件
$ vim /opt/etcd/config/etcd.conf
ETCD_NAME=etcd1
ETCD_DATA_DIR="/var/lib/etcd/etcd1"
ETCD_LISTEN_PEER_URLS="http://192.168.2.210:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.2.210:2379,http://192.168.2.210:4001"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.2.210:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.2.210:2379,http://192.168.2.210:4001"
ETCD_DISCOVERY="https://discovery.etcd.io/c5b52d9d8fd7af9017bd7b54cf13e420"
测试etcd集群
按上面配置好各集群节点后,分别在各节点启动etcd。
$ systemctl start etcd
启动完成后,执行以下命令:
$ curl -w '\n' https://discovery.etcd.io/c5b52d9d8fd7af9017bd7b54cf13e420
{"action":"get","node":{"key":"/_etcd/registry/c5b52d9d8fd7af9017bd7b54cf13e420","dir":true,"nodes":[{"key":"/_etcd/registry/c5b52d9d8fd7af9017bd7b54cf13e420/a44795c1770e34ec","value":"etcd1=http://192.168.2.210:2380","modifiedIndex":1301600912,"createdIndex":1301600912},{"key":"/_etcd/registry/c5b52d9d8fd7af9017bd7b54cf13e420/a085e7281cb15be2","value":"etcd2=http://192.168.2.211:2380","modifiedIndex":1301601030,"createdIndex":1301601030},{"key":"/_etcd/registry/c5b52d9d8fd7af9017bd7b54cf13e420/173070ace158b9d1","value":"etcd3=http://192.168.2.212:2380","modifiedIndex":1301601101,"createdIndex":1301601101}],"modifiedIndex":1301571633,"createdIndex":1301571633}}
从输出结果看,说明集群已在discovery.etcd.io注册成功。
查看集群成员
$ etcdctl --endpoints "http://192.168.2.210:2379" member list
173070ace158b9d1: name=etcd3 peerURLs=http://192.168.2.212:2380 clientURLs=http://192.168.2.212:2379,http://192.168.2.212:4001 isLeader=false
a085e7281cb15be2: name=etcd2 peerURLs=http://192.168.2.211:2380 clientURLs=http://192.168.2.211:2379,http://192.168.2.211:4001 isLeader=false
a44795c1770e34ec: name=etcd1 peerURLs=http://192.168.2.210:2380 clientURLs=http://192.168.2.210:2379,http://192.168.2.210:4001 isLeader=true
更多集群使用方法可参考「通过静态发现方式部署etcd集群」一文。
自定义的etcd discovery服务
这种方式就是利用一个已有的etcd集群来提供discovery服务,从而搭建一个新的etcd集群。
假设已有的etcd集群的一个访问地址是:192.168.2.210,那么我们首先需要在已有etcd中创建一个特殊的key,方法如下:
$ curl http://192.168.2.210:2379/v2/keys/discovery/8ebee6723eaf3f5c7724e879f8797e85/_config/size -d value=3
{"action":"create","node":{"key":"/discovery/8ebee6723eaf3f5c7724e879f8797e85/_config/size/00000000000000000011","value":"3","modifiedIndex":11,"createdIndex":11}}
其中value=3表示本集群的大小,即: 有多少集群节点。而 8ebee6723eaf3f5c7724e879f8797e85就是用来做discovery的token。
值得注意的是:如果实际启动的etcd节点个数大于discovery token创建时指定的size,多余的节点会自动变为proxy节点。
etcd proxy模式简介:
作为反向代理把客户的请求转发给可用的etcd集群,新节点加入集群如果核心节点数已满足要求,则自动转化为proxy模式,此项不会在节点不足时逆向转化为实际节点。
接下来的配置就和公共etcd discovery服务中的方法类似,就不再重复阐述了。
参考文档
http://www.google.com
http://t.cn/RXzZrI9
https://www.zhangluya.com/?p=147
https://segmentfault.com/a/1190000003852735
基于已有集群动态发现方式部署 Etcd 集群的更多相关文章
- 基于 DNS 动态发现方式部署 Etcd 集群
使用discovery的方式来搭建etcd集群方式有两种:etcd discovery和DNS discovery.在 「基于已有集群动态发现方式部署etcd集群」一文中讲解了etcd discove ...
- 通过静态发现方式部署 Etcd 集群
在「etcd使用入门」一文中对etcd的基本知识点和安装做了一个简要的介绍,这次我们来说说如何部署一个etcd集群. etcd构建自身高可用集群主要有三种形式: 静态发现: 预先已知etcd集群中有哪 ...
- Kubernetes后台数据库etcd:安装部署etcd集群,数据备份与恢复
目录 一.系统环境 二.前言 三.etcd数据库 3.1 概述 四.安装部署etcd单节点 4.1 环境介绍 4.2 配置节点的基本环境 4.3 安装部署etcd单节点 4.4 使用客户端访问etcd ...
- 基于Docker部署ETCD集群
基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...
- 使用二进制文件部署Etcd集群
Etcd 是一个分布式键值存储系统,Kubernetes使用Etcd进行数据存储,所以先准备一个Etcd数据库,为解决Etcd单点故障,应采用集群方式部署,这里使用3台组建集群,可容忍1台机器故障,当 ...
- 部署etcd集群
部署etcd集群 第一步:先拉取etcd二进制压缩包 wget https://github.com/coreos/etcd/releases/download/v3.3.2/etcd-v3.3.2- ...
- 2、二进制安装K8s 之 部署ETCD集群
二进制安装K8s 之 部署ETCD集群 一.下载安装cfssl,用于k8s证书签名 二进制包地址:https://pkg.cfssl.org/ 所需软件包: cfssl 1.6.0 cfssljson ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第02章 - 部署etcd集群
文章目录 1.2.部署etcd集群 1.2.0.下载etcd二进制文件 1.2.1.创建etcd证书和私钥 1.2.2.生成etcd证书和私钥 1.2.3.配置etcd为systemctl管理 1.2 ...
- centos6.5环境基于conga的web图形化界面方式配置rhcs集群
一.简介 RHCS 即 RedHat Cluster Suite ,中文意思即红帽集群套件.红帽集群套件(RedHat Cluter Suite, RHCS)是一套综合的软件组件,可以通过在部署时采用 ...
随机推荐
- ELK日志系统之kibana的使用操作
1.ELK日志系统打开后,打开kibana的操作界面,第一步创建索引模式: 第2步:创建日志索引 第3步:创建成功 第4步:查看30分钟时间段内的日志数据,也可以查今天的,今月的,今年的 放牛去
- URL&HTTP协议
一般来讲,URL地址有五个部分组成,协议,域名,端口,路径,URL地址参数,通常“//'之前的部分就是协议 常用的协议有: http 超文本传输协议 htttps http+ssl ssh 用来实现远 ...
- Mysql高性能优化规范
数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意 ...
- XGBoost使用教程(进阶篇)三
一.Importing all the libraries import pandas as pdimport numpy as npfrom matplotlib import pyplot as ...
- 孪生网络(Siamese Network)在句子语义相似度计算中的应用
1,概述 在NLP中孪生网络基本是用来计算句子间的语义相似度的.其结构如下 在计算句子语义相似度的时候,都是以句子对的形式输入到网络中,孪生网络就是定义两个网络结构分别来表征句子对中的句子,然后通过曼 ...
- Java 为什么需要包装类,如何使用包装类?
出处:https://cloud.tencent.com/developer/article/1362754
- 201800628模拟赛T2——最大土地面积
题目描述 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大. 输入输出格式 输入格式: 第1行一个正整数N,接下来N行,每行2个数x,y ...
- 码云因为认证失败导致推送失败 生成 SSH 密钥对
- mysql Navicat通过代理链接数据库
1.做完host 账号 密码(数据库服务器)配置之后,选择ssh 2.配置代理服务器ip的登录的账号密码.(代理服务器必须可以连你的Navicat客户端和数据库服务器,不然怎么做代理.) 3.可以直接 ...
- [RN] 阿里 ant-design 菜单比较丰富 https://github.com/ant-design/ant-design-mobile
阿里 ant-design 菜单比较丰富 https://github.com/ant-design/ant-design-mobile 天和风雨顺 地和五谷丰 人和事业旺 家和万事兴