一、安装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: localhost
port: 8500
discovery:
register: true
hostname: 127.0.0.1
tags: version=1.0,author=Dreamson.Ma
healthCheckPath: /actuator/health
healthCheckInterval: 5s
instanceId: ${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);
}
@Override
protected 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轮训访问后端应用的配置已经完成。可以自己随便关个应用测试一下。