+ Tencent Ali nube nube de servidor: KV acumulación ETCD base de datos distribuida, los comandos más utilizados y los archivos de configuración en profundidad interpretación


En la entrada del blog, hemos utilizado la aplicación de base de datos distribuida pseudo-ETCD, y no distribuido. Por lo tanto, la interpretación del archivo de configuración no es suficiente, además de artículos en el blog sólo aprendió un KV creación, ETCD debido a la importancia de la auto-evidente, por lo que voy a escribir un blog independiente para.

Una, el concepto ETCD lista de palabras

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来定位数据。

Dos, la base de datos de configuración ETCD interpretación profundidad de archivo

/etc/etcd/etcd.conf gato

#[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"

base de datos de tres, ETCD distribuida de los comandos más utilizados

Todos sabemos que la base de datos ETCD es KV (pares clave-valor) de base de datos, y todos nos directorio raíz del sistema operativo Linux conocimientos y luego una clase puede crear directorios, también se puede crear el archivo. Nuestro sistema operativo Linux ETCD incorpora esta función. Puede crear directorios, el directorio puede crear par clave-valor

1, comando etcdctl

#对目录的操作
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, comando ETCD

Nota: El comando ETCD está totalmente puesto en línea para añadir, modificar el perfil ETCD. ¿No tiene el editor vim ETCD modificar la configuración.

etcd --help

Cuatro, ETCD distribuido clúster estructuras

ambiente experimental:
servidor de la nube Ali IP pública: 39.97.176.117 red IP: 172.17.77.241
Tencent nube de servidor IP pública: 106.54.72.122 red IP: 172.17.0.16

1. Descargar

yum install etcd -y

2, cambiar el ETCD archivo de configuración

vim /etc/etcd/etcd.conf

Ali nube (etcd1) configuración es la siguiente:
Aquí Insertar imagen Descripción
Tencent Cloud (etcd2) de configuración es el siguiente:
Aquí Insertar imagen DescripciónNota: Mucha gente puede preguntarse por qué escuchan los parámetros están escuchando en la tarjeta de red, tarjeta de red no supervisa el público?
En primer lugar, nos fijamos en su tarjeta de red:
Aquí Insertar imagen DescripciónPodemos ver que no hay ninguna tarjeta de red pública! Así que no podemos controlar el puerto correspondiente en la tarjeta de red pública! Sólo podemos estar en línea con los puertos correspondientes en la tarjeta de red del monitor, anunciar método declarado puerto correspondiente de la tarjeta de red pública

3. Crear un directorio de datos

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

Los dos últimos ETCD para empezar! Primera apertura para el líder (cluster ETCD de acceso externo al servidor)
Aquí Insertar imagen Descripción

Ha publicado 188 artículos originales · alabanza 150 won · vistas 30000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_44571270/article/details/104797656
Recomendado
Clasificación