将服务注册到eureka服务端

1、将服务注册到eureka server

首先在客户端的服务里添加依赖:

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

然后在app里添加客户端注解:

@EnableEurekaClient    #仅对eureka可用

或者:

@EnableDiscoveryClient    #可以发现别的客户端组件,不限于eureka

然后修改配置文件application.yml:

spring:
	application:
		name: microservice-h2    #全部小写,注册于eureka server上的服务名称,不写名称显示为UNKNOW

eureka:
	client:
	    service-url:
	        defaultZone: http://localhost:8761/eureka    #eureka server位置

启动服务之后,查看server如下:

2、调整主机名为IP显示

在yml中添加以下配置:

eureka:
  instance:
    prefer-ip-address: true #默认是false,设为true之后当鼠标放在服务状态上之后显示服务的ip

重启服务,效果如下图:

3、调整状态显示的名称

在yml中添加以下配置:

eureka:
  instance:
    instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}

重启服务,效果如下图:


和上面的图做个对比,发现前面的主机名没有了,这是因为默认的"eureka.instance.instance-id"是:

${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${server.port}}}

这里修改之后将前面的主机名给去掉了。

4、添加安全验证

在yml中添加以下配置:

spring:
  security:
    user:
      name: user
      password: password
eureka:
  client:
    service-url:
      defaultZone: http://user:password@localhost:8761/eureka #把eureka部到哪个url下

修改pom.xml,添加security依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>

重启项目,就会发现登录eureka server就需要登录,如下图:


用户名,密码就是yml文件里配置的用户名和密码。

eureka server访问的url前加上user:password@即可实现在访问时先登录,此处的user要和spring.security.user.name的值保持一致;passwordspring.security.user.password保持一致。

5、客户端添加认证

添加认证之后的服务端,客户端是无法注册上去的,会报出如下错误:

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.8.8.jar:1.8.8]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.8.8.jar:1.8.8]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) ~[eureka-client-1.8.8.jar:1.8.8]
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.8.8.jar:1.8.8]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.8.8.jar:1.8.8]
	at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1051) [eureka-client-1.8.8.jar:1.8.8]
	at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:965) [eureka-client-1.8.8.jar:1.8.8]
	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:414) [eureka-client-1.8.8.jar:1.8.8]
	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:269) [eureka-client-1.8.8.jar:1.8.8]
        ...

所以修改客户端的yml如下:

eureka:
  client:
    service-url:
      defaultZone: http://user:password@localhost:8761/eureka

此处的用户名和密码要和server中设置的用户名和密码保持一致。

重启服务之后就会发现服务已注册到eureka server上:



猜你喜欢

转载自blog.csdn.net/u014774648/article/details/80222463