zoukankan      html  css  js  c++  java
  • etcd安装

    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的进程会自动销毁,不需要再去停止线程。

  • 相关阅读:
    D3D中的渲染状态简介
    D3D HOOK实现透视讲解
    引入外部文件的时候为什么省略http:
    hbase java Api练习
    [待解决]ColumnPrefixFilter 不能过滤出全部满足条件的,
    代码风格
    eclipse不自动弹出提示的解决办法(eclipse alt+/快捷键失效)centos 6.7
    hbase练习题
    hive安装
    脚本 sh 和 ./ 的区别,exec和source
  • 原文地址:https://www.cnblogs.com/lujiango/p/11088716.html
Copyright © 2011-2022 走看看