宝哥软件园

用二进制文件安装etcd教程的详细说明

编辑:宝哥软件园 来源:互联网 时间:2021-08-21

Etcd组件是一个高度可用和一致的服务发现存储库。

Etcd作为一个受ZooKeeper和doozer启发的项目,不仅功能相似,还重点关注以下四点。

简单:基于HTTP JSON的API使它很容易与curl一起使用。

安全性:可选的SSL客户端身份验证机制。

快速:每个实例支持每秒1000次写入。

可信度:采用Raft算法,充分实现分布。

场景1:服务发现是一个高度一致和高度可用的服务存储目录。基于Raft算法的Etcd就是这样一个一致性强、可用性高的服务存储目录。用于注册服务和监控服务健康状态的机制。用户可以在etcd中注册服务,为注册的服务设置关键TTL,定期保持服务的心跳,达到监控健康状态的效果。一种查找和连接服务的机制。在etcd指定的主题下注册的服务也可以在相应的主题下找到。为了保证连接,我们可以在每台服务机上部署一个Proxy模式的etcd,从而保证可以访问etcd集群的服务之间可以相互连接。

在微服务协同工作架构中,服务是动态添加的。随着Docker容器的普及,各种微服务协同工作形成相对强大架构的案例越来越多。透明、动态地添加这些服务的需求也在增长。通过服务发现机制,在etcd中注册某个服务名称的目录,并将可用服务节点的IP存储在该目录中。在使用服务的过程中,您只需要从服务目录中找到可用的服务节点即可使用。

PaaS平台中透明的应用多实例和实例故障重启。PaaS平台中的应用程序通常有多个实例。通过域名,不仅可以透明地访问这些多个实例,还可以实现负载均衡。但是,应用程序实例可能随时无法重新启动,因此有必要在域名解析(路由)中动态配置信息。这个动态配置问题可以通过etcd的服务发现功能轻松解决。

场景2:消息发布和订阅

在分布式系统中,组件之间最合适的通信模式之一是消息发布和订阅。也就是说,构建了一个配置共享中心,其中数据提供者发布消息,而消息消费者订阅他们关心的主题,一旦消息在主题上发布,就会实时通知订阅者。这样就可以实现分布式系统配置的集中管理和动态更新。

应用程序中使用的一些配置信息放在etcd上进行集中管理。这类场景的使用模式通常是:应用启动时,主动从etcd获取配置信息一次,同时在etcd节点上注册一个Watcher并等待,以后每次有更新时etcd都会实时通知订阅者,从而获取最新的配置信息。

在分布式搜索服务中,索引的元信息和服务器集群机器的节点状态存储在etcd中,供每个客户端订阅。使用etcd的按键TTL功能,确保机器状态实时更新。分布式日志收集系统。该系统的核心工作是收集分布在不同机器上的日志。收集器通常根据应用程序(或主题)分配收集任务单元,因此可以在etcd上创建一个以应用程序(主题)命名的目录P,并将该应用程序(主题相关)的所有机器IP以子目录的形式存储在目录P中,然后设置etcd的递归Watcher,递归监控应用程序(主题)目录中所有信息的变化。这样,当机器IP(消息)发生变化时,可以实时通知收集器调整任务分配。在系统中,信息需要动态自动获取,需要人工干预修改信息请求的内容。通常,接口(如JMX接口)被公开以获取一些运行时信息。引入etcd后,不需要自己实现一套方案,只需要将这些信息存储在指定的etcd目录中,etcd的这些目录可以通过HTTP接口从外部访问

场景3:负载平衡

在场景一中,也提到了负载均衡,本文中提到的负载均衡就是软负载均衡。在分布式系统中,为了保证服务的高可用性和数据的一致性,通常会部署多个数据和服务的副本来实现对等服务。即使其中一项服务失败,也不会影响使用。缺点是数据写入的性能下降,而优点是数据访问期间的负载平衡。因为每个对等服务节点都有完整的数据,所以用户的访问流量可以转移到不同的机器上。

etcd自己的分布式体系结构存储的信息访问支持负载平衡。etcd集群化后,每个etcd的核心节点可以处理用户的请求。因此,将数据量小但访问频繁的消息数据直接存储在etcd中也是不错的选择,比如业务系统常用的二级代码表(将代码存储在表中,将代码所代表的具体含义存储在etcd中,业务系统在调用查表过程时需要在表中查找代码的含义)。

通过etcd维护负载平衡节点表。Etcd可以监控集群中多个节点的状态,当一个请求被发送时,它可以轮询并将请求转发到多个幸存的状态。与KafkaMQ类似,ZooKeeper用于维护生产者和消费者之间的负载平衡。你也可以用etcd做ZooKeeper的工作。

场景4:分布式通知和协调

这里提到的分布式通知和协调有点类似于消息发布和订阅。使用etcd中的观察器机制。通过注册和异步通知机制,实现了分布式环境下不同系统之间的通知和协调,从而可以实时处理数据变化。实现方法通常如下:不同系统在etcd上注册同一个目录,设置Watcher观察目录的变化(如果需要改变子目录,可以设置递归模式)。当某个系统更新etcd的目录时,带有Watcher的系统会收到通知并做出相应的处理。

etcd低耦合心跳检测。检测系统和被检测系统通过etcd上的目录进行关联,而不是直接关联,这样可以大大降低系统之间的耦合性。

通过etcd完成系统调度。系统由控制台和推送系统组成。控制台的职责是控制推送系统进行相应的推送工作。管理员在控制台做的一些操作实际上是修改etcd上一些目录节点的状态,etcd将这些变化通知给Watcher注册的推送系统客户端,然后推送系统进行相应的推送任务。

通过etcd完成工作报告。大多数类似的任务分配系统在子任务启动后,都会在etcd中注册一个临时工作目录,并定期报告自己的进度(将进度写入这个临时目录),这样任务管理人员就可以实时了解任务的进度。

场景5:分布式锁

由于etcd使用Raft算法来保持数据的强一致性,因此存储在集群中用于某个操作的值必须是全局一致的,因此很容易实现分布式锁。使用锁服务有两种方式,一种是保持独占,另一种是控制定时。

保持排他性意味着只有一个用户可以获得锁。Etcd提供了一组用于实现分布式锁原子操作CAS(CompareAndSwap)的API。通过设置prevExist值,可以保证在同时创建目录时只有一个节点成功。并且成功的用户可以被认为已经获得了锁。

控制时序,即所有想要获取锁的用户都会被调度执行,但是获取锁的顺序也是全局唯一的,这也决定了执行顺序。Etcd还为此提供了一组API(自动创建有序密钥),它指定了为目录设置值时的POST操作,这样etcd将自动生成一个当前最大值作为目录中的密钥,并存储这个新值(客户端号)。同时,您可以使用API按顺序列出当前目录中的所有键值。此时,这些键的值就是客户端的时间序列,存储在这些键中的值可以是代表客户端的数字。

场景6:分布式队列

分布式队列的一般用法类似于场景5中描述的分布式锁的控制时序用法,即创建先进先出队列来保证顺序。

另一个有趣的实现是,当队列达到某个条件时,统一顺序地执行队列。此方法的实现可以在目录/队列中创建另一个/队列/条件节点。

条件可以表示队列大小。例如,一个大任务只有在许多小任务准备就绪时才能执行。每次小任务准备好了,就在这个条件数上加1,直到达到大任务指定的个数,然后开始执行队列中的一系列小任务,最后执行大任务。

条件可以指示任务是否在队列中。这个任务可以是所有排序任务的第一个执行程序,也可以是拓扑中没有依赖关系的一个点。通常,必须先执行这些任务,然后才能执行队列中的其他任务。

条件也可以表示开始执行任务的另一种通知。当条件改变时,控制程序可以指定它开始执行队列任务。

场景7:集群监控和领导者活动

etcd的监控非常简单和实时。

在前面的场景中已经提到了观察者机制。当一个节点消失或改变时,观察者会立即发现并通知用户。

节点可以设置TTL键,比如每30s发送一次心跳,保留代表机器生存的节点,否则节点消失。

这样就可以第一时间检测到各个节点的健康状态,满足集群的监控需求。

此外,领袖选举可以通过使用分布式锁来完成。这种场景通常是一台长CPU计算或io操作的机器,只有在候选计算或处理一次后,才能将结果复制到其他Follower。从而避免重复工作,节省计算资源。

经典的场景是在搜索系统中建立一个完整的索引。如果每台机器都构建一次索引,不仅需要时间,而且构建索引的一致性也无法保证。通过在etcd的CAS机制中同时创建一个节点,将成功的机器创建为Leader,并进行索引计算,然后将计算结果分发给其他节点。

场景8:为什么用etcd代替ZooKeeper?

ZooKeeper的部署和维护比较复杂,管理员需要掌握一系列的知识和技能;

etcd的优势也很明显

很简单。用Go语言编写易于部署;使用HTTP作为接口很容易使用;使用Raft算法,保证强一致性,方便用户理解。

数据持久性。Etcd默认数据一更新就被保存。

安全。Etcd支持SSL客户端安全认证

#年#月#日是吗主节点主节点01节点02唉哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟mkdir-p/opt/kubrines/{ bin,cfg,SSL } vim/opt/kubrines/CFG/et CD。主配置文件你好#[月]ETCD _名称='etcd01' #哥哥哥哥哥哥哥哥哥哥哥哥主节点01 ndoe02(主节点01 ndoe02)你好吗etcd _ data _ dir='/var/lib/etcd/default。etcd ' etcd _ list _ peer _ URL=' https://192。168 .1 .251332380 ' #哥哥哥哥哥哥哥哥哥哥哥哥主节点01 ndoe02(主节点01 ndoe02)什么事ipe TCD _ listen _ client _ URL=' https://192。168 .1 .251:2379 ' #哥哥哥哥哥哥哥哥哥哥哥哥主节点01 ndoe02(主节点01 ndoe02)什么事IP #[群集]和CD _ initial _ advertise _ peer _ URLs=' https://192。168 .1 .251:2380 ' #哥哥哥哥哥哥哥哥哥哥哥哥主节点01 ndoe02(主节点01 ndoe02)什么事ipe TCD _ advertise _ client _ URL=' https://192。168 .1 .251332379 ' #哥哥哥哥哥哥哥哥哥哥哥哥主节点01 ndoe02(主节点01 ndoe02)什么事ipe TCD _ initial _ cluster=' etcd 01=https://192。168 .1 .251332380,et CD 02=https://192。168 .1 .2523360 2380,et CD 03=https://192。168 .1 .253362380 '和CD _ initial _ cluster _ token=' et CD-cluster '和CD_INITIAL_CLUSTER_STATE='new '你好我来了/opt/kubrines/CFG/etcd。服务你好[unit]description=etcd server after=network。目标在=网络在线之后。目标需求=网络-在线。target[service]type=notify environment file=/opt/kubricks/CFG/etcd。confexec start=/opt/kubricks/bin/etcd -name=$ { etcd _ name } data-dir=$ { etcd _ data _ dir } listen-client URL=$ { etcd _ list _ client _ URL } listen-peer URL=$ { etcd _ list }你好#杨俊钦先生ssh-key gen-t rsssh-副本id[电子邮件保护]ssh-副本id[电子邮件保护]#吴经盛(音译)CP/opt/kubrines/CFG/etcd。service/usr/lib/system/etcd。服务#服务是吗etcdtar zxvf和CD-v 3。2 .24-Linux-amd64。焦油。硬件支持工程师和CD-v 3。2 .24-Linux-amd64/etcd */opt/ku布氏/bin #中的说明喂,喂,喂,喂,喂cp ca-key.pem服务器. pem约为PEM服务器-密钥。PEM/opt/kubrines/SSL #唉哟etcdsystemctl开始和etcdsystemctl使能和cd#陈友邦535尾部-f /var/log/messages#阿云etcdtl-ca文件=/opt/kublets/SSL/ca。质子交换膜证书文件=/opt/kublets/SSL/server。质子交换膜钥匙文件=/opt/kublets/SSL/server-key。PEM-端点=' 3339192。168 .1 .251:2379、https://192 .168 .1 .2523362379、3339192 .168 .1 .253360679 '群集健康状况乌斯

云娥与云娥同在和激光唱片王顺昌(音译),吴亚玲吴亚玲,(中文),是不是。范仲淹!范仲淹!范仲淹!范仲淹!范仲淹!你是谁?你是谁?你是谁,你好吗,你是谁,-你好!

更多资讯
游戏推荐
更多+