consul基于go语言编写的分布式高并发服务发现组件,围绕微服务做了一些专门的设计,支持LAN ,WAN,不同数据中心之间的服务注册信息同步。
单机搭建 (/usr/local/consul/consul agent -h)
consul agent -server -ui -bootstrap-expect=1 -data-dir=D:\consuldata -node=agent-one -http-port=8500 -config-dir=D:\consuldata\config
开发环境可以直接使用 consul agent -dev
服务查看界面
http://127.0.0.1:8500/ui
如果consul和应用不在一台机器,需要使用-client= consul主机IP ;
集群搭建
1.环境准备
consul版本0.7.5
agent-one : 100.100.193.225
agent-two : 100.100.225.22
2.启动各个节点
/usr/local/consul/consul agent -server -ui -node=agent-one -bind=100.100.193.225 -client=100.100.193.225 -bootstrap-expect=1 -data-dir=/usr/local/consul
/usr/local/consul/consul agent -server -ui -node=agent-two -bind=100.100.225.22 -client=100.100.225.22 -data-dir=/usr/local/consul
3.集群查看 (/usr/local/consul/consul members -h)
/usr/local/consul/consul members -rpc-addr=100.100.193.225:8400
4.集群新增节点 (在100.100.193.225上操作新增100.100.225.22)
/usr/local/consul/consul join -rpc-addr=100.100.193.225:8400 100.100.225.22
5.集群节点删除 (在100.100.225.22 上操作)
/usr/local/consul/consul leave -rpc-addr=100.100.225.22:8400
集群验证
在A注册中心注册,B注册中心中进行服务查询即可验证集群是否生效
1.注册中心的使用
调用rest api进行服务注册
consul提供服务注册和查询的REST服务,天然的支持多种开发语言,见
https://github.com/OrbitzWorldwide/consul-client
2.服务注册与失效规则设置
https://www.consul.io/docs/agent/http/agent.html#agent_service_register
https://www.consul.io/docs/agent/checks.html
支持的验证的规则 (前面两种灵活性最高)
- .Script + Interval 脚本返回值为0,表示服务可用
- .HTTP + Interval response code 为2** 表示服务可用
- .TCP + Interval
- .TTL
- .Docker + Interval
使用consul来作为微服务的注册中心
http://cloud.spring.io/spring-cloud-consul/
比起eureka作为注册中心的高可用方案,配置更简单;服务失效检测规则更丰富;
consul常用端口
ports This is a nested object that allows setting the bind ports for the following keys:
dns - The DNS server, -1 to disable. Default 8600.
http - The HTTP API, -1 to disable. Default 8500.
https - The HTTPS API, -1 to disable. Default -1 (disabled).
serf_lan - The Serf LAN port. Default 8301.
serf_wan - The Serf WAN port. Default 8302.
server - Server RPC address. Default 8300. (0.7版本为8400 )
Consul0.7.*启动信息分析:包含启动模式,常用端口信息
Consul agent running!
Version: ‘v0.7.2’
Node name: ‘wuhy2wwx4389991’
Datacenter: ‘dc1’
Server: true (bootstrap: false)
Client Addr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400)
Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false
相关资料
服务注册中心的相关文档见 https://www.consul.io/docs/commands/agent.html
consul的体系结构 https://www.consul.io/docs/internals/architecture.html
集群环境的搭建 https://www.consul.io/intro/getting-started/join.html
集群节点查看 https://www.consul.io/docs/commands/members.html
通信加密 https://www.consul.io/docs/agent/encryption.html
consul端口 https://www.consul.io/docs/agent/options.html#ports
consul客户端工具 https://www.consul.io/downloads_tools.html
嵌入式consul https://github.com/pszymczyk/embedded-consul
spring-cloud-consul技术文档:http://cloud.spring.io/spring-cloud-consul/
spring-cloud-consul-sample 案例: https://github.com/spring-cloud/spring-cloud-consul/tree/master/spring-cloud-consul-sample
SpringCloud教程:
https://github.com/liaokailin/springcloud/blob/master/note/3.eureka.md
SPRING CLOUD教程 :http://git.oschina.net/didispace/SpringCloud-Learning