1.1. 一、下载并允许consul。

下载consul的地址:https://www.consul.io/downloads.html
我下载windows版本,下载解压之后是一个consul.exe二进制可执行文件。

1.2. 二、运行consul。

consul.exe所在目录执行下面的命令:

consul.exe agent -dev

就可以以开发者模式启动consul。访问http://localhost:8500/ 就可以看到consul的 web界面如下:

1.3. 三、查看consul集群。

启动另外一个命令窗口,执行下面的命令,可以查看consul的集群节点:

consul members

1.4. 四、springcloud服务注册到consul。

查看springcloud的consul官方文档,可以看到集成consul的方式。
新建一个springcloud项目,配置如下:

1.4.1. 1、配置依赖pom.xml。

pom.xml中加入下面的配置。

<!--web服务器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--服务健康检查-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--服务注册-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

1.4.2. 2、配置bootstrap.yml。

因为我们以后要使用 Spring Cloud Consul Config作为配置中心。 所以把Consul的配置放在bootstrap.yml,而不是application.yml中。

bootstrap.yml 如下:

# 服务的端口
server:
  port: 8080
# 服务的管理端口,就是/actuator/health等actuator使用的端口。
#一般不配置,默认跟随本服务的端口server.port就可以了。
management:
  server:
    port: 4452
spring:
  application:
    # 服务名
    name: myTestService
  cloud:
    consul:
      host: localhost
      port: 8500

1.4.3. 3、访问consul界面如下:

会看到注册了2个服务myTestServicemyTestService-management。 其中myTestService-management是actuator管理界面的服务。

说明:

  • management.server.port 是定义actuator健康检查等一堆对微服务检查的端口。 一般默认为server.port即可。如果定义为不同的端口去consul注册时, 这个微服务会注册为2个服务。服务名是spring.application.name服务名后面加-management
    详细情况可以查看springcloud的consul官网springboot actuator的官网springboot actuator endpoints的官网
  • 可以设置spring.cloud.consul.discovery.enabled=falsespring.cloud.discovery.enabled=false禁用服务发现。
  • 设置spring.cloud.consul.discovery.register=false禁用服务注册。
  • 去掉management.server.port之后,只有一个服务注册到了consul,如下图:

1.4.4. 4、增加一个接口。给消费端。

@SpringBootApplication
@RestController
public class ConsulDemo1Application {

    public static void main(String[] args) {
        SpringApplication.run(ConsulDemo1Application.class, args);
    }

    @RequestMapping("/hello")
    public String home() {
        return "Hello world";
    }

}

results matching ""

    No results matching ""