+テンセントアリクラウド、クラウドサーバー:KVビルドETCD分散データベース、一般的に使用されるコマンドと設定ファイルの綿密な解釈


ブログの記事では、我々はetcd疑似分散データベースの実装を使用しており、分散していません。そのため、設定ファイルの解釈は十分ではありません、プラスのブログ記事は、作成KVを学んだ私はのために別のブログを書きますので、理由は自明の重要性etcd。

A、etcd概念の単語リスト

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

二、etcdデータベース構成ファイルの深さの解釈

猫/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"

三つは、一般的に使用されるコマンドの分散データベースをetcd

我々は、すべてのetcdデータベースは、KV(キーと値のペア)データベース、そして我々はすべて知っているのLinuxオペレーティングシステムのルートディレクトリである知っているし、クラスには、ディレクトリを作成することができ、あなたはまた、ファイルを作成することができます。私たちのetcd Linuxオペレーティングシステムでは、この機能が組み込まれています。あなたはディレクトリを作成することができ、ディレクトリには、キーと値のペアを作成することができます

1、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、etcdコマンド

注:etcdコマンドは完全に、追加etcdプロファイルを変更するためにオンラインになります。設定を変更etcdのvimエディタを持っていません。

etcd --help

四は、分散型クラスタ構造をetcd

実験環境:
アリクラウドサーバのパブリックIP:39.97.176.117ネットワークIP:172.17.77.241
テンセントクラウドサーバのパブリックIP:106.54.72.122ネットワークIP:172.17.0.16

1.ダウンロード

yum install etcd -y

2、設定ファイルetcdを変更

vim /etc/etcd/etcd.conf

次のようにアリクラウド(etcd1)の構成は以下のとおりです。
ここに画像を挿入説明
次のようにテンセントクラウド(etcd2)の構成は以下のとおりです。
ここに画像を挿入説明注:多くの人々は、パラメータがネットワークカードに聞いている聞く理由を、ネットワークカードが公共を監視しません求めることができますか?
まず、我々はあなたのネットワークカードを見て:
ここに画像を挿入説明私たちは何の公衆ネットワークカードが存在しないことを見ることができます!だから我々は、パブリックネットワークカード上の対応するポートを監視することはできません!私たちはすることができ、パブリックネットワークカードの宣言されたメソッドに対応するポートを宣伝、モニターのネットワークカードで対応するポートと一致して

データディレクトリを作成します3。

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

最後の2 etcdが開始します!リーダーのための最初のスタート(サーバーへの外部アクセスのetcdクラスタ)
ここに画像を挿入説明

彼は188元の記事を発表 ウォンの賞賛150 ビュー30000 +

おすすめ

転載: blog.csdn.net/weixin_44571270/article/details/104797656