一、安装Consul
参考:Consul 快速入门
注意事项:启动时,可以添加 -dns-port=53 这样就可以走默认的DNS端口了。
二、安装Kong
参考:Kong的简介和安装 和 使用Docker安装Kong
注意事项:如果使用docker方式执行,网络需要使用host方式。
附Docker执行方式:
Docker 方式部署
三、检查一下效果

kong的info信息
四、配置一个DNS SRV
后面用来做轮训
[root@local13 ~]# cat /etc/consul.d/web.json{"service": {"name": "web", "tags": ["springboot"], "port": 8080}}# local12同local13# 查下结果[root@local13 ~]# dig @192.168.56.112 web.service.consul SRV...;; QUESTION SECTION:;web.service.consul. IN SRV;; ANSWER SECTION:web.service.consul. 0 IN SRV 1 1 8080 agent-two.node.dc1.consul.web.service.consul. 0 IN SRV 1 1 8080 agent-one.node.dc1.consul.
至此,Kong与Consul就整合完成了。然后,我们再整合Spring Cloud,实现Kong网关到APP的DNS轮训。
Spring Cloud整合Consul
一、POM文件添加Spring Cloud依赖
...<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.SR1</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-consul-dependencies</artifactId><version>2.0.2.BUILD-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>...<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-all</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies>...<repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/libs-snapshot</url><snapshots><enabled>true</enabled></snapshots></repository></repositories>
二、配置YML文件,添加CONSUL相关内容
spring:cloud:consul:host: localhostport: 8500discovery:register: truehostname: 127.0.0.1tags: version=1.0,author=Dreamson.MahealthCheckPath: /actuator/healthhealthCheckInterval: 5sinstanceId: ${spring.application.name}:${spring.cloud.client.hostname}:${server.port}
三、Spring Boot入口添加相关注解
@EnableDiscoveryClient@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})@Import({DynamicDataSourceConfig.class})public class DreamsonApplication extends SpringBootServletInitializer {public static void main(String[] args) {SpringApplication.run(DreamsonApplication.class, args);}@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(DreamsonApplication.class);}}
至此,Spring Cloud整合Consul已经完成。运行下看看效果吧。

通过Kong的DNS轮训访问应用
这次使用konga(kong的ui管理工具)进行配置。
一、配置一个Service

konga配置kong的服务
二、配置一个Route

konga配置kong的路由
三、然后就可以访问了

访问kong的代理
至此,Kong利用dns轮训访问后端应用的配置已经完成。可以自己随便关个应用测试一下。
