ETCD-01_etcd集群安装配置

129 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、目标 在centos7.6上安装配置etcd集群

二、架构

ETCD集群3个节点的架构 ip hostname os & module Cluster Name 10.1.1.5 etcd5 centos 7.6 etcd-v3.3.2-linux-amd64 etcd-1 10.1.1.6 etcd6 centos 7.6 etcd-v3.3.2-linux-amd64 etcd-2 10.1.1.7 etcd7 centos 7.6 etcd-v3.3.2-linux-amd64 etcd-3

三、初始化环境

以下在所有节点上都要操作

1.关闭防火墙和selinux systemctl restart ntpd systemctl enable ntpd systemctl stop firewalld systemctl disable firewalld setenforce 0 2.下载etcd软件包 wget -P /usr/local/src/ github.com/coreos/etcd…

cd /usr/local/src tar -zxf etcd-v3.3.2-linux-amd64.tar.gz mv etcd-v3.3.2-linux-amd64 /usr/local/etcd-v3.3.2 3.修改系统环境变量 vim /.bashrc 在/.bashrc文件的末尾追加以下两行内容

export PATH=$PATH:/usr/local/etcd-v3.3.2/ export ETCDCTL_API=3 让配置生效

source ~/.bashrc

四、配置etcd

以下需要再三个节点上操作,配置文件略有不同,注意看

1.创建etcd启动所需的配置文件 说明:配置文件基本相同,唯独advertise-client-urls和initial-advertise-peer-urls要写自己的ip地址。

● 在节点1(10.1.1.5)创建配置文件etcd.conf

vim /usr/local/etcd-v3.3.2/etcd.conf name: etcd-1 data-dir: /usr/local/etcd-v3.3.2/data listen-client-urls: http://0.0.0.0:2379 advertise-client-urls: http://10.1.1.5:2379 listen-peer-urls: http://0.0.0.0:2380 initial-advertise-peer-urls: http://10.1.1.5:2380 initial-cluster: etcd-1=http://10.1.1.5:2380,etcd-2=http://10.1.1.6:2380,etcd-3=http://10.1.1.7:2380 initial-cluster-token: etcd-cluster-my initial-cluster-state: new ● 在节点2(10.1.1.6)创建配置文件etcd.conf

vim /usr/local/etcd-v3.3.2/etcd.conf name: etcd-2 data-dir: /usr/local/etcd-v3.3.2/data listen-client-urls: http://0.0.0.0:2379 advertise-client-urls: http://10.1.1.6:2379 listen-peer-urls: http://0.0.0.0:2380 initial-advertise-peer-urls: http://10.1.1.6:2380 initial-cluster: etcd-1=http://10.1.1.5:2380,etcd-2=http://10.1.1.6:2380,etcd-3=http://10.1.1.7:2380 initial-cluster-token: etcd-cluster-my initial-cluster-state: new ● 在节点3(10.1.1.7)创建配置文件etcd.conf

vim /usr/local/etcd-v3.3.2/etcd.conf name: etcd-3 data-dir: /usr/local/etcd-v3.3.2/data listen-client-urls: http://0.0.0.0:2379 advertise-client-urls: http://10.1.1.7:2379 listen-peer-urls: http://0.0.0.0:2380 initial-advertise-peer-urls: http://10.1.1.7:2380 initial-cluster: etcd-1=http://10.1.1.5:2380,etcd-2=http://10.1.1.6:2380,etcd-3=http://10.1.1.7:2380 initial-cluster-token: etcd-cluster-my initial-cluster-state: new 注释:

name: etcd-1 --->etcd集群节点名称(每台主机不能重复) data-dir: /usr/local/etcd-v3.3.2/data --->存放数据的主目录 listen-client-urls: http://0.0.0.0:2379 --->监听客户端的url,0.0.0.0表示监听本机所有的ip地址 advertise-client-urls: http://10.1.1.5:2379 --->向etcd集群宣告自己的ip和端口,写本机ip listen-peer-urls: http://0.0.0.0:2380 --->监听集群中其他成员的ip,0.0.0.0表示所有ip都能成为成员 initial-advertise-peer-urls: http://10.1.1.5:2380 --->宣告给集群中的其他成员自己的ip和端口,写本机ip initial-cluster: etcd-1=http://10.1.1.5:2380,etcd-2=http://10.1.1.6:2380,etcd-3=http://10.1.1.7:2380 --->将集群成员的所有集群名(etcd.conf中的name值)和其ip+端口都写在这里,每个成员用逗号分隔。 initial-cluster-token: etcd-cluster-my --->集群的token,只有相同的token才能有资格成为etcd成员 initial-cluster-state: new --->集群初始化状态。new表示新建集群。当谁想加入本已存在的集群时后,那它的状态应写成existing 2.在所有节点上都创建数据存储目录 mkdir /usr/local/etcd-v3.3.2/data 3.在所有节点上都创建系统启动菜单 vim /usr/lib/systemd/system/etcd.service [Unit] Description=Etcd Server After=network.target After=network-online.target Wants=network-online.target

[Service] Type=notify WorkingDirectory=/usr/local/etcd-v3.3.2

User=etcd

ExecStart=/usr/local/etcd-v3.3.2/etcd --config-file /usr/local/etcd-v3.3.2/etcd.conf Restart=on-failure LimitNOFILE=65536

[Install] WantedBy=multi-user.target

4.首次启动etcd集群节点 启动大概原则:先启动任意一个节点,待第一个节点启动成功后,再启动剩余的两个

● 启动节点1的etcd,并设置为开机自启

systemctl daemon-reload systemctl restart etcd && systemctl enable etcd ● 启动节点2和节点3的etcd,并设置为开机自启

systemctl daemon-reload systemctl restart etcd && systemctl enable etcd 5.检验ETCD集群 ● 在任意节点上执行,观察2379和2380端口是否启动

[root@etcd5 ~]# netstat -ntlup |grep etcd tcp6 0 0 :::2379 :::* LISTEN 6417/etcd
tcp6 0 0 :::2380 :::* LISTEN 6417/etcd ● 在任意接上上执行,查看ETCD集群成员列表

[root@etcd5 ~]# etcdctl member list 71b9fac8482ec139, started, etcd-1, http://10.1.1.5:2380, http://10.1.1.5:2379 89d4b75907acdf9a, started, etcd-3, http://10.1.1.7:2380, http://10.1.1.7:2379 b22a0934e0760a75, started, etcd-2, http://10.1.1.6:2380, http://10.1.1.6:2379 注释:查到3行,并且是已启动状态。说明我们本次的3个节点上的etcd都启动成功了,而且成功的组件成群了。

● 在任意接上上执行,查看节点健康状况

[root@etcd5 ~]# etcdctl endpoint health --endpoints=10.1.1.5:2379,10.1.1.6:2379,10.1.1.7:2379 10.1.1.5:2379 is healthy: successfully committed proposal: took = 1.79041ms 10.1.1.7:2379 is healthy: successfully committed proposal: took = 3.425099ms 10.1.1.6:2379 is healthy: successfully committed proposal: took = 3.544992ms 6.小结 无论你如何重启任意节点,集群依然监控。

无论你如何重启某个节点服务器,重启后,它依然能顺利加入到ETCD集群。

五、ETCD的基本操作命令 1.创建键值对 创建一个键name值为serena

etcdctl put name serena 2.根据键查询值 查询键为name的信息

[root@etcd5 ~]# etcdctl get name name serena 3.根据键的前缀模糊查询键值对信息 查询键以n开头的所有键值

[root@etcd5 ~]# etcdctl get n --prefix name serena name2 kahn.xiao 4.删除指定的键 #当键存在时,成功删除返回1 [root@etcd5 ~]# etcdctl del name4 1

#当键不存在时,删除返回0 [root@etcd5 ~]# etcdctl del name666 0 5.使用URL的方式存储键值 [root@etcd5 ~]# curl http://10.1.1.5:2379/v2/keys/name5 -XPUT -d value="kahn.xiao" {"action":"set","node":{"key":"/name5","value":"kahn.xiao","modifiedIndex":19,"createdIndex":19}} 6.使用URL的方式查询键值 [root@etcd5 ~]# curl -s http://10.1.1.5:2379/v2/keys/name5 {"action":"get","node":{"key":"/name5","value":"kahn.xiao","modifiedIndex":19,"createdIndex":19}} 7.使用URL的方式查询ETCD的版本 [root@etcd5 ~]# curl -s http://10.1.1.5:2379/version {"etcdserver":"3.3.2","etcdcluster":"3.3.0"} 8.使用URL的方式删除键值 [root@etcd5 ~]# curl -s http://10.1.1.5:2379/v2/keys/name5 -XDELETE {"action":"delete","node":{"key":"/name5","modifiedIndex":20,"createdIndex":19},"prevNode":{"key":"/name5","value":"kahn.xiao","modifiedIndex":19,"createdIndex":19}} 9.使用URL的方式创建目录 创建一个叫kahnDIR的目录

[root@etcd5 ~]# curl -s http://10.1.1.5:2379/v2/keys/kahnDIR -XPUT -d dir=true {"action":"set","node":{"key":"/kahnDIR","dir":true,"modifiedIndex":21,"createdIndex":21}} 10.使用URL的方式查询所有目录 [root@etcd5 ~]# curl -s http://10.1.1.5:2379/v2/keys/?recursive=true {"action":"get","node":{"dir":true,"nodes":[{"key":"/kahnDIR","dir":true,"modifiedIndex":21,"createdIndex":21}, {"key":"/kahnDIR2","dir":true,"modifiedIndex":22,"createdIndex":22}, {"key":"/kahnDIR3","dir":true,"modifiedIndex":23,"createdIndex":23}]}} 注释:这里查到有3个目录,目录名分别叫kahnDIR,kahnDIR2,kahnDIR3

11.使用URL的方式删除一个目录 删除一个叫kahnDIR3的目录

[root@etcd5 ~]# curl -s 'http://10.1.1.5:2379/v2/keys/kahnDIR3?dir=true' -XDELETE {"action":"delete","node":{"key":"/kahnDIR3","dir":true,"modifiedIndex":24,"createdIndex":23},"prevNode":{"key":"/kahnDIR3","dir":true,"modifiedIndex":23,"createdIndex":23}} -------------END-------------------2020年11月3日22:59:06-------------------------