etcd有三种集群化启动的配置方案,分别为静态配置启动、etcd自身服务发现、通过DNS进行服务发现,重点讲一下静态配置启动。
根据启动环境,可以选择不同的配置方式。这也是新版etcd区别于旧版的一大特性,它摈弃了使用配置文件进行参数配置的做法,转而使用命令行参数或环境变量来配置参数。

1. 静态配置启动

比较适合于离线环境,在启动整个集群之前,如果已经预先清楚锁要配置的集群大小,以及集群上各节点的地址和端口信息,那么启动时,你就可以通过配置initial-cluster参数进行etcd集群的启动。
在每个etcd机器启动时,配置环境变量或添加启动参数的方式如下:
ETCD_INITIAL_CLUSTER="etcd0=http://10.0.1.10:2380,etcd1=http://10.0.1.11:2380,etcd2=http://10.0.1.12:2380"
ETCD_INITIAL_CLUSTER_STATE=new
参数方法:
-initial-cluster etcd0=http://10.0.1.10:2380,etcd1=http://10.0.1.11:2380,etcd2=http://10.0.1.12:2380 \
-initial-cluster-state new

-initial-cluster参数中配置的url地址必须与各个节点启动时设置的initial-advertise-peer-urls参数相同。initial-advertise-peer-urls参数表示节点监听其他节点同步信号的地址。
如果你所在的网络环境配置了多个etcd集群,为了避免意外发生,最好使用initial-cluster-token参数为每一集群单独配置一个token认证。这样就可以确保每个集群和集群的成员都拥有独特的ID。

综上所述,如果你要配置包含3个etcd节点的集群,那么你在3个机器上的启动命令分别如下所示
$ etcd -name etcd0 -initial-advertise-peer-urls http://10.0.1.10:2380 \
-listen-peer-urls http://10.0.1.10:2380 \
-initial-cluster-token etcd-cluster-1 \
-initial-cluster etcd0=http://10.0.1.10:2380,etcd=http://10.0.1.11:2380,etcd2=http://10.0.1.12:2380 \
-initial-cluster-state new

$ etcd -name etcd1 -initial-advertise-peer-urls http://10.0.1.11:2380 \
-listen-peer-urls http://10.0.1.11:2380 \
-initial-cluster-token etcd-cluster-1 \
-initial-cluster etcd0=http://10.0.1.10:2380,etcd1=http://10.0.1.11:2380,etcd2=http://10.0.1.12:2380 \
-initial-cluster-state new

$ etcd -name etcd2 -initial-advertise-peer-urls http://10.0.1.12:2380 \
-listen-peer-urls http://10.0.1.12:2380 \
-initial-cluster-token etcd-cluster-1 \
-initial-cluster etcd0=http://10.0.1.10:2380,etcd1=http://10.0.1.11:2380,etcd2=http://10.0.1.12:2380 \
-initial-cluster-state new
在初始化完成后,etcd还提供动态增、删、改etcd集群节点的功能,这个需要用到etcdctl命令进行操作。
补充常见参数的解释:
-name:本member的名字。
-initial-advertise-peer-urls:其他member使用,其他member通过该地址与本member交互信息。
-listen-peer-urls:本member侧使用,用于监听其他member发送信息的地址。
-listen-client-urls:本member侧使用,用于监听etcd客户发送信息的地址。该地址用于ASR业务访问。
-advertise-client-urls:etcd客户使用,客户通过该地址与本member交互信息,一定要保证从客户侧能可访问该地址。
-initial-cluster-state:填new。
-initial-cluster:本member侧使用。描述集群中所有节点的信息,本member根据此信息去联系其他member。
-data-dir:指定节点的数据存储目录,这些数据包括节点ID,集群ID,集群初始化配置,Snapshot文件等。

检查集群成员状态:
./etcdctl --endpoints=http://10.1.92.192:23000 member list

2. 运行时节点变更

etcde集群启动完毕后,可以在运行的过程中对集群进行重构,包括核心节点的增加、删除、迁移、替换等。
只有当集群中多数节点正常的情况下,才可以进行运行时的配置管理。因为配置更改的信息也会被etcd当成一个信息存储和同步,如果集群多数节点损坏,集群就失去了写入数据的能力。所以在配置etcd集群数量时,强烈推荐至少配置3个核心节点,配置数量越多,可用性越强。

2.1 节点迁移、替换

当你节点所在的机器出现硬件故障,或节点出现如数据目录损坏等问题,导致节点永久性的不可恢复时,就需要对节点进行迁移或替换。当一个节点失效以后,必须尽快修复,因为etcd集群正常运行的必要条件是集群中多数节点都正常工作。迁移一个节点需要进行4个步骤:
(1)暂停正在运行着的节点程序进程
(2)把数据目录从现有机器拷贝到新机器
(3)使用API更新etcd中对应节点指向机器的url记录更新为新机器的IP
(4)使用同样的配置项和数据目录,在新的机器上启动etcd

2.2 节点增加

增加节点可以让etcd的高可用性更强。如果有3个节点,那么最多允许1个节点失效;如果有5个节点,就可以允许有2个节点失效。同时,增加节点还可以让etcd集群具有更好的读性能。因为etcd的节点都是实时同步的,每个节点上都存储了所有的信息,所以增加节点可以从整体上提升读的吞吐量。
增加一个节点需要进行两步操作:
(1)在集群中增加这个节点的url记录,同时获得集群的信息
(2)使用获得的集群信息启动新etcd节点
实例操作:

其中endpoints是整个etcd集群的leader地址,-initial-cluster-state设置为existing。现在利用命令把节点信息加入集群./etcdctl --endpoints=http://10.31.10.19:13000 member add http://10.31.10.19.53001。

2.3 节点移除

有时你不得不在提高etcd的写性能和增加集群高可用性上进行权衡。Leader节点在提交一个写记录时,会吧这个信息同步到每个节点上,当得到多数节点的同意反馈后,才会真正写入数据。所以节点越多,写入性能越差。在节点过多时,你可能需要移除其中的一个或多个。移除节点非常简单,只需要一步操作,就是把集群中这个节点的记录删除,则对应机器上的该节点就会自动停止。

实例操作:

其中endpoints是整个etcd集群的leader地址./etcdctl --endpoints=http://10.31.10.19:13000 member remove 17d2d3fed8c2dda7

注意:执行member remove对应节点etcd的进程会自动销毁,不需要再去停止线程。

etcd安装的更多相关文章

  1. etcd安装和所遇到的坑

    首先参照 https://www.cnblogs.com/lyzw/p/6016789.html来安装 虚拟机:VMware® Workstation 12 Pro 系统:CentOS Linux r ...

  2. etcd 安装部署

    etcd 是coreos团队开发的分布式服务发现键值存储仓库. github地址: https://github.com/coreos/etcd 安装: 1.下载etcd最新版本 https://gi ...

  3. Etcd安装和使用

    Etcd安装和使用 一.安装 1.1 二进制安装 从这里下载: etcd-v3.2.11-linux-amd64.tar.gz 下载包后解压即可运行: # 解压 tar zxvf etcd-v3.2. ...

  4. etcd安装部署步骤

    我是通过yum直接安装的(yum install etcd -y),其生成的配置文件在/etc/etcd/etcd.conf. 这里分单机版和集群版来介绍配置项 单机配置 ETCD_DATA_DIR: ...

  5. etcd安装常用操作

    etcd安装 etcd 是基于 Raft 的分布式 key-value 存储系统,由 CoreOS 开发,常用于服务发现.共享配置以及并发控制(如 leader 选举.分布式锁等).kubernete ...

  6. ETCD快速入门-02 ETCD安装

    2.ETCD安装     etcd 安装可以通过源码构建也可以使用官方构建的二进制文件进行安装.我们以二进制文件为例,系统为CentOS 7.9,操作步骤如下所示: 2.1 Linux ETCD_VE ...

  7. ks8基础(1) etcd安装

    下载安装 https://github.com/coreos/etcd/releases 在这网页,可以看到有多个版本共选择. 下载3.25 解压后, cd etcd-v3.2.5-linux-amd ...

  8. S1_搭建分布式OpenStack集群_03 Mysql、MQ、Memcached、ETCD安装配置

    一.安装mysql(contorller)controller ~]# yum -y install mariadb mariadb-server python2-PyMySQL 配置my.cnf文件 ...

  9. etcd安装和简单使用

    etcd作为一个高可用强一致性的服务发现存储仓库,在Kubernetes等开源项目中用的很多,这里简单记录下安装和常用命令以及api 安装 安装包可以从 https://github.com/etcd ...

随机推荐

  1. 增强学习--TRPO算法

    理论部分参考 推导 数学上的分析 代码

  2. java线程的生命周期及五种基本状态

    一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌 ...

  3. Linux在丢失的情况下重置密码

    1.开机菜单是 移动光标到第一行 --敲击e 2.找到UTF-8,加上空格rd.break,敲击ctrl+x 3.输入以下命令 mount -o remount,rw /sysroot chroot ...

  4. Linux命令——lspci

    参考:7 Linux lspci Command Examples to Get PCI Bus Hardware Device Info 简介 lspci可以看成“ls” + “pci”.lspci ...

  5. Failed to close the ServletOutputStream connection cleanly, Broken pipe

    Problem1: 服务端报错:Broken pipejava.io.IOException: Connection timed out at sun.nio.ch.FileDispatcherImp ...

  6. 《你说对就队》第八次团队作业:Alpha冲刺 第三天

    <你说对就队>第八次团队作业:Alpha冲刺 第三天 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 团队名称 <你说对就队> ...

  7. 为什么引入Memcached?

    刚memcached了解学习,一直是处于一个懵懂的状态,先是对memcached进行了一个了解,但我们为什么要在ITOO中引入memcached呢?当问我的时候当时自己脑子中打了一个大大的 这就必须去 ...

  8. 2019-2020-1 20199301《Linux内核原理与分析》第四周作业

    Week4 MenuOS的构造 一.上周复习 计算机的三大法宝: 存储程序计算机: 函数调用堆栈: 中断. 操作系统的两把宝剑: 中断上下文-保存现场和恢复现场 进程上下文 二.Linux内核源代码简 ...

  9. POJ3709 K-Anonymous Sequence

    题意 Language:Default K-Anonymous Sequence Time Limit: 4000MS Memory Limit: 65536K Total Submissions: ...

  10. 3D-2D透视投影数学推导

    请尊重作者,禁止私自盗用图片!