Nano Hash - криптовалюты, майнинг, программирование

Не могу зарегистрировать свои микросервисы в Eureka

У меня настроен сервер Eureka (он работает, так как я могу подключиться к нему и видеть консоль Eureka), но мой микросервис не регистрируется в нем. Я получаю ошибку сервера 403 (Запрещено). Конфигурация аутентификации в микросервисе, пытающемся зарегистрироваться, выглядит нормально, как будто я намеренно установил ее неправильно, я получаю 401.

Моя конфигурация градиента:

buildscript {
    ext {
        springBootVersion = '2.0.5.RELEASE'
        gradleDockerVersion   = '1.2'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "io.spring.gradle:dependency-management-plugin:0.5.6.RELEASE"
        classpath("se.transmode.gradle:gradle-docker:${gradleDockerVersion}")
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}
ext {
    springCloudVersion = 'Finchley.RELEASE'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
        mavenBom("org.springframework.boot:spring-boot-dependencies:${springBootVersion}")
        mavenBom 'org.springframework.cloud:spring-cloud-netflix:2.0.1.RELEASE'
    }
}

Это моя конфигурация. Я включил его в bootstrap.yaml и на сервере конфигурации, чтобы убедиться:

eureka:
  client:
    serviceUrl:
      defaultZone: http://myuserid:mypassword@localhost:8761/eureka/

Но почему-то игнорируется. Корнем этого свойства является "eureka", а не "spring.eureka..."?

Вот журнал ошибок в микросервисе, который, кажется, пытается использовать локальный хост и стандартный порт 8080, поэтому игнорирует приведенную выше конфигурацию.

2018-09-28 09:31:12.763  INFO 58552 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_MTPMS_WEATHER/localhost:mtpms_weather:8080: registering service...
2018-09-28 09:31:12.767  INFO 58552 --- [  restartedMain] o.s.c.support.DefaultLifecycleProcessor  : Starting beans in phase 2147483647
2018-09-28 09:31:12.768  INFO 58552 --- [  restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
2018-09-28 09:31:12.803  WARN 58552 --- [nfoReplicator-0] c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failure with status code 403; retrying on another server if available
2018-09-28 09:31:12.808  WARN 58552 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_MTPMS_WEATHER/localhost:mtpms_weather:8080 - registration failed Cannot execute request on any known server

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
    at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112) ~[eureka-client-1.9.3.jar:1.9.3]

Ответы:


1

Наконец-то я обнаружил, что в текущем сервере Eureka есть ошибка, описанная в этом ответе:

https://github.com/spring-cloud/spring-cloud-netflix/issues/2754#issuecomment-372808529

Таким образом, добавление следующего фрагмента кода @EnableWebSecurity в класс сервера приложений Gateway Spring Boot исправляет это:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@Configuration
@EnableAutoConfiguration
@EnableEurekaServer
@SpringBootApplication
public class DiscoveryApplication {
    public static void main(String[] args) {
        new SpringApplicationBuilder(DiscoveryApplication.class).run(args);
    }

    @EnableWebSecurity
    static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable();
        }
    }
}
28.09.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..