003.etcd集群布置-静态_玖富娱乐主管发布


玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。

一 etcd集群概述

1.1 概述

静态启动etcd集群要求每一个成员都晓得集群中的另一个成员。Etcd运转在集群的每一个coreos节点上,能够包管coreos集群的稳固,牢靠的运转。当集群收集涌现动乱,或许以后master节点涌现异常时,etcd能够举行master节点的推举事情,同时规复集群中丧失的数据。

1.2 集群容错才能

集群巨细 最大容错
1 0
2 1
4 1
5 2
6 2
7 3
8 3
9 4

1.3 集群基本

每一个 etcd cluster 都由若干个 member 构成的,每一个 member 是一个自力运转的 etcd 实例,单台机械上也能够运转多个 member。 在一般运转的状况下,集群中会有一个 leader,其他的 member 都是 followers。leader 向 followers 同步日记,包管数据在各个 member 都有副本。leader 还会准时向一切的 member 发送心跳报文,若是在划定的时候里 follower 没有收到心跳,就会从新举行推举。 客户端一切的要求都邑先发送给 leader,leader 向一切的 followers 同步日记,等收到凌驾折半的确认后就把该日记存储到磁盘,并返回相应客户端。 每一个 etcd 效劳有三大重要局部构成:raft 完成、WAL 日记存储、数据的存储和索引。 WAL 会在当地磁盘(即 --data-dir)上存储日记内容(wal file)和快照(snapshot)。 提醒:etcd 默许只生存 1000 个历史事件,因而不适合有大批更新操纵的场景,-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。-否则会致使数据的丧失。etcd 典范的运用场景是设置装备摆设治理和效劳发明,即读多写少的。

1.4 指导机制

  • 静态的
在启动 etcd server 的时刻,经由历程 --initial-cluster 参数设置装备摆设好一切的节点信息
  • etcd Discovery
运用已有的 etcd cluster 来注册和启动
  • DNS发明
运用 DNS 启动。

二 集群布置-静态

2.1 情况预备

ntp设置装备摆设:略 #发起设置装备摆设ntp效劳,包管时候一致性 etcd版本:v3.3.9 防火墙及SELinux:封闭防火墙和SELinux
称号 地点 主机名 备注
etcd1 172.24.8.31 etcd1.example.com  
etcd2 172.24.8.32 etcd2.example.com  
etcd3 172.24.8.33 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.31 etcd1.example.com
  7 172.24.8.32 etcd2.example.com
  8 172.24.8.33 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 ~]# etcd --name etcd1 --data-dir /data/etcd 
  2 --initial-advertise-peer-urls http://172.24.8.31:2380 
  3 --listen-peer-urls http://172.24.8.31:2380 
  4 --listen-client-urls http://172.24.8.31:2379,http://127.0.0.1:2379 
  5 --advertise-client-urls http://172.24.8.31:2379 
  6 --initial-cluster-token etcd-cluster-1 
  7 --initial-cluster etcd1=http://172.24.8.31:2380,etcd2=http://172.24.8.32:2380,etcd3=http://172.24.8.33:2380 
  8 --initial-cluster-state new
  注重:第一台启动的 etcd 效劳器将会赓续守候其他集群成员完成初始化衔接, 处于 waiting 状况。
  1 [root@etcd2 ~]# etcd --name etcd2 --data-dir /data/etcd 
  2 --initial-advertise-peer-urls http://172.24.8.32:2380 
  3 --listen-peer-urls http://172.24.8.32:2380 
  4 --listen-client-urls http://172.24.8.32:2379,http://127.0.0.1:2379 
  5 --advertise-client-urls http://172.24.8.32:2379 
  6 --initial-cluster-token etcd-cluster-1 
  7 --initial-cluster etcd1=http://172.24.8.31:2380,etcd2=http://172.24.8.32:2380,etcd3=http://172.24.8.33:2380 
  8 --initial-cluster-state new
  9 
 10 [root@etcd3 ~]# etcd --name etcd3 --data-dir /data/etcd 
 11 --initial-advertise-peer-urls http://172.24.8.33:2380 
 12 --listen-peer-urls http://172.24.8.33:2380 
 13 --listen-client-urls http://172.24.8.33:2379,http://127.0.0.1:2379 
 14 --advertise-client-urls http://172.24.8.33:2379 
 15 --initial-cluster-token etcd-cluster-1 
 16 --initial-cluster etcd1=http://172.24.8.31:2380,etcd2=http://172.24.8.32:2380,etcd3=http://172.24.8.33:2380 
 17 --initial-cluster-state new
  提醒:etcd可经由历程设置装备摆设文件、敕令行参数和情况变量举行设置装备摆设,在敕令行上设置的选项优先于来自情况的选项。若是供应了设置装备摆设文件,则将疏忽其他敕令行参数和情况变量。比方,etcd --config-file etcd.conf.yml --data-dir /tmp将疏忽该--data-dir标记。即优先级为:设置装备摆设文件>敕令行参数>情况变量。 设置装备摆设文件为yml的文件,可参考《附001.etcd实例设置装备摆设文件》 发起: 发起依据以下操纵将启动敕令写成流动剧本:
  1 [root@etcd1 ~]# vi /root/startetcd.sh
  2 #!/bin/sh
  3 #****************************************************************#
  4 # ScriptName: /root/startetcd.sh
  5 # Author: Xiang Hongying
  6 # Create Date: 2018-09-10 01:14
  7 # Modify Author: Xiang Hongying
  8 # E-Mail: x120952576@126.com
  9 # Version:
 10 #***************************************************************#
 11 LOGFILE=/var/log/etcd/etcd.log
 12 /usr/local/bin/etcd --name etcd1 --data-dir /data/etcd 
 13 --initial-advertise-peer-urls http://172.24.8.31:2380 
 14 --listen-peer-urls http://172.24.8.31:2380 
 15 --listen-client-urls http://172.24.8.31:2379,http://127.0.0.1:2379 
 16 --advertise-client-urls http://172.24.8.31:2379 
 17 --initial-cluster-token etcd-cluster-1 
 18 --initial-cluster etcd1=http://172.24.8.31:2380,etcd2=http://172.24.8.32:2380,etcd3=http://172.24.8.33:2380 
 19 -initial-cluster-state new >> $LOGFILE 2>&1 &
 20 [root@etcd1 ~]# chmod u x startetcd.sh
 

2.5 集群康健检测

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

附录:运用systemd治理etcd。

  1 [root@etcd1 ~]# vi /lib/systemd/system/etcd.service
  2 [Unit]
  3 Description=etcd
  4 Documentation=https://github.com/coreos/etcd
  5 Conflicts=etcd.service
  6 
  7 [Service]
  8 Type=notify
  9 Restart=always
 10 RestartSec=5s
 11 LimitNOFILE=40000
 12 TimeoutStartSec=0
 13 
 14 ExecStart=/usr/local/bin/etcd --name etcd1 --data-dir /data/etcd 
 15 --initial-advertise-peer-urls http://172.24.8.31:2380 
 16 --listen-peer-urls http://172.24.8.31:2380 
 17 --listen-client-urls http://172.24.8.31:2379,http://127.0.0.1:2379 
 18 --advertise-client-urls http://172.24.8.31:2379 
 19 --initial-cluster-token etcd-cluster-1 
 20 --initial-cluster etcd1=http://172.24.8.31:2380,etcd2=http://172.24.8.32:2380,etcd3=http://172.24.8.33:2380 
 21 --initial-cluster-state new
 22 
 23 [Install]
 24 WantedBy=multi-user.target
 25 [root@etcd1 ~]# systemctl daemon-reload
 26 [root@etcd1 ~]# systemctl start etcd.service
 27 [root@etcd1 ~]# systemctl enable etcd.service
  提醒:其他节点相似便可。

2.6 封闭集群

  1 [root@etcd1 ~]# systemctl stop etcd
提醒: 运用systemctl stop etcd 封闭集群, 在从新启动集群, 之前 etcd 生存的材料不会丧失 要对 etcd 集群举行重置, 最简朴的体式格局是封闭集群后, 删除一切 etcd member 中ETCD_DATA_DIR 设置装备摆设中界说的目次下的一切子目次,然后启动一切 member 便可。

三 集群治理

3.1 集群成员检测

  1 [root@etcd1 ~]# etcdctl member list

3.2 更新成员url

若成员etcd2的IP地点有更改,须要更新url,则须要实行以下操纵:
  1 [root@etcd3 ~]# ifconfig eth0
  2 inet 172.24.8.40
  3 [root@etcd3 ~]# vi /lib/systemd/system/etcd.service		#将一切旧IP改成最新IP。
  提醒:将一切IP修正为新的IP,若运用敕令参数启动,则在敕令参数中修正此IP为新值便可。
  1 [root@etcd3 ~]# systemctl restart etcd
  2 [root@etcd1 ~]# etcdctl member list		#在leader节点检察一切节点
 
  1 [root@etcd1 ~]# etcdctl member update 14ff148c62a24fb2 http://172.24.8.40:2380	#更新对等url
  提醒:毛病更新的客户端URL不会影响etcd聚集的运转状况。

3.3 增加新成员

  1 [root@localhost ~]# hostnamectl set-hostname etcd4.example.com
参考2.3步调在etcd4.example.com节点装置etcd。
  1 [root@etcd1 ~]# etcdctl member add etcd4 http://172.24.8.34:2380
  1 [root@etcd4 ~]# export ETCD_NAME="etcd4"
  2 [root@etcd4 ~]# export ETCD_INITIAL_CLUSTER="etcd4=http://172.24.8.34:2380,etcd3=http://172.24.8.40:2380,etcd1=http://172.24.8.31:2380,etcd2=http://172.24.8.32:2380"
  3 [root@etcd4 ~]# export ETCD_INITIAL_CLUSTER_STATE="existing"
  4 [root@etcd4 ~]# etcd --listen-client-urls http://172.24.8.34:2379,http://127.0.0.1:2379 --advertise-client-urls http://172.24.8.34:2379 --listen-peer-urls http://172.24.8.34:2380 --initial-advertise-peer-urls http://172.24.8.34:2380 --data-dir /data/etcd
  5 [root@etcd1 ~]# etcdctl member list
  6 [root@etcd1 ~]# etcdctl cluster-health
  提醒:当运用已删除成员的数据目次启动etcd时,若是etcd衔接到集群中的任何运动成员,它将自动退出,可经由历程以下体式格局删除旧member的数据,然后从新启动:
  1 # rm -rf /var/lib/etcd/default.etcd/
  2 # systemctl start etcd
 

3.4 删除成员

  1 [root@etcd1 ~]# etcdctl member remove 5a6397499417250
  2 Removed member 5a6397499417250 from cluster
  提醒:删除leader是平安的,然则中选出新领导者时,聚集将处于非运动状况。此持续时候通常是推举超时和投票历程的时候段。

四 集群布置-发明

见《004.etcd集群布置-发明》 参考官方文档: https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。