小工具知识网

当前位置: 首页 > 行业知识 > 微服务自动化管理初步认识与使用

行业知识

微服务自动化管理初步认识与使用

2026-11-13 22:35:17 来源:互联网转载

���录

一、ETCD

1.1、ETCD简介

对于实施工程师:

1.2、特点

1.3. 使用场景

1.4、 关键字

1.5 工作原理

二、ETCD的安装

2.1、下载路径

2.2、介绍

2.3、具体操作

 安装服务端

安装etcd客户端

测试

三、ETCD使用

 3.1、前奏具体操作

3.2、 常用操作


一、ETCD

1.1、ETCD简介

etcd是一个开源的分布式键值存储系统(数据库),通常用于在分布式系统中存储配置信息、元数据等。它是由CoreOS开发的,基于Raft一致性算法实现高可用性和一致性。etcd提供简单的HTTP API,使得应用程序可以方便地读写存储在其中的键值数据。在Kubernetes等容器编排平台中,etcd通常用于存储集群状态信息。

是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。

干什么的:是数据库存储数据,监听状态

对于实施工程师:

服务注册于发现,可以做不同宿主机,里面容器互相通信,因为现在服务器不同了一个是Linux一个是Windows他们两通信,所有需要借助etcd完成

1.2、特点

1. 一致性:etcd使用Raft一致性算法来保证集群中数据的一致性,确保数据的可靠性和正确性。

2. 高可用性:etcd支持自动选举和故障转移,即使部分节点故障,集群仍然可以正常运行,保证系统的高可用性。

3. 高性能:etcd使用Go语言编写,具有高效的读写性能,适用于需要快速响应的应用场景。

4. 安全性:etcd支持SSL/TLS加密传输,可以保护数据在网络传输中的安全,同时支持访问控制和认证机制,确保数据的安全性。

5. 简单易用:etcd提供了简单的HTTP API和命令行工具,方便用户进行数据的读写和管理,降低了系统的维护成本。

1、简单的接口,通过标准的HTTP API进行调用,也可以使用官方提供的 etcdctl 操作存储的数据(通信使用)

2、键值对存储

3、有监听机制,可以监听特定键的变化,并作出响应

总的来说,etcd是一个可靠、高效、安全且易用的分布式键值存储系统,适用于构建分布式系统和微服务架构。

监控机制类似之前抖音: 发一个视频----->发消息到注册中心----->监听节点方式变化任务

1.3. 使用场景

  • 服务发现(Service Discovery)(一需要mysql服务,一个找mysql服务,所有他们会去中心找)
  • 消息发布与订阅
  • 负载均衡(多个人找)
  • 分布式通知与协调
  • 分布式锁

    1.4、 关键字

    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开始Leader竞选。

    Term:某个节点成为Leader到下一次竞选开始的时间周期,称为一个Term。

    Index:数据项编号。Raft中通过Term和Index来定位数据。

    1.5 工作原理

    第1部分是HTTP Server: 用于处理用户发送的API请求,以及其它etcd节点的同步与心跳信息请求

    第2部分是Store:用于处理etcd支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是etcd对用户提供的大多数API功能的具体实现

    第3部分是Raft:Raft强一致性算法的具体实现,是etcd的核心

    第4部分是WAL:Write Ahead Log(预写式日志),是etcd的数据存储方式。除了在内存中存有所有数据的状态以及节点的索引以外,etcd就通过WAL进行持久化存储。

    在WAL中,所有的数据提交前都会事先记录日志。Snapshot是为了防止数据过多而进行的状态快照;Entry表示存储的具体日志内容

    二、ETCD的安装

    2.1、下载路径

    • etcd项目地址:https://github.com/coreos/etcd/
    • etcd下载地址:https://github.com/etcd-io/etcd/releases 根据需要查找对应版本下载即可

      2.2、介绍

      • etcd在生产环境中一般推荐集群方式部署
      • etcd使用的2个默认端口号:2379和2380

        2379:用于客户端通信(类似于sqlserver的1433/oracle的1521/mysql的3306)

        2380:用于与集群中的Peer通信

      • 因为etcd是go语言编写的,安装只需要下载对应的二进制文件,并放到合适的路径就行。

        2.3、具体操作

        1、 创建etc存放路径并切换到下载目录

        mkdir /usr/local/mytools && cd /usr/local/mytools

         mytools放etcd工具----安装包

        &&:同时执行多个命令

        2、下载安装包,并存放到目录上

        wget https://github.com/etcd-io/etcd/releases/download/v3.4.3/etcd-v3.4.3-linux-amd64.tar.gz 

        下载比较慢

        3、解压文件到当前目录

         tar xzvf etcd-v3.4.3-linux-amd64.tar.gz

        4、进入解压后的文件,查看内容

        切换至etcd根目录,运行查看命令ls,里面会有一些文档和2个二进制文件etcd和etcdctl。etcd是server端,etcdctl是客户端

        cd etcd-v3.4.3-linux-amd64 && ls

         安装服务端

        5、复制到bin,--------------------就安装服务端好了

        将etcd和etcdctl二进制文件复制到/usr/local/bin目录, 这样系统中可以直接调用etcd/etcdctl这两个程序

        bin:二进制文件

        cp etcd etcdctl /usr/local/bin

        etcd启动市数据含义 

        1.name表示节点名称,默认为default。

        2.data-dir 保存日志和快照的目录,默认为当前工作目录default.etcd/目录下。

        3.在http://localhost:2380和集群中其他节点通信。

        4.在http://localhost:2379提供客户端交互。

        5.heartbeat为100ms,该参数的作用是leader多久发送一次心跳到followers,默认值是100ms。

        6.election为1000ms,该参数的作用是重新投票的超时时间,如果follow在该时间间隔没有收到心跳包,会触发重新投票,默认为1000ms。

        7.snapshot count为10000,该参数的作用是指定有多少事务被提交时,触发截取快照保存到磁盘。

        8.集群和每个节点都会生成一个uuid。

        9.启动的时候会运行raft,选举出leader

        6、查看etcd版本

        etcd --version

        安装etcd客户端

        注意:etct3.4.3默认使用v3命令所以步骤7可省略,之前版本此步骤不可少,例如:v3.3.10

        1、配置环境变量

        #编辑配置文件vi /etc/profile

        加的内容:

        # 最后一行指定etcdctl命令的版本为v3

        export ETCDCTL_API=3

        i进入编辑模式,ESC :wq退出并保存

        2、 刷新环境变量 

        source /etc/profile

        #查看当前etcdctl的版本信息

        #v2版本命令和v3命令是不一样的,例如:

        #v2查看版本号

        etcdctl -version或 etcdctl -v

        #v3查看版本号

        etcdctl version

        # 更多命令帮助可以查询

        etcdctl --help  

        测试

        #v3查看版本号etcdctl version

        三、ETCD使用

         3.1、前奏具体操作

        1. 建立两个etcd相关目录(即数据文件和配置文件的保存位置,类似mysql里面的data文件夹)

          /etc目录是整个Linux系统的中心,其中包含所有系统管理和维护方面的配置文件,所以etcd的配置也放在这里

        1、创建文件夹

        创建新的:因为etcd做一个数据库,默认之前安装的服务,不去指定存储路径,所有需要做配置,重新做一个新的etcd服务,所有只具备存储数据功能

        mkdir -p /var/lib/etcd/ && mkdir -p /etc/etcd/

        lib存数据,etc放配置文件夹 

        2、切换到目录中,创建etcd配置文件

        cd /etc/etcd/

        3、重命名

         配置文件名必须叫etcd.conf

        mv etcd-单机版.conf  etcd.conf

        4、做成服务

        cd /etc/systemd/system

         

        5、服务重命名

          配置文件名必须叫etcd.service

        mv etcd-单机版.service  etcd.service

        7、重新加载systemd服务

        systemctl daemon-reload

          

        8、设置开机自启动

        systemctl enable etcd

        9、查看etcd运行状态

        systemctl status etcd

        10、启动etcd 

        systemctl start etcd

         

        其他操作:

        停止服务

        systemctl stop etcd

        重启etcd

        systemctl restart etcd

         

        3.2、 常用操作

        1、 如何获取帮助

        etcdctl -h

        2、put把值放到键里 

        etcdctl put /testdir/testkey "Hello world"

         testdir---键

        "Hello world"-----值

        支持的选项包括

        --ttl '0' 该键值的超时时间(单位为秒),不配置(默认为0)则永不超时

        --swap-with-value value 若该键现在的值是value,则进行设置操作

        --swap-with-index '0' 若该键现在的索引值是指定索引,则进行设置操作

        3、get通过键获取值

        etcdctl get /testdir/testkey

        --sort 对结果进行排序

        --consistent 将请求发给主节点,保证获取内容的一致性。

        4、del删除

        # 清空数据--清除所有etcdctl del / --prefix#删除所有/test前缀的节点----清除指定的etcdctl del /test --prefix

         

        5、watch监听

        #1. 增加一个key,(客户端窗口1)etcdctl put key1 "hello"
        #2. 打开一个新的客户端窗口2,监听key1的变化etcdctl watch key1#3. 回到窗口1,向key1 中put新值etcdctl put key1 "hello work"# 4. 此时可以在窗口2中看到监听输出# 查看版本信息curl http://127.0.0.1:2379/version

上一篇:前端 JS 经典:vue 开发中的 base 和 publicPath

下一篇:服务器填报网站怎么填写?