+ Tencent Ali cloud cloud server: KV build ETCD distributed database, commonly used commands and configuration files in-depth interpretation


On the blog post, we have used etcd pseudo-distributed database implementation, and do not distributed. Therefore interpretation of the configuration file is not enough, plus articles on the blog only learned a creation KV, etcd because of the importance of self-evident, so I'll write a separate blog for.

A, etcd concept word list

Raft:etcd所采用的保证分布式系统强一致性的算法。
Node:一个Raft状态机实例。
Member: 一个etcd实例。它管理着一个Node,并且可以为客户端请求提供服务。
Cluster:由多个Member构成可以协同工作的etcd集群。
Peer:对同一个etcd集群中另外一个Member的称呼。
Client: 向etcd集群发送HTTP请求的客户端。
WAL:预写式日志,etcd用于持久化存储的日志格式。
snapshot:etcd防止WAL文件过多而设置的快照,存储etcd数据状态。
Proxy:etcd的一种模式,为etcd集群提供反向代理服务。
Leader:Raft算法中通过竞选而产生的处理所有数据提交的节点。
Follower:竞选失败的节点作为Raft中的从属节点,为算法提供强一致性保证。
Candidate:当Follower超过一定时间接收不到Leader的心跳时转变为Candidate开始竞选。
Term:某个节点成为Leader到下一次竞选时间,称为一个Term。
Index:数据项编号。Raft中通过Term和Index来定位数据。

Two, etcd database configuration file depth interpretation

cat /etc/etcd/etcd.conf

#[Member]  //本台etcd服务器自身的配置参数

//常用重要参数:
ETCD_NAME="etcd1" //定义本服务器在集群中的成员标示
ETCD_DATA_DIR="/data/etcd/" //定义etcd数据目录
#ETCD_WAL_DIR="" //独立设置wal目录,etcd会将WAL文件写入waldir而不是datadir。独立的wal路径,有助于避免日志记录和其他IO操作之间的竞争。
#ETCD_LISTEN_PEER_URLS="http://172.16.193.200:2380" //定义本台etcd服务器与集群中其他etcd服务通信的端口
ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://172.16.193.200:2379" //定义本台etcd服务器的数据端口,监听本地是为了本地连接,承接命令带来的数据;监听真实ip,是为了接受集群其他服务器带来的数据。
#ETCD_MAX_SNAPSHOTS="5" //要保留的最大快照文件数(0表示不受限制)
#ETCD_MAX_WALS="5" //要保留的最大wal文件数(0表示不受限制)

//不常用参数
#ETCD_SNAPSHOT_COUNT="100000" //指定有多少事务(transaction)被提交时,触发截取快照保存到磁盘。
#ETCD_HEARTBEAT_INTERVAL="100" //leader 多久发送一次心跳到 followers
#ETCD_ELECTION_TIMEOUT="1000" //重新投票的超时时间,如果 follow 在该时间间隔没有收到心跳包,会触发重新投票,默认为 1000 ms。
#ETCD_CORS="" //逗号分隔的CORS原始白名单(跨源资源共享)
#ETCD_QUOTA_BACKEND_BYTES="0" //当后端大小超过给定配额时(0默认为低空间配额),引发警报。
#ETCD_MAX_REQUEST_BYTES="1572864" //服务器将接受的最大客户端请求大小(字节)
#ETCD_GRPC_KEEPALIVE_MIN_TIME="5s" //客户端在ping服务器之前应等待的最短持续时间间隔。
#ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s" //服务器到客户端ping的频率持续时间,以检查连接是否处于活动状态(0表示禁用)。
#ETCD_GRPC_KEEPALIVE_TIMEOUT="20s" //关闭非响应连接之前的额外持续等待时间(0表示禁用)。
------------------------------------------------------------------------
#[Clustering] //都是etcd集群的配置参数,不再是对某一台etcd服务器了!

//常用重要参数
#ETCD_INITIAL_ADVERTISE_PEER_URLS="172.16.193.200:2380" //这个参数可能大家会和ETCD_LISTEN_PEER_URLS这个参数搞混,LISTEN参数是本地监听这个真实ip的端口,在本地定义这个端口。此处的ADVERTISE参数则是把这个listen参数值告诉给集群中其他人,告诉了,别人才能来找你。所以一般来说这两个参数值都是一样的。
ETCD_ADVERTISE_CLIENT_URLS="http://127.0.0.1:2379,http://172.16.193.200:2379" //这个参数和ETCD_LISTEN_CLIENT_URLS这个参数容易搞混,还是定义和宣告的区别,和上面那一对参数一样的区别。
#ETCD_INITIAL_CLUSTER="etcd1=http://172.16.193.200:2380,etcd2=172.16.193.201:2380,etcd3=172.16.193.202:2380" //定义该etcd集群中的节点有哪些,并给出了集群通信端口,etcd1这是成员标示
#ETCD_INITIAL_CLUSTER_STATE="new" //设置new为初始静态或DNS引导期间出现的所有成员。如果将此选项设置为existing,则etcd将尝试加入现有群集。
#ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" //创建集群的token,这个值每个集群保持唯一,集群标示。

//非常用参数
#ETCD_DISCOVERY="" //用于引导群集的发现URL。
#ETCD_DISCOVERY_FALLBACK="proxy" //发现服务失败时的预期行为(“退出”或“代理”)。“proxy”仅支持v2 API。
#ETCD_DISCOVERY_PROXY="" //用于流量到发现服务的HTTP代理。
#ETCD_DISCOVERY_SRV="" //DNS srv域用于引导群集。
#ETCD_STRICT_RECONFIG_CHECK="true" //拒绝可能导致仲裁丢失的重新配置请求。
#ETCD_ENABLE_V2="true" //接受etcd V2客户端请求

//模块参数,暂时还未用到,未来再更新!
#[Proxy]
#ETCD_PROXY="off"
#ETCD_PROXY_FAILURE_WAIT="5000"
#ETCD_PROXY_REFRESH_INTERVAL="30000"
#ETCD_PROXY_DIAL_TIMEOUT="1000"
#ETCD_PROXY_WRITE_TIMEOUT="5000"
#ETCD_PROXY_READ_TIMEOUT="0"
#
#[Security]
#ETCD_CERT_FILE=""
#ETCD_KEY_FILE=""
#ETCD_CLIENT_CERT_AUTH="false"
#ETCD_TRUSTED_CA_FILE=""
#ETCD_AUTO_TLS="false"
#ETCD_PEER_CERT_FILE=""
#ETCD_PEER_KEY_FILE=""
#ETCD_PEER_CLIENT_CERT_AUTH="false"
#ETCD_PEER_TRUSTED_CA_FILE=""
#ETCD_PEER_AUTO_TLS="false"
#
#[Logging]
#ETCD_DEBUG="false"
#ETCD_LOG_PACKAGE_LEVELS=""
#ETCD_LOG_OUTPUT="default"
#
#[Unsafe]
#ETCD_FORCE_NEW_CLUSTER="false"
#
#[Version]
#ETCD_VERSION="false"
#ETCD_AUTO_COMPACTION_RETENTION="0"
#
#[Profiling]
#ETCD_ENABLE_PPROF="false"
#ETCD_METRICS="basic"
#
#[Auth]
#ETCD_AUTH_TOKEN="simple"

Three, etcd distributed database of commonly used commands

We all know etcd database is KV (key-value pairs) database, and we all know linux operating system root directory and then a class can create directories, you can also create the file. Our etcd linux operating system incorporates this feature. You can create directories, directory can create key-value pair

1, etcdctl command

#对目录的操作
etcdctl ls / #查看目录
etcdctl mkdir /huahua #创建目录
etcdctl rmdir /huahua #删除目录

#对K-V的操作
etcdctl mk /huahua/haha '希望你能开心' #创建键值对
etcdctl get /huahua/haha #查看键的值
etcdctl rm /huahua/haha #删除键值对

#查看扩展操作
etcdctl get /huahua/ --prefix #批量获取目录下的内容
etcdctl get /huahua/ --prefix --keys-only #只看key
etcdctl get /huahua/ --prefix --print-value-only #只看value

#watch监听key
etcdctl watch /huahua/haha 开启监听
另一启动一个客户端
etcdctl mk /huahua/haha v1 有反应
etcdctl mk /huahua/haha v2 有反应
etcdctl get /huahua/haha 没反应
etcdctl rm /huahua/haha 有反应

#k8s中常用命令
etcdctl cluster-health #查看集群健康状况
etcdctl member list #查看集群中有哪些成员
etcdctl member add http://172.16.193.200:2379 #添加一个成员到该etcd集群
etcdctl member remove http://172.16.193.200:2379 #从集群中删除一个成员

#除此之外etcdctl -user加role参数还可以实现创建用户,并赋予其一个角色进行访问控制

2, etcd command

Note: etcd command is fully brought online to add, modify etcd profile. Do not have the vim editor etcd modify the configuration.

etcd --help

Four, etcd distributed cluster structures

Experimental environment:
Ali cloud server public IP: 39.97.176.117 network IP: 172.17.77.241
Tencent cloud server public IP: 106.54.72.122 network IP: 172.17.0.16

1. Download

yum install etcd -y

2, change the configuration file etcd

vim /etc/etcd/etcd.conf

Ali cloud (etcd1) configuration is as follows:
Here Insert Picture Description
Tencent Cloud (etcd2) configuration is as follows:
Here Insert Picture DescriptionNote: Many people may ask why listen parameters are listening on the network card, network card does not monitor the public?
First, we look at your network card:
Here Insert Picture DescriptionWe can see that there is no public network card! So we can not monitor the corresponding port on the public network card! We can only be in line with the corresponding ports in the monitor network card, advertise declared method corresponding port of the public network card

3. Create a data directory

mkdir /data/etcd
chown etcd.etcd /data/etcd

The last two etcd to start! First start for the leader (etcd cluster of external access to the server)
Here Insert Picture Description

He published 188 original articles · won praise 150 · views 30000 +

Guess you like

Origin blog.csdn.net/weixin_44571270/article/details/104797656