首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Eureka和traefik的微服务服务发现与docker组合

使用Eureka进行服务发现,结合Traefik作为反向代理和负载均衡器,并在Docker容器中运行微服务,可以构建一个高效且可扩展的微服务架构。以下是一个详细的步骤指南,帮助你实现这一组合。

1. 设置Eureka服务器

首先,你需要设置一个Eureka服务器来进行服务发现。

1.1 创建Eureka服务器项目

使用Spring Initializr创建一个新的Spring Boot项目,并添加以下依赖:

  • Spring Web
  • Eureka Server

1.2 配置Eureka服务器

application.yml文件中配置Eureka服务器:

代码语言:javascript
复制
server:
  port: 8761

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://localhost:8761/eureka/

1.3 启用Eureka服务器

在你的主类上添加@EnableEurekaServer注解:

代码语言:javascript
复制
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

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

2. 创建微服务

接下来,创建一个或多个微服务,并将它们注册到Eureka服务器。

2.1 创建微服务项目

使用Spring Initializr创建一个新的Spring Boot项目,并添加以下依赖:

  • Spring Web
  • Eureka Discovery Client

2.2 配置微服务

application.yml文件中配置微服务:

代码语言:javascript
复制
server:
  port: 8081

spring:
  application:
    name: my-service

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

2.3 启用服务发现

在你的主类上添加@EnableDiscoveryClient注解:

代码语言:javascript
复制
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

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

3. 设置Traefik

Traefik将作为反向代理和负载均衡器,自动从Eureka获取服务实例。

3.1 创建Traefik配置文件

创建一个traefik.toml文件:

代码语言:javascript
复制
[entryPoints]
  [entryPoints.web]
    address = ":80"

[providers.docker]
  endpoint = "unix:///var/run/docker.sock"
  network = "web"

[api]
  dashboard = true

[providers.eureka]
  endpoint = "http://localhost:8761/eureka/"
  prefix = "traefik"

3.2 创建Docker网络

创建一个Docker网络,以便Traefik和微服务可以相互通信:

代码语言:javascript
复制
docker network create web

4. 构建和运行Docker容器

为Eureka服务器、Traefik和微服务创建Dockerfile,并构建和运行Docker容器。

4.1 Eureka服务器Dockerfile

代码语言:javascript
复制
FROM openjdk:11-jre-slim
COPY target/eureka-server.jar eureka-server.jar
ENTRYPOINT ["java", "-jar", "eureka-server.jar"]

4.2 微服务Dockerfile

代码语言:javascript
复制
FROM openjdk:11-jre-slim
COPY target/my-service.jar my-service.jar
ENTRYPOINT ["java", "-jar", "my-service.jar"]

4.3 构建和运行容器

构建镜像并运行容器:

代码语言:javascript
复制
docker build -t eureka-server .
docker run -d --name eureka-server --network web -p 8761:8761 eureka-server

docker build -t my-service .
docker run -d --name my-service --network web -p 8081:8081 my-service

docker run -d --name traefik --network web -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock traefik:v2.4 --configFile=/traefik.toml

5. 验证

打开浏览器访问http://localhost,你应该能看到Traefik的仪表盘,并且能够通过服务名称访问你的微服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SpringCloud服务发现Eureka使用教程

上次说了单体架构服务之前优缺点对比,也说了zookeeperEureka理论上区别,也说了Eureka高水平架构。...Eureka Server Eureka Client也就是消费者生产者关系。 Eureka分区概念(一) 用户量比较大或者用户地理位置分布范围很广项目,一般都会有多个机房。...=false #eureka 提供服务发现地址 eureka.client.service-url.defaultZone=http://idig8:777@localhost:8761/eureka...,但是eureka不一样,eureka是基于HTTPrest来实现,就是把服务信息放到一个ConcurrentHashMap中,然后服务启动时候去读取这个map,来把所有服务关联起来,然后服务器之间调用时候通过信息...eureka包括两部分,一部分就是服务提供者(对于eureka来说就是客户端),一部分是服务端,客户端需要每个读取每个服务信息,然后注册到服务端,很明显了,这个服务端就是接受客户端提供自身一些信息

45640

Spring Cloud 服务注册发现Eureka

服务发现是微服务架构下最核心概念。Eureka服务发现服务客户端,服务端是服务注册中心,客户端是每一个服务服务端可以部署成为高可用,每一个节点都可以将其注册服务备份到其他节点。...一、Eureka Server Eureka Server是服务注册中心,这是分布式服务基础,我们看看这一部分如何搭建。...在单例模式下,eureka.instance.hostname必须是localhost,而且defaultZone不能使用ip,要使用eureka.instance.hostname且走域名解析才可以。...相互注册就是我们前面提到fetch-registryregister-with-eureka, 它们默认都是true,所以不需要配置,我们需要制定其他节点url就可以了,我们以3个节点为例: spring...这里我们还是要注意一下instance.hostnameservice-url 3个实例instance.hostname不能重复,否则集群搭建失败 service-url不能使用ip+端口直接访问

1.3K20
  • Spring Cloud 服务注册发现Eureka

    Eureka服务注册中心 一、Eureka Server Eureka Server是服务注册中心,这是分布式服务基础,我们看看这一部分如何搭建。...其中fetch-registry是抓取注册服务,register-with-eureka是将自己本身向其他Eureka Server 注册。...在单例模式下,eureka.instance.hostname必须是localhost,而且defaultZone不能使用ip,要使用eureka.instance.hostname且走域名解析才可以。...相互注册就是我们前面提到fetch-registryregister-with-eureka, 它们默认都是true,所以不需要配置,我们需要制定其他节点url就可以了,我们以3个节点为例: spring...这里我们还是要注意一下instance.hostnameservice-url 3个实例instance.hostname不能重复,否则集群搭建失败 service-url不能使用ip+端口直接访问

    53140

    Spring Cloud【Finchley】-02服务发现服务注册Eureka + Eureka Server搭建

    服务发现组件概述 上篇文章 Spring Cloud-01服务提供者服务消费者 中,我们通过配置文件方式来配置服务提供者地址,有两个缺点 如果服务提供者ip端口发生变化,将会影响服务消费者,服务消费者需要也跟着修改...关系如上图 各个微服务在启动时,将自己网络地址等信息注册到服务发现组件中 服务消费者可以从服务发现组件中查询服务提供者地址,并使用该地址调用服务提供者提供接口 各个微服务服务发现组件在使用一定机制...当服务发现组件长时间无法某微服务实例通信,将注销该实例 微服务网络地址发生变更(比如实例增减或者ip端口发生变化)时,会重新注册到服务发现组件。...这里我们主要介绍Eureka ---- Eureka概述 Eureka是Netflix开源服务发现组件,一个基于REST服务。 包含ServerClient两部分。...: 设置Eureka Server交互地址,查询服务注册服务都依赖这个地址,默认为 http://localhost:8761/eureka ,多个地址可使用 , 分隔。

    26020

    服务发现消费--EurekaRibbon联手出击

    服务消费者目标只有两个:发现服务,消费服务。其中服务发现Eureka客户端提供,而服务消费由Ribbon完成。...Ribbon是一个基于HttpTcp客户端负载均衡器,他可以在通过客户端配置ribbonServerList服务端列表去轮询访问以达到负载均衡作用。...当RibbonEureka联合使用时,Ribbon服务清单RibbonServerList会被DiscoveryEnabledNIWSServerList重写,扩展成从Eureka注册中心获取服务端列表...我们先启动上一节服务端*2接口提供端,用于测试注册服务时候能够使用,以及负载均衡。...并且,我将服务提供方放在peer1Eureka服务器上,将服务消费方放在peer2Eureka服务器上,通过两台服务高可用互相备份,最终访问通过,网上说必须放在同一Eureka服务器上个并不一致

    42930

    Spring Cloud(一)服务注册发现Eureka

    Spring Cloud是一个基于Spring Boot实现云应用开发工具,它为基于JVM云应用开发中涉及配置管理、服务发现、断路器、智能路由、代理、控制总线、全局锁、决策竞选、分布式会话集群状态管理等操作提供了一种简单开发方式...简单来说,一个系统不同模块转变成不同服务!而且服务可以使用不同技术加以实现! 微服务设计 那我们在微服务中应该怎样设计呢。...需要关心微服务业务范围,而不是服务数量规模尽量小。数量规模需要依照业务功能而定。 于SOA不同,某个微服务功能、操作和消息协议尽量简单。...它主要提供模块包括:服务发现Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。...Eureka Server 提供服务注册发现 添加依赖 在项目 spring-cloud-eureka-service pom.xml中引入需要依赖内容: <groupId

    808100

    .NET Core微服务之基于Steeltoe使用Eureka实现服务注册发现

    Spring Cloud是一个基于Java成熟服务全家桶架构,它为配置管理、服务发现、熔断器、智能路由、代理、控制总线、分布式会话集群状态管理等操作提供了一种简单开发方式,已经在国内众多大中小型公司有实际应用案例...二、快速构建Eureka Server   (1)使用IDE (我使用是IntelljIdea)新建一个Spring Boot应用程序   (2)pom.xml中增加Spring Cloud依赖Eureka...至于Eureka自我保护机制,这是因为Eureka考虑到生产环境中可能存在网络分区故障,会导致微服务Eureka Server之间无法正常通信。...五、小结   本文简单地介绍了一下SteeltoeSpring Cloud,然后演示了一下基于Steeltoe使得ASP.NET Core应用程序Spring Cloud Eureka进行集成以实现服务注册发现效果...Steeltoe使用》 nerocloud,《Spring Cloud .NET Core 实现微服务架构》 龙应辉,《Spring Cloud + .NET Core 搭建微服务架构》 作者:

    1.4K50

    使用 Docker Traefik v2 搭建 RSS 服务(Miniflux)

    .html ---- 使用 Docker Traefik v2 搭建 RSS 服务(Miniflux) 之前提过,接下来要针对去年老文章,聊聊如何升级老应用。...写在前面 去年写过三篇使用 Docker 搭建 RSS 服务文章,适逢升级 Traefik ,暂以下面搭建 RSS 服务文章第一篇为例,聊聊在 2020 年初,如何升级这类应用/服务使用 Docker...使用 Docker 搭建你自己 RSS 服务(stringer):https://soulteary.com/2019/01/06/build-your-own-rss-service-with-docker-stringer.html...使用 Docker 搭建你自己 RSS 服务(FreshRSS):https://soulteary.com/2019/01/05/build-your-own-rss-service-with-docker-freshrss.html...如果你还不太了解 Traefik,可以参考 《Traefik 2 使用指南,愉悦开发体验 》、配置基于Traefik v2 Web 服务器 先行了解掌握 Traefik v2 相关知识。

    64910

    使用 Docker Traefik v2 搭建 RSS 服务(Miniflux)

    .html ----- 使用 Docker Traefik v2 搭建 RSS 服务(Miniflux) 之前提过,接下来要针对去年老文章,聊聊如何升级老应用。...写在前面 去年写过三篇使用 Docker 搭建 RSS 服务文章,适逢升级 Traefik ,暂以下面搭建 RSS 服务文章第一篇为例,聊聊在 2020 年初,如何升级这类应用/服务使用 Docker...使用 Docker 搭建你自己 RSS 服务(stringer):https://soulteary.com/2019/01/06/build-your-own-rss-service-with-docker-stringer.html...使用 Docker 搭建你自己 RSS 服务(FreshRSS):https://soulteary.com/2019/01/05/build-your-own-rss-service-with-docker-freshrss.html...如果你还不太了解 Traefik,可以参考 《Traefik 2 使用指南,愉悦开发体验 》、配置基于Traefik v2 Web 服务器 先行了解掌握 Traefik v2 相关知识。

    82200

    服务注册发现:如何集成Eureka Server?

    如何集成Eureka Server 本节将创建一个基于Eureka Server实现注册服务器。...更改build.gradle配置 hello-world相比, micro-weather-eureka-server 应用build.gradle 配置变化,主要体现在以下几点。...: 值为false 意味着自身仅作为服务器,不作为客户端; eureka.client.fetchRegstry:值为false 意味着无须注册自身; ● eureka.client.serviceUrl.defaultZone...启动 启动应用,访问htt:/tcalhost:8761,可以看到如图8-1所示Eureka Server自带UI管理界面。 自此,Eureka Server注册服务器搭建完毕。...本文就是愿天堂没有BUG给大家分享内容,大家有收获的话可以分享下,想学习更多的话可以到信公众号里找我,我等你哦。

    40120

    SpringCloud-微服务注册发现Eureka(二)

    它利用Spring Boot开发便利性巧妙地简化了分布式系统基础设施开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot开发风格做到一键启动部署...Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发比较成熟、经得起实际考验服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂配置实现原理,最终给开发者留出了一套简单易懂...二、微服务注册发现-Eureka Eureka是Netflix开源服务发现组件,本身是基于Rest服务,它包含服务客户端两部分;在SpringCloud中将它集成在其中,从而实现了微服务发现注册...综上所述,我们可以看出来Eureka两个组件EurekaServerEurekaClient作用: EurekaServer 提供服务发现能力,各个微服务启动时,会向EurekaServer注册自己信息...至此,完成了Eureka高可用; 示例代码:https://gitee.com/lfalex/springcloud-example.git 参考书籍:《SpringCloudDocker服务架构实战

    29.7K41

    玩转SpringCloud(F版本) 一.服务注册发现Eureka

    一.服务注册发现Eureka) spring cloud 为开发人员提供了快速构建分布式系统一些工具,包括配置管理、服务发现、断路器、路由、代理、事件总线、全局锁、决策竞选、分布式会话等等 1...配合yml文件使用Eureka:   Client:     registerWithEureka: false     fetchRegistry: false yml配置: server:...No application available 表示没有服务发现 因为我们还没有注册服务当然没有发现服务啦, 2)创建一个服务提供者 (eureka client) 项目架构: ?...serviceUrl: defaultZone: http://localhost:8761/eureka/ 需要指明spring.application.name,这个很重要,这在以后服务服务之间相互调用一般都是根据这个...你会发现一个服务已经注册在服务中了,服务名为SERVICE-HI 关于红色字体警告解释: https://www.cnblogs.com/breath-taking/articles/7940364.

    55730

    深入了解Spring Cloud服务注册发现组件Eureka

    本文将深入介绍Spring Cloud中Eureka组件,包括其背景、特性、工作原理以及与其他Spring Cloud组件配合使用等方面,帮助读者更好地理解使用Eureka。...Spring CloudEureka组件正是为了解决服务注册发现问题而设计开发。 Background(背景) 首先,让我们了解一下Eureka背景。...Eureka最早由Netflix开源,并成为了Spring Cloud生态系统中一个重要组件。它设计目标是提供一个高可用服务注册发现系统,可以自动化地管理监控微服务应用状态位置。...Features(特性) Eureka具有许多强大特性,使其成为构建可靠可扩展服务架构理想选择。 服务注册发现Eureka通过提供一个可插拔客户端库来实现服务注册发现。...通过学习和了解Eureka,开发人员可以更好地构建基于微服务架构分布式系统,实现高可用性、弹性容错性等关键要素。希望本文对读者在使用Eureka构建微服务架构方面提供了一定帮助指导。

    22610

    《SpringCloud篇:001Eureka服务注册发现入门篇》

    这些服务围绕业务功能构建,并且可以由全自动部署机制独立部署。这些 服务集中管理几乎没有,它可以用不同编程语言编写并使用不同数据存储 技术。 1、 微服务架构只是一个样式,一个风格。...- 服务注册发现 - Ribbon - 服务之间负载均衡 - Feign - 服务之间通讯 - Hystrix - 服务线程隔离以及断路器 - Zuul - 服务网关 -.../actuator/info 二、服务注册发现-Eureka【重点】 2.1概述 搭建EurekaServerEureka就是帮助我们维护所有服务信息,以便服务之间相互调用 - 服务调用方需要维护大量服务提供方地址信息...- 如果服务提供方出现了宕机等问题,服务调用方无法感知。 - 使用Eureka来管理所有服务地址信息以及是否存活,服务注册发现 ?...注册中心 //@EnableDiscoveryClient // 代表要注册到注册中心上,可能是其他注册中心,Zookeeper,Nacos,Console,Redis , 服务注册发现

    32410

    SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册发现,nacoseureka区别,服务雪崩、服务熔断、服务降级,微服务监控

    Spring Cloud如何实现服务注册发现2.1 Eureka作用2.2 服务注册发现是什么意思?...Spring Cloud 如何实现服务注册发现2.3 Nacos工作流程2.4 我看你之前也用过nacos、你能说下nacoseureka区别?...Spring Cloud如何实现服务注册发现服务中必须要使用组件,考察我们使用服务程度注册中心核心作用是:服务注册发现常见注册中心:eureka、nocas、zookeeper我做过哪个微服务项目...,使用了哪个注册中心2.1 Eureka作用2.2 服务注册发现是什么意思?...简历上有体现面试官比较熟悉nacoseurekanacoseureka区别Nacoseureka共同点(注册中心)都支持服务注册和服务拉取都支持服务提供者心跳方式做健康检测NacosEureka

    12910

    Python中容器化服务架构:从Docker服务发现负载均衡

    三、服务间通信在微服务架构中,服务之间通信通常通过HTTP或消息队列进行。以下示例展示了如何使用HTTP通信。3.1 API网关创建一个API网关来整合用户服务订单服务。...:5000/users订单服务: http://localhost:5000/orders四、服务发现负载均衡在微服务架构中,服务发现负载均衡是关键组件。...服务发现用于跟踪运行中服务实例,负载均衡则在多个服务实例之间分发请求。以下示例展示了如何在Python微服务架构中实现服务发现负载均衡。...4.1 使用Consul进行服务发现Consul是一个流行服务发现配置工具。我们将使用Consul来注册发现我们服务。...从基础DockerFlask入门,到使用Consul进行服务发现Traefik进行负载均衡,再到Elastic Stack日志管理Jaeger分布式追踪,涵盖了微服务架构各个关键环节。

    9910

    【玩转Lighthouse】docker自建Syncthing发现服务中继服务

    具体分布可以查看Syncthing项目的中继服务分布 但为了提高文件同步效率,我们可以通过自建发现服务器(discovery-server)中继服务器(relay-server)方法。...二、docker部署发现服务中继服务器 version: "3" services: # 自建syncthing发现服务器 discovery-servier syncthing_discovery_server...文件 在Lighthouse中防火墙放行相对应端口,此处放行所有的port端口,即8443,22067端口 建好后,发现服务中继服务器各自会生成**device ID**,同时,会生成自签名证书和数据库.../endpoint.同样也是利用Syncthing项目的发现服务 中继服务 通过侦听程序设备发现数量,可以判断客户端是否成功连接上了自建服务 关于发现服务https证书来源 为了安全起见,发现服务器是利用...ID 高级中设置地址列表表示寻找其他设备发现服务器,用默认 dynamic即可, dynamic表示用局域网发现全球发现服务器寻找设备 The word dynamic (without any

    6.8K61
    领券