Auto-configure routes with Zuul and Eureka

天大地大妈咪最大 提交于 2019-12-23 05:27:53

问题


Through reading various books / tutorials, it appears that it is possible to auto-configure routes in Zuul when using it in combination with Eureka service discovery. That means that I don't have to explicitly add routes to Zull's application.properties.

So I understand this correctly? Or do I still need to add routes explicitly to Zuul in order it to work as a gateway?

I would like it to automatically create routes from the application name's that are registered with Eureka. Is this possible?

(Note: I have actually tried this, but when I go to http://localhost:8762/routes I just get an error page.)


回答1:


Sure. In most microservices implementations, internal microservices endpoints are not exposed outside. A set of public services will be exposed to the clients using an API gateway.

The zuul proxy internally uses the Eureka Server for service discovery.

  1. I would like it to automatically create routes from the application name's that are registered with Eureka. Is this possible?

Sure. I will show you gateway example.

1. Create your service project (user-service)

create application.properties file

# --- Spring Config
spring:
  application:
    name: OVND-USER-SERVICE

# Eureka client
eureka:
  client:
    serviceUrl:
      defaultZone: ${EUREKA_URL:http://localhost:8761/eureka/}

2. Setting up Zuul project (Gateway-service)

1.@EnableZuulproxy to tell Spring Boot that this is a Zuul proxy

@SpringBootApplication
@EnableZuulProxy
@EnableDiscoveryClient
public class GatewayServiceApplication {

2.create an application.properties file

# =======================================
# Gateway-service Server Configuration
# =======================================

# --- Spring Config
spring:
  application:
    name: gateway-service

server:
  port: ${PORT:8080}

# Eureka client
eureka:
  client:
    serviceUrl:
      defaultZone: ${EUREKA_URL:http://localhost:8761/eureka/}

zuul:
  host:
  routes:
    ## By default, all requests to user service for example will start with: "/user/"
    ## What will be sent to the user service is what comes after the path defined,
    ## So, if request is "/user/v1/user/tedkim", user service will get "/v1/user/tedkim".
    user-service:
      path: /user/**
      service-id: OVND-USER-SERVICE
    another-service:
      path: /another/**
      service-id: OVND-ANOTHER-SERVICE

Eureka website ( localhost:8761 )




回答2:


Yes. You can integrate Zuul with Eureka and configure the routes based on application names registered in Eureka. Just add the following configuration to Zuul application:

zuul:
  ignoredServices: "*"
  routes:
    a-service: /a-service/**
    b-service: /b-service/**
    c-service: /c-service/**
    d-service: /d-service/**


来源:https://stackoverflow.com/questions/52580597/auto-configure-routes-with-zuul-and-eureka

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!