20
votes

We have an infrastructure with service discovery and load balancing (i.e. server side with STM and weblogic cluster). Now we are in the process of refactoring into micro-services. We would need an API gateway which does basic routing to other microservices. Netflix Zuul looks a good candidate however I could not get Zuul working without Eureka - but we do not need Eureka since we already have service discovery and load balancing in place.

  1. Is it possible to use Zuul without Eureka and Ribbon?
  2. If yes please provide some guild-lines since the there's no mention about in the wiki.

Thanks.

3

3 Answers

26
votes

Yes, it is totally possible.You have to use @EnableZuulProxy on your config class and config it something like this :

zuul:
  routes:
    yourService:
      path: /yourService/**
      serviceId: yourService

ribbon:
  eureka:
    enabled: false

yourService:
  ribbon:
    listOfServers: localhost:8080
3
votes

A sample usage can be like this:

shared.microservice.customer.service1.url=zttp://127.0.0.1:8080/shared/microservice/customer/

shared.microservice.customer.service2.url=zttp://127.0.0.1:8181/shared/microservice/customer/

ribbon.eureka.enabled = false

zuul.routes.customer-micro-service.path: /shared/microservice/customer/**

zuul.routes.customer-micro-service.serviceId: customers
customers.ribbon.listOfServers = 

zttp://ip:port1/shared/microservice/customer/,zttp://ip2:port2/shared/microservice/customer/
1
votes

Yes, Of course you can. Actually, by default, if you use @EnableZuulProxy with the Spring Boot Actuator, you enable two additional endpoints:

  • Routes
  • Filters

application.yaml

zuul:
  routes:
    users:
      path: /myusers/**
      url: https://example.com/users_service

These simple url-routes do not get executed as a HystrixCommand, nor do they load-balance multiple URLs with Ribbon.

Yo can get more information from here.