文章目录
三. etcd运行机制
注意etcd只能是奇数数个,不然会出现脑裂状况
k8s的专用数据库
etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值
(key-value)数据库
。
etcd内部采用raft协议作为一致性算法
,etcd基于Go语言实现。
github地址:https://github.com/etcd-io/etcd
官方网站:https://etcd.io/
观察特定键或目录的变化,并对值的变化做出反应
Etcd具有下面这些属性:
- 完全复制:集群中的每个节点都可以使用
完整的存档
- 高可用性:Etcd可用于
避免硬件的单点故障或网络问题
- 一致性:每次读取都会返回
跨多主机的最新写入
- 简单:包括一个定义良好、面向用户的
API
(gRPC) - 安全:实现了带有可选的客户端证书身份验证的自动化TLS
- 快速:每秒10000次写入的基准速度
- 可靠:使用Raft算法实现了存储的合理分布Etcd的工作原理
1. 启动脚本参数
[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/ #数据保存目录
ExecStart=/usr/bin/etcd \ #二进制文件路径
--name=etcd1 \ #当前node 名称
...
--initial-advertise-peer-urls=https://192.168.7.105:2380 \ #通告自己的集群端口
--listen-peer-urls=https://192.168.7.105:2380 \ #集群之间通讯端口
--listen-client-urls=https://192.168.7.105:2379,http://127.0.0.1:2379 \ #客户端访问 地址
--advertise-client-urls=https://192.168.7.105:2379 \ #通告自己的客户端端口
--initial-cluster-token=etcd-cluster-0 \ #创建集群使用的token,一个集群内的节点保持一致
--initial-cluster=etcd1=https://192.168.7.105:2380,etcd2=https://192.168.7.106:2380,etcd3=htt ps://192.168.7.107:2380 \ #集群所有的节点信息
#新建集群的时候的值为new,如果是已经存在的集群为existing。
--initial-cluster-state=new \
--data-dir=/var/lib/etcd #数据目录路径
...
2. 查看成员信息(测试)
Etcd v2 和 v3</