1.ectd概述
etcd是一个分布式键值存储,它提供了一种在一组机器上存储数据的可靠方法。它是开源的,可在GitHub上获得。etcd在网络分区期间优雅地处理领导者选举,并且可以容忍机器故障,包括领导者。
您的应用程序可以将数据读写到etcd中。一个简单的用例是将etcd中的数据库连接详细信息或功能标记存储为键值对。可以监视这些值,允许您的应用在更改时重新配置。
高级用法利用一致性保证来实现数据库领导者选举或跨工作集群进行分布式锁定。
etcd的特性
和同类产品的对比
为什么选用etcd
本计划使用consul的,但是考虑到k8s默认使用etcd进行存储.所以这里也使用etcd来做存储和服务发现
2.搭建一个集群版的etcd
2.1使用yum安装etcd
yum install etcd -y
2.2 配置etcd
分别在各个节点上备份配置文件后清空原始配置文件
主要是方便后续写入新的配置文件
cd /etc/etcd/ cp etcd.conf etcd.conf.bak cat /dev/null > /etc/etcd/etcd.conf
master1节点
# 节点名称 ETCD_NAME=master1 # 数据库存放位置 ETCD_DATA_DIR="/var/lib/etcd/etcd" # 监听其他 Etcd 实例地址 ETCD_LISTEN_PEER_URLS="http://192.168.161.128:2380" # 监听客户端地址 ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001" # 通知其他 Etcd 实例地址 ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.161.128:2380" # 初始化集群内节点地址 ETCD_INITIAL_CLUSTER="master1=http://192.168.161.128:2380,master2=http://192.168.161.129:2380,master3=http://192.168.161.130:2380" # 初始化集群状态,new 表示新建 ETCD_INITIAL_CLUSTER_STATE="new" # 初始化集群 token ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-token" # 通知客户端地址 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.161.128:2379"
master2节点
# 节点名称 ETCD_NAME=master2 # 数据库存放位置 ETCD_DATA_DIR="/var/lib/etcd/etcd" # 监听其他 Etcd 实例地址 ETCD_LISTEN_PEER_URLS="http://192.168.161.129:2380" # 监听客户端地址 ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001" # 通知其他 Etcd 实例地址 ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.161.129:2380" # 初始化集群内节点地址 ETCD_INITIAL_CLUSTER="master1=http://192.168.161.128:2380,master2=http://192.168.161.129:2380,master3=http://192.168.161.130:2380" # 初始化集群状态,new 表示新建 ETCD_INITIAL_CLUSTER_STATE="new" # 初始化集群 token ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-token" # 通知客户端地址 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.161.129:2379"
master3
# 节点名称 ETCD_NAME=master3 # 数据库存放位置 ETCD_DATA_DIR="/var/lib/etcd/etcd" # 监听其他 Etcd 实例地址 ETCD_LISTEN_PEER_URLS="http://192.168.161.130:2380" # 监听客户端地址 ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001" # 通知其他 Etcd 实例地址 ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.161.130:2380" # 初始化集群内节点地址 ETCD_INITIAL_CLUSTER="master1=http://192.168.161.128:2380,master2=http://192.168.161.129:2380,master3=http://192.168.161.130:2380" # 初始化集群状态,new 表示新建 ETCD_INITIAL_CLUSTER_STATE="new" # 初始化集群 token ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-token" # 通知客户端地址 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.161.130:2379"
3.常用命令
设置开机启动:
systemctl enable etcd
启动etcd:
systemctl start etcd
查看状态:
systemctl status etcd
列出节点成员:
etcdctl member list
查看节点监控状态:
etcdctl cluster-health