基于consul的服务注册(含踩坑过程)

在本地的一个案例中进行修改

修改微服务的相关pom文件
修改每个微服务的pom文件,添加SpringCloud提供的基于Consul的依赖

<!--SpringCloud提供的基于Consul的服务发现-->
<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>
<!--actuator用于心跳检查-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

注:由于我之前的代码是注册到eureka中,把配置注解要删了,pom的依赖还在,启动直接报错,还是要去掉的

<!--引入EurekaClient-->
        <!--  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency> -->

其中 spring-cloud-starter-consul-discovery 是SpringCloud提供的对consul支持的相关依赖。
spring-boot-starter-actuator 适用于完成心跳检测响应的相关依赖。

配置服务注册

server:
  port: 9001 #端口
spring:
  application:
    name: service-product #服务名称
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 123456
  jpa:
    database: MySQL
    show-sql: true
    open-in-view: true
  ###开始配置consul的服务注册
  cloud:
    consul:
      host: 192.168.180.137 #consul服务器的主机地址
      port: 8500 #consul服务器的ip地址
      discovery:
        #是否需要注册
        register: true
        #注册的实例ID (唯一标志)
        instance-id: ${spring.application.name}-1
        #服务的名称
        service-name: ${spring.application.name}
        #服务的请求端口
        port: ${server.port}
        #指定开启ip地址注册
        prefer-ip-address: true
        #当前服务的请求ip
        ip-address: ${spring.cloud.client.ip-address}
server:
  port: 9002 #端口
spring:
  application:
    name: service-order #服务名称
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 123456
  jpa:
    database: MySQL
    show-sql: true
    open-in-view: true
  ###开始配置consul的服务注册
  cloud:
    consul:
      host: 192.168.180.137 #consul服务器的主机地址
      port: 8500 #consul服务器的ip地址
      discovery:
        #是否需要注册
        register: true
        #注册的实例ID (唯一标志)
        instance-id: ${spring.application.name}-1
        #服务的名称
        service-name: ${spring.application.name}
        #服务的请求端口
        port: ${server.port}
        #指定开启ip地址注册
        prefer-ip-address: true
        #当前服务的请求ip
        ip-address: ${spring.cloud.client.ip-address}

其中 spring.cloud.consul 中添加consul的相关配置
host:表示Consul的Server的请求地址
port:表示Consul的Server的端口
discovery:服务注册与发现的相关配置
instance-id : 实例的唯一id(推荐必填),spring cloud官网文档的推荐,为了保证生成一个唯一的id ,也可以换成
${spring.application.name}:${spring.cloud.client.ipAddress}
prefer-ip-address:开启ip地址注册
ip-address:当前微服务的请求ip

在控制台中查看服务列表
打开ConsulServer的管理控制台,可以发现三个微服务已经全部注册到Consul中了。

进行测试:

发现没有问题。

由于第一次部署实在阿里云上的,但是在服务检查的时候一直显示连接超时,可能网络不带好,换成自己的虚拟机就没有问题。如下图:

原文地址:https://www.cnblogs.com/dalianpai/p/12268930.html

时间: 2024-08-30 02:01:21

基于consul的服务注册(含踩坑过程)的相关文章

简单RPC框架-基于Consul的服务注册与发现

*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0; } /* HEAD

Spring Cloud Consul 实现服务注册和发现

Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于 JVM 的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式.通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂.易部署和易维护的分布式系统开发工具包. Spring Cloud 包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Sprin

【转帖】基于Zookeeper的服务注册与发现

http://www.techweb.com.cn/network/hardware/2015-12-25/2246973.shtml 背景 大多数系统都是从一个单一系统开始起步的,随着公司业务的快速发展,这个单一系统变得越来越庞大,带来几个问题: 1. 随着访问量的不断攀升,纯粹通过提升机器的性能来已经不能解决问题,系统无法进行有效的水平扩展 2. 维护这个单一系统,变得越来越复杂 3. 同时,随着业务场景的不同以及大研发的招兵买马带来了不同技术背景的工程师,在原有达达Python技术栈的基础

.NET Core微服务之基于Consul实现服务治理

一.Consul基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更"一站式",内置了服务注册与发现框 架.分布一致性协议实现.健康检查.Key/Value存储.多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等),使用起来也较 为简单. Consul用Golang实现,因此具有天然可移植性(支持Linux.windows和Ma

.NET Core微服务之基于Consul实现服务治理(续)

上一篇发布之后,这一篇把上一篇没有弄到的东西补一下,也算是给各位前来询问的朋友的一些回复吧. 一.Consul服务注册之配置文件方式 1.1 重温Consul实验集群 这里我们有三个Consul Server节点,一个Consul Client节点,在Client节点上跑了两个ClientService实例,分别占用8810和8820端口.至于基于Ocelot的API网关服务,还没有实现,留到以后跟各位分享.这里假设我们已经启动了这几个节点,并且能够成功访问这两个ClientService实例(

【Linux】【Services】【SaaS】Docker+kubernetes(7. 安装consul实现服务注册发现)

1. 简介 1.1. Consul的功能: 服务发现:通过DNS或HTTP接口使得消费者发现服务,应用程序可以轻松找到所依赖的服务. 健康检查:防止将请发转发不健康的主机. 键值存储:可以使用分层键/值存储,比如功能标记.动态配置等. 多数据中心:开箱即用,不需要复杂的配置.这就意味着不用建立抽象的逻辑来扩展多个地区. 1.2. Consul集群介绍: -- Consul agent是Consul核心工作,分为client和server两种工作模式.默认以client模式运行,提供服务注册.健康

Nginx location 配置踩坑过程分享

这是五个小时与一个字符的战斗 是的,作为一个程序员,你往往发现,有的时候你花费了数小时,数天,甚至数星期来查找问题,但最终可能只花费了数秒,改动了数行,甚至几个字符就解决了问题.这次给大家分享一个困扰了我很久,我花了五个小时才查找出问题原因,最终只添加了一个字符解决了的问题. 问题描述 我们的业务系统比较复杂,但最终提供给用户的访问接口比较单一,都是使用 Nginx 来做一个代理转发,而这个代理转发,往往需要匹配很多种不同类型的 URL 转给不同的服务.这就使得我们的 Nginx 配置文件变得很

Nginx location 配置踩坑过程

原文链接:https://blog.coding.net/blog/tips-in-configuring-Nginx-location 是的,作为一个程序员,你往往发现,有的时候你花费了数小时,数天,甚至数星期来查找问题,但最终可能只花费了数秒,改动了数行,甚至几个字符就解决了问题.这次给大家分享一个困扰了我很久,我花了五个小时才查找出问题原因,最终只添加了一个字符解决了的问题. 问题描述 我们的业务系统比较复杂,但最终提供给用户的访问接口比较单一,都是使用 Nginx 来做一个代理转发,而这

Linux 踩坑过程

1.装虚拟机(Windows自带的Hyper-V 坑爹,用VMware虚拟机安装ubuntuOK ,前提是要把Hyper-v 干掉) 2.filezilla 连接 ubuntu 连接不上(耗时最长) 2.1.切换到root 用户登录(sudo passwd root input your password for current user: enter new unix password retype new unix password su root ) 2.2.ssh服务未安装(sudo a