目录

1 前言

2 etcd 介绍

3 etcd 架构

4 etcd 安装

5 etcd 启动和设置开机启动

6 组建 etcd 集群

7 验证 etcd 集群

8 etcd 操作


1 前言

        如果你对博客有任何疑问,请告诉我。


2 etcd 介绍

        etcd 是由 coreos 研发并开源的一个分布式键值对存储系统,底层使用 raft 一致性共识算法来实现强一致性、去中心化和高可用。etcd 不仅可以可靠、快速地保存数据,并提供了对外访问的接口。此外,etcd 还可以通过分布式锁、leader 选举和写屏障等特性实现可靠的分布式协作。


3 etcd 架构


4 etcd 安装

        etcd 采用 yum 方式进行安装,如果你因为其他原因无法通过 yum 方式安装的话,可以直接到 Github 官网下载二进制安装包。

        本文将使用 3 台虚拟机组成 etcd 集群,其中每台虚拟机都将安装 etcd。主机名和 ip 如下表所示:

k8s-m-1 192.168.182.181

k8s-m-2 192.168.182.182

k8s-m-3 192.168.182.183

        在每台虚拟机上都使用如下命令安装 etcd:

yum -y install etcd


5 etcd 启动和设置开机启动

        在每台机子上都使用如下命令启动和设置开机启动 etcd:

systemctl start etcd

systemctl enable etcd

systemctl status etcd

        命令执行成功截图如下:


6 组建 etcd 集群

        每台 etcd 安装完成后,需要将它们组建成集群。

        k8s-m-1 节点执行如下命令:

nohup etcd --name k8s-m-1 --data-dir=data.etcd  --initial-advertise-peer-urls http://192.168.182.181:2380 --listen-peer-urls http://192.168.182.181:2380 --advertise-client-urls http://192.168.182.181:2379 --listen-client-urls http://192.168.182.181:2379 --initial-cluster k8s-m-1=http://192.168.182.181:2380,k8s-m-2=http://192.168.182.182:2380,k8s-m-3=http://192.168.182.183:2380 --initial-cluster-state new --initial-cluster-token jiuxi_token >> etcd.log 2>&1 &

export ETCDCTL_API=3

        k8s-m-2 节点执行如下命令:

nohup etcd --name k8s-m-2 --data-dir=data.etcd  --initial-advertise-peer-urls http://192.168.182.182:2380 --listen-peer-urls http://192.168.182.182:2380 --advertise-client-urls http://192.168.182.182:2379 --listen-client-urls http://192.168.182.182:2379 --initial-cluster k8s-m-1=http://192.168.182.181:2380,k8s-m-2=http://192.168.182.182:2380,k8s-m-3=http://192.168.182.183:2380 --initial-cluster-state new --initial-cluster-token jiuxi_token >> etcd.log 2>&1 &

export ETCDCTL_API=3

        k8s-m-3 节点执行如下命令:

nohup etcd --name k8s-m-3 --data-dir=data.etcd  --initial-advertise-peer-urls http://192.168.182.183:2380 --listen-peer-urls http://192.168.182.183:2380 --advertise-client-urls http://192.168.182.183:2379 --listen-client-urls http://192.168.182.183:2379 --initial-cluster k8s-m-1=http://192.168.182.181:2380,k8s-m-2=http://192.168.182.182:2380,k8s-m-3=http://192.168.182.183:2380 --initial-cluster-state new --initial-cluster-token jiuxi_token >> etcd.log 2>&1 &

export ETCDCTL_API=3

        命令执行成功后的 etcd.log 截图如下:


7 验证 etcd 集群

        执行如下语句验证 etcd 集群:

etcdctl --endpoints=192.168.182.181:2379,192.168.182.182:2379,192.168.182.183:2379 member list

        截图如下所示,状态都是已启动:


8 etcd 操作

        上面已经成功了创建了 etcd 集群,下面通过一个简单的样例演示插入和查询操作:

        k8s-m-3 节点上执行插入操作:

etcdctl  --endpoints=192.168.182.181:2379,192.168.182.182:2379,192.168.182.183:2379 put nickname jiuxi

etcdctl  --endpoints=192.168.182.181:2379,192.168.182.182:2379,192.168.182.183:2379 get nickname

        执行结果如下图所示:

        k8s-m-2 节点上执行查询操作:

        自此,整个 etcd 集群被轻松完爆。