Consul注册中心

发布于 2022-04-18  1.63k 次阅读


一,Consul的简介

Consul是一套开源的分布式服务发现和配置管理系统,由HashICorp公司用GO语言开发
Consul提供了微服务系统中的服务治理,配置中心,控制总线等功能,这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网络,总之Consul提供了一种完整的服务网格解决方案

Consul的优点:
- 基于raft协议,比较简洁
- 支持健康检查
- 支持HTTP和DNS协议
- 支持数据中心的WAN集群
- 提供图形化界面
- 跨平台,支持Linux,Mac,Windowns

Consul的功能:
- 服务发现:提供HTTP和DNS两种发现方式
- 健康检测:支持多种方式Http,TCP,Docker,Shell脚本定制化
- KV存储:Key,Value的存储方式
- 多数据中心:Consul支持多数据中心

官网地址

二,安装Consul(Linux)

安装命令(复制粘贴):

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install consul

检测是否安装:consul -version

启动Consul:

consul agent -dev -ui -node=consul-dev -client=本地IP地址

提供IP:8500服务:

三,使用Consul作为注册中心

新建一个模块并配置(cloud-Consul-server)

① 父工程的maven依赖

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.12</junit.version>
    <lombok.version>1.18.10</lombok.version>
    <mybatis.spring.boot.version>2.1.1</mybatis.spring.boot.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.2.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

② 导入依赖

<dependencies>
    <dependency>
        <groupId>com.cloud.commons</groupId>
        <artifactId>cloud-api-commons</artifactId>
        <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-actuator</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>
    <!--consul依赖-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>
</dependencies>

③ 配置application文件

server:
  port: 9093
spring:
  application:
    name: cloud-consul-server
  cloud:
    consul:
      host: 192.168.68.134 #consul地址
      port: 8500 #consul端口,默认位8500
    discovery:
      service-name: ${spring.application.name} #服务名称

④ 主文件

@SpringBootApplication
@EnableDiscoveryClient
public class ConsulMain {
    public static void main(String[] args) {
        SpringApplication.run(ConsulMain.class,args);
    }
}

运行这个SpringBoot模块并查看Consul是否存在注册信息:


路漫漫其修远兮,吾将上下而求索