


Consul 是一个用来实现分布式系统服务发现与配置的开源工具。它内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,也可以作为配置中心。
为什么需要服务注册与服务发现:
我的理解:就是服务于服务之间不直接依赖,而是通过注册中心来管理。就类似依赖注入一样,类与类之间不支持依赖,而是通过依赖注入容器来管理。
和依赖注入类似,依赖于接口依赖于抽象不依赖于具体实现,用服务治理和就依赖于服务治理了不依赖于具体的服务了,相当于多加了一层
因为多加了一层,服务与服务之间的耦合度降低了,通过服务发现的方式去调用服务,可以支持动态扩展,比如动态的增加服务与减少服务
下载:
https://download.tnblog.net/resource/index/836598dc6043401f9e8ab6634b303313
这里吐槽下这个上传大小的限制…emmm项目要配置,iis要配置,nginx要配置,跨过一个坑又要一个坑
解压:
找一个位置解压,然后在你解压的位置输入启动命令(开发者模式):
consul agent -dev
如图:
输入命令正确启动即可不需要安装,启动成功后输入地址http://localhost:8500/
就可以成功的访问到Consul的界面了
nodes里边存放的是集群节点
Consul启动模式:
开发者模式
通过命令:consul agent -dev
简单启动,就可以通过http://localhost:8500/ 来访问这个consul
但是,这种模式一般是自己开发的时候用的,因为它不带记忆功能,不能持久化数据,关闭后数据就没有了,也不能与其他consul互通。
外网访问:
consul agent -dev 只能本地可以访问
要想通过ip可以访问,使用下面的使用即可
consul agent -dev -client 0.0.0.0 -ui 指定ip可以访问
Client模式
这种模式下,所有注册到当前节点的服务会被转发到Server,本身是不持久化这些信息。
Client模式不能脱离Server单独运行,因此无法实现单机模式
Server模式
Consul 的 Server 模式,表明这个 Consul 是个 Server ,这种模式下,功能和 Client
都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。
运行命令:
consul agent -server -bootstrap-expect 1 -data-dir /soft/data/consul -node=consulServer1 -bind=10.267.83.220 -ui -rejoin -config-dir=/soft/config/consul/ -client 0.0.0.0
启动后可以通过http://10.267.83.220:8500 来访问这个consul的ui界面。
- server : 定义agent运行在server模式
- bootstrap-expect :在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap共用
- bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
- node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
- ui: 开启consul的界面;
- rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。
- config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载
- client:consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务,如果你要对外提供服务改成0.0.0.0
当然简单一点就直接consul agent -server就行
关于Consul Key/Value数据持久化的问题:
如果不用Consul本身的数据持久化,可以考虑自己存储这些持久化数据,然后可以在初始化的时候,把配置信息比如存储在数据库中的配置信息写到consul,然后在获取。
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)