八、Consul注册中心

192 阅读5分钟

目录

1、到官网下载Consul  https://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  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查看各个服务实例的详情