dawdler-config-center-consul-core
模块介绍
统一配置中心核心模块
1. dawdler-config.yml配置文件
配置不同类型的配置中心与相关配置,目前只支持consul,支持自定义扩展.
dawdler-config.yml 支持多环境配置 参考统一配置中心与多环境支持.
consul:
host: localhost
port: 8500
separator:
token:
wait-time: 10
watch-keys:
- /orderConfig
- /user
#TLSConfig:
#keyStoreInstanceType: JKS, JCEKS, PKCS12, PKCS11, DKS
#certificatePath:
#certificatePassword:
#keyStorePath:
#keyStorePassword:
host: consul服务器的ip
port: consul服务器暴露的端口
separator:分割符 一般无须配置,只在keys的场景有意义,如以下请求:
设 目前已有目录 /config/config-uat /config/config-dev /config/config
访问 http://localhost:8500/v1/kv/config?keys&separator=-&wait=5s&index=2
返回 [
"config/config", "config/config-" ].
token:用于身份校验
wait-time:轮询超时长,单位秒数
watch-keys: 监控的key,是一个list列表,只有被监控的key有变化才会刷新相关配置,也可以通过 /
来监控所有的keys.
TLSConfig:证书相关配置,如果有敏感数据并且consul需要部署在互联网中使用,建议采用此配置. 具体参考:consul encryption
2. 安装consul
参考consul downloads 即可完成安装.
2.1 consul在生产环境下的使用
Consul支持多DataCenter,数据中心可以通过Internet互联,为了提高通信效率,只有Server节点才加入跨数据中心的通信.
在单个数据中心中,Consul分为Client和Server两种节点(所有的节点称为Agent),Server节点保存数据,Client负责健康检查及转发数据请求到Server,Server节点有一个Leader和多个Follower,Leader节点会将数据同步到Follower,Server的数量推荐是3个或者5个,在Leader挂掉的时候会启动选举机制产生一个新的Leader.
集群内的Consul节点通过gossip协议维护成员关系,某个节点了解集群内现在还有哪些节点,这些节点是Client还是Server.单个数据中心的流言协议同时使用TCP和UDP通信,并且都使用8301端口.跨数据中心的gossip也同时使用TCP和UDP通信,端口使用8302.
集群内数据的读写请求既可以直接发到Server,也可以通过Client使用RPC转发到Server,请求最终会到达Leader节点,在允许数据轻微陈旧的情况下,读请求也可以在普通的Server节点完成,集群内数据的读写和复制都是通过TCP的8300端口完成.
注意: consul 只暴露局域网ip,如果使用配置中心这种需要ui来操作,可以通过nginx来暴露外网IP转发到consul局域网暴露的IP,同时通过auth_basic方式来认证授权访问ui.
2.1.1 nginx负载均衡多server节点集群
consul在生产环境下一般使用集群模式,集群模式自行参考官方文档完成即可,建议通过nginx来负载多个集群节点.
服务注册(配置中心的client端也采用这种方式)调用关系如下:
service->nginx(可以考虑多个nginx+lvs保证高可用)->(负载多个)consul_server
2.1.2 单client连接server节点集群
服务注册(配置中心的client端也采用这种方式)调用关系如下:
service->consul_client->consul_server