Использование Consul как Service Discovery и хранилище конфигурации. Часть 1
Что-то взбрело мне тут в голову отказываться от Netlfix стека при написании своих микросервисов. В основном что используется? Eureka – как service discovery, Cloud config (хотя он Spring’овый, но мне не шибко нравится). В данный момент я решил отказаться именно от них. Потом прикручу ещё что-то из Spring Cloud.
Consul изначально был росто как service discovery, теперь уже полноценный инструмент для обеспечения service mesh.
Ну что ж, запустим сначала его. Буду описывать пример для docker-compose (использую его, потому что обычно для проекта мало одного docker образа).
Создаём наш docker-compose.yml
version: "3.9"
services:
consul:
container_name: consul
build: consul
image: consul:1.14.2
ports:
- "8500:8500"
И можем запустить его через
docker-compose up -d
Чтобы убедиться, что наш Consul запустился перейдём на страницу http://localhost:8500/ui/ и увидим там главную страницу Consul
Значит у нас тут всё хорошо. Теперь подключим наше приложение к Consul. Для этого нам потребуется пара spring boot starter’ов и лёгкой конфигурации
dependencies {
implementation platform('org.springframework.cloud:spring-cloud-dependencies:2022.0.0')
implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-consul-discovery'
}
После чего создаём наш класс для проверки подключения к Consul
package ru.maksimvoloshin.consul;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String... args) {
SpringApplication.run(App.class, args);
}
}
И добавляем немного конфигурации (хотя я уверен, что автоконфигурация подключится к Consul по умолчанию, на стандартный хост и порт Consul’а) в src/main/resources/application.yaml
spring:
application:
name: check-consul
cloud:
consul:
discovery:
enabled: true
Запускаем наше приложение и убеждаемся, что оно запустилось
После чего открываем обратно Consul UI и видим там наше приложение
Для того, чтобы Consul понимал, что приложение живое, нам потребуется подключить Spring Boot Actuator, чтобы он нормально отдавал health check’и
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'
После перезапуска приложения, мы увидим, что все health check’и в норме
Таким образом мы заменили Netlfix’овскую Eureka на HashiCorp Consul.
В следующей части расскажу, как использовать встроенный в HashiCorp Consul Key/Value хранилище и подключить его к Spring Boot приложению.
1 комментарий
[…] что же, как я писал в первой части, мы подключили HashiCorp Consul в качестве Service Discovery. Теперь […]