以consul为微服务治理中心的微服务架构演示
方法论
1. 前端组件化(可视化工具)
2. 后端微服务化(分布式统一管控)
3. 迭代自动化(CI/CD)
4. 过程流水线化(DevOps)
5. 定义接口入/出参后,通过KV模拟数据即可实现前后端联调,再深入开发相关微服务
本工程完整演示了以consul为微服务治理中心的标准微服务架构各个基本模块功能,通过该项目能够完整了解微服务注册、发现、健康监测、负载均衡、全链路监控、配置中心、权限控制等。
consul集群部署说明
修改配置文件,存放目录为consul.d,后缀为.json,可以有多个配置文件,后面的属性覆盖前面的。
1.公共基础配置文件/etc/consul.d/base-config.json
{"ports": {"http": 8500,"dns": 8600,"serf_lan": 8301,"serf_wan": 8302,"server": 8300}}
2.server节点的ACL配置文件acl.json
{"datacenter": "dc1","acl_datacenter": "dc1","acl_master_token": "6407e6d8-1696-4b98-826d-0ad9a5c93449","acl_default_policy": "deny","server": true,"log_level": "DEBUG","bootstrap_expect": 3,"client_addr": "0.0.0.0"}
3.client节点的ACL配置文件acl.json
{"datacenter": "dc1","acl_datacenter": "dc1","acl_master_token": "6407e6d8-1696-4b98-826d-0ad9a5c93449","acl_token": "dd2c1eb3-7698-efb1-d213-f84d40fb5970","acl_default_policy": "deny","server": false,"log_level": "DEBUG","client_addr": "0.0.0.0"}
备注:
1. 先启动server
2. 浏览器打开UI,用acl_master_token设置ACL
3. 创建一个新的ACL
4. 将token配置到client的ACL文件的acl_token
5. 逐步启动client
6. 这个acl_token就是java bootstrap.yml中的consul配置
以docker方式启动consul
1.启动主服务server1
docker run -d --net host -p 8600:8600 -p 8500:8500 -p 8600:53/udp --name consul-server -v /etc/consul.d:/etc/consul.d consul:latest agent -bind=172.16.15.233 -config-dir=/etc/consul.d -node=server1 -ui
2.启动主服务server2
docker run -d --net host -p 8600:8600 -p 8500:8500 -p 8600:53/udp --name consul-server -v /etc/consul.d:/etc/consul.d consul:latest agent -bind=172.16.15.237 -config-dir=/etc/consul.d -node=server2 -retry-join=172.16.15.233
3.启动主服务server3
docker run -d --net host -p 8600:8600 -p 8500:8500 -p 8600:53/udp --name consul-server -v /etc/consul.d:/etc/consul.d consul:latest agent -bind=172.16.15.232 -config-dir=/etc/consul.d -node=server3 -retry-join=172.16.15.233
4.启动客户端client1
docker run -d --net host -p 8600:8600 -p 8500:8500 -p 8600:53/udp --name consul-client -v /etc/consul.d:/etc/consul.d consul:latest agent -bind=172.16.15.230 -config-dir=/etc/consul.d -node=client1 -retry-join=172.16.15.233
5.启动客户端client2
docker run -d --net host -p 8600:8600 -p 8500:8500 -p 8600:53/udp --name consul-client -v /etc/consul.d:/etc/consul.d consul:latest agent -bind=172.16.15.231 -config-dir=/etc/consul.d -node=client2 -retry-join=172.16.15.233
微服务模块
Springcloud 接入consul
1. 基本依赖包
参考父工程的pom文件
2. 把Spring consul的配置存放到bootstrap.yml文件里,而不是application.yml里边
spring:cloud:consul:host: 172.28.50.28port: 8500discovery:register: trueprefer-ip-address: trueinstance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}acl-token: dd2c1eb3-7698-efb1-d213-f84d40fb5970config:enabled: trueformat: yamlwatch:enabled: trueprefix: configdata-key: data
3. 网关服务,在spring注入的时候,要把需要引入的组件注入到主应用里边
//注册到consul的注入项@EnableDiscoveryClien