consul是一款服务发现中间件,1.12版本后增长servicemesh功能.consul是分布式的,可扩展的,高可用的根据官方文档介绍,目前已知最大的consul集群有5000个节点,consul被普遍用用于服务发现,服务健康检测以及分布式配置存储,而且不断地改进对servicemesh和kubernetes的支持,不少优秀项目包括ocelot,spring cloud都提供了与consul的便利集成,本系列也会将consul作为一个重点的有状态服务较为细致讲解,让你们对kubernetes在服务管理上的便捷性,自发性有更深的理解(在kubernetes里,有状态服务部署是一件很困难的事,要考虑服务间必须互相排斥,对服务资源的合理限制以及服务发生漂移时数据的处理,部分服务挂掉后如何在没有人工介入的状况下自动加入集群等问题),虽然咱们在第一天接触容器的时候都会看到容器与虚拟机的对比,以及容器的优点,可是不少初学者仍然是把容器看成虚拟机来使用,按照在虚拟机中部署应用的思路在容器里部署应用,固然仅仅为了方便测试这样作是无可厚非的,可是生产环境是很是严肃的,必定要对可能产生的问题有充分的预估以便提早安排应对方案,而且充分利用新技术的特色对本身应用的部署灵活性,维护便捷性以及应用自己的伸缩性等方面进行持续优化.html
consul是一款服务发现中间件,1.12版本后增长servicemesh功能.consul是分布式的,可扩展的,高可用的.其主要功能以下node
CLIENT
CLIENT表示consul的client模式,就是客户端模式。是consul节点的一种模式,这种模式下,全部注册到当前节点的服务会被转发到SERVER,自己是不持久化这些信息。linux
SERVER
SERVER表示consul的server模式,代表这个consul是个server,这种模式下,功能和CLIENT都同样,惟一不一样的是,它会把全部的信息持久化的本地,这样遇到故障,信息是能够被保留的。web
SERVER-LEADER
中间那个SERVER下面有LEADER的字眼,代表这个SERVER是它们的老大,它和其它SERVER不同的一点是,它须要负责同步注册的信息给其它的SERVER,同时也要负责各个节点的健康监测。算法
其它信息
其它信息包括它们之间的通讯方式,还有一些协议信息,算法。它们是用于保证节点之间的数据同步,实时性要求等等一系列集群问题的解决。这些有兴趣的本身看看官方文档。spring
因为本系列的性质是关于devops的,所以不对consul作详细介绍,须要了解consul的同窗能够参考官方文档或者相关博客.这里的关注点主要在于测试环境和生产环境的部署上.docker
consul支持linux,macos和windows平台,开发环境可使用基于windows的consul,仅有一个可执行程序,使用很是方便,生产环境建议使用linux或者docker/kubernetes部署macos
后面咱们将会对consul windows测试环境部署,docker 单节点部署,docker集群部署,kubernetes集群部署一一作介绍.windows
本篇只介绍在windows下部署单节点测试环境,关于集群的部署能够参照后面docker的部署方式.浏览器
本篇很是简单,可是考虑到内容的独立性,所以单独作为一节.
能够在百度里搜索consul
,进入到官网首页就能够看到醒目的download,选择windows 版的下载便可.
下载完成后能够看到是一个单文件,名叫做consul.exe
,这里建议把它单独放到一个文件夹里面,由于后面可能须要添加配置文件,放在一个文件夹下面方便管理.
注意这里不像普通的exe双击安装,而是须要经过命令行启动
在consul.exe所在的文件夹
打开命令窗口,输入consul --help
就会出现如下关于consul的命令帮助
λ consul --help Usage: consul [--version] [--help] <command> [<args>] Available commands are: acl Interact with Consul's ACLs agent Runs a Consul agent catalog Interact with the catalog connect Interact with Consul Connect debug Records a debugging archive for operators event Fire a new event exec Executes a command on Consul nodes force-leave Forces a member of the cluster to enter the "left" state info Provides debugging information for operators. intention Interact with Connect service intentions join Tell Consul agent to join cluster keygen Generates a new encryption key keyring Manages gossip layer encryption keys kv Interact with the key-value store leave Gracefully leaves the Consul cluster and shuts down lock Execute a command holding a lock maint Controls node or service maintenance mode members Lists the members of a Consul cluster monitor Stream logs from a Consul agent operator Provides cluster-level tools for Consul operators reload Triggers the agent to reload configuration files rtt Estimates network round trip time between nodes services Interact with services snapshot Saves, restores and inspects snapshots of Consul server state validate Validate config files/directories version Prints the Consul version watch Watch for changes in Consu
在命令窗口输入consul agent -dev
就能够以dev模式启动consul了,如下是输出内容的头部
==> Starting Consul agent... ==> Consul agent running! Version: 'v1.4.0' Node ID: '2be40d2e-a5eb-5dda-271f-70a39141d791' Node name: 'DESKTOP-OE0CB8G' Datacenter: 'dc1' (Segment: '<all>') Server: true (Bootstrap: false) Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600) Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302) Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false ==> Log data will now stream in as it occurs:
经过以上输入内容能够看到,consul已经运行,版本是1.4.HTTP端口是8500,咱们在浏览器输入localhost:8500
就能够看到consul的web管理界面了
至此,windows配置已经完成了.
能够看到,默认状况下,http端口是8500,测试环境下咱们可能没有需求更改端口,但是正式环境部署的时候可能须要更改端口号,更改端口号也很是简单,在启动agent的时候加上-http-port
选项便可.
consul agent -dev -http-port=8400
==> Starting Consul agent... ==> Consul agent running! Version: 'v1.4.0' Node ID: '7a083b04-cd4a-04af-743b-4fdc8d82c62e' Node name: 'DESKTOP-OE0CB8G' Datacenter: 'dc1' (Segment: '<all>') Server: true (Bootstrap: false) Client Addr: [127.0.0.1] (HTTP: 8400, HTTPS: -1, gRPC: 8502, DNS: 8600) Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302) Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false
从输出信息中能够看到,http端口已经更改为8400了.
原文出处:https://www.cnblogs.com/tylerzhou/p/11155142.html