08、SpringCloud实战:Consul注册中心

目录

1、 到官网下载Consulhttps://www.consul.io/;

2、 解压下载好的压缩包;

3、 配置系统环境变量;

4、 WIN+R启动cmd窗口,输入consul启动命令;

5、 启动完成后访问Consul页面http://localhost:8500(8500为Consul默认端口号);

6、 server-member服务引入consul依赖;

7、 修改server-member服务启动类,使用通用注册中心注解@EnableDiscoveryClient;

8、 修改server-member配置文件application.yml;

9、 运行server-member服务的启动类,访问consul页面;

10、 consul健康检查机制(类似心跳检测,由注册中心主动发送请求,响应成功状态码200代表服务可用);

10、 1、使用默认的健康检查路径http://DESKTOP-I144RP0:9081/actuator/health;

10、 1.1、在server-member中新建一个Controller提供给consul做健康检查;

10、 1.2、重启server-member服务,重新访问consul页面;

10、 2、重新指定健康检查路径;

10、 2.1、修改server-member服务的application.yml;

10、 2.2、修改HealthController接口,使用application.yml配置文件配置的路径;

10、 2.3、重启server-member服务,重新访问consul页面;

11、 同个服务启动多个实例展示;


1、到官网下载Consul https://www.consul.io/

进入官网,点击Download

*

2、解压下载好的压缩包

里面只有一个启动项

*

3、配置系统环境变量

将consul.exe所在的文件夹路径添加到系统环境变量Path中,类似配置Java环境变量

*

4、WIN+R启动cmd窗口,输入consul启动命令

Consul单机服务 consul agent -dev

Consul 集群部署的选项 consul agent -dev [/server或 /client]

*

5、启动完成后访问Consul页面 http://localhost:8500(8500为Consul默认端口号)

*

6、server-member服务引入consul依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

7、修改server-member服务启动类,使用通用注册中心注解@EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient  //通用的注册中心客户端注解
public class MemberApp {
    public static void main(String[] args) {
        SpringApplication.run(MemberApp.class, args);
    }
}

8、修改server-member配置文件application.yml

server:
  port: 9081

spring:
  application:
    name: server-member
  cloud:
#    zookeeper:
#      #配置连接注册中心地址
#      connect-string: localhost:2181
    consul:
      host: localhost
      port: 8500

9、运行server-member服务的启动类,访问consul页面

*

可以看到server-member已经注册到consul注册中心了,1 instance表示当前服务有一个实例

10、consul健康检查机制(类似心跳检测,由注册中心主动发送请求,响应成功状态码200 代表服务可用)

点击consul页面的server-member服务,可以展示所有的实例信息

*

点击node checks ,发现默认的健康路径为404

*

此时由于健康检查不通过,所以我们访问server-member会失败,表示节点不可用

10.1、使用默认的健康检查路径http://DESKTOP-I144RP0:9081/actuator/health

10.1.1、在server-member中新建一个Controller提供给consul做健康检查

@RestController
@RequestMapping("/")
public class HealthController {

    @GetMapping("/actuator/health")
    public String health(){
        return  "server health";
    }

}

10.1.2、重启server-member服务,重新访问consul页面

*

*

此时,健康检查通过,表示服务节点可用

10.2、重新指定健康检查路径

discovery:
# 重新指定健康检查机制的接口
health-check-path: /healthcheck
# 检查时间**间隔
health-check-interval: 5s

10.2.1、修改server-member服务的application.yml

server:
  port: 9081

spring:
  application:
    name: server-member
  cloud:
#    zookeeper:
#      #配置连接注册中心地址
#      connect-string: localhost:2181
    consul:
      host: localhost
      port: 8500
      discovery:
        # 重新指定健康检查机制的接口
        health-check-path: /healthcheck
        # 检查时间
        health-check-interval: 5s

10.2.2、修改HealthController接口,使用application.yml配置文件配置的路径

@RestController
@RequestMapping("/")
public class HealthController {

    @GetMapping("/healthcheck")
    public String health(){
        return  "server health";
    }

}

10.2.3、重启server-member服务,重新访问consul页面

*

可以看到健康检查接口已经变成了我们配置文件自定义的路径 http://DESKTOP-I144RP0:9081/healthcheck

11、同个服务启动多个实例展示

以server-member服务为例,分别以9081、9082、9083端口启动三个服务实例、访问consul页面

*

可以看到server-member已经注册到consul注册中心中,并表明有3个实例

点击server-member查看各个服务实例的详情

*

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: