轉載自:https://my.oschina.net/kousm/blog/2249003
服務端
application.yml配置
-
spring:
-
application:
-
name: eureka-service
-
eureka:
-
client:
-
fetch-registry:
'false'
-
register-
with-eureka:
'false'
-
server:
-
enable-self-preservation: false
-
eviction-interval-timer-
in-ms:
100
-
#eureka服務器端口
-
server:
-
port:
'21001'
EurekaApplication.java
-
package org.gradle;
-
-
import org.springframework.boot.SpringApplication;
-
import org.springframework.boot.autoconfigure.SpringBootApplication;
-
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
-
-
@EnableEurekaServer
//作為服務端注解
-
@SpringBootApplication
-
public
class EurekaApplication {
-
-
public static void main(String[] args) throws Exception {
-
SpringApplication.run(EurekaApplication.class, args);
-
}
-
-
}
客戶端
application.yml
-
server:
-
port:
'21002'
-
eureka:
-
client:
-
serviceUrl:
-
defaultZone: http://服務端ip:21001/eureka/
-
instance:
-
instance-id:
test-client
-
hostname: cloud-provider
-
preferIpAddress:
true
-
ip-address: 客戶端ip
-
spring:
-
application:
-
name:
test-client
-
http:
-
encoding:
-
force:
true
-
charset: UTF-8
-
enabled:
true
主入口類Application.java
-
package org.gradle;
-
-
import org.springframework.boot.SpringApplication;
-
import org.springframework.boot.autoconfigure.SpringBootApplication;
-
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-
-
@EnableDiscoveryClient
-
@SpringBootApplication
-
public
class ApplicationClient {
-
public static void main(String[] args) throws Exception {
-
SpringApplication.run(ApplicationClient.class, args);
-
}
-
}
Controller類Person.java
-
package
org
.gradle;
-
-
import
org
.springframework
.web
.bind
.annotation
.RequestMapping;
-
import
org
.springframework
.web
.bind
.annotation
.RestController;
-
-
@
RestController
-
public class Person {
-
@
RequestMapping("/
getName")
-
public String getName() {
-
return "
hello
eureka";
-
}
-
}
eureka的服務注冊中心可以正常啟動起來,在啟動客戶端的服務的時候無法連接上注冊中心。
部分報錯信息如下:
-
2018-
10-
18
17
:
23
:
42.727 INFO
7852 --- [ main] com.netflix.discovery.DiscoveryClient : Application is null :
false
-
2018-
10-
18
17
:
23
:
42.727 INFO
7852 --- [ main] com.netflix.discovery.DiscoveryClient : Registered Applications size is zero :
true
-
2018-
10-
18
17
:
23
:
42.727 INFO
7852 --- [ main] com.netflix.discovery.DiscoveryClient : Application version is -
1:
true
-
2018-
10-
18
17
:
23
:
42.727 INFO
7852 --- [ main] com.netflix.discovery.DiscoveryClient : Getting all instance registry info from the eureka server
-
2018-
10-
18
17
:
23
:
44.792 ERROR
7852 --- [ main] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error
-
-
com.sun.jersey.api.client.
ClientHandlerException: java.net.
ConnectException: Connection
refused: connect
-
at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.
java:
187) ~[jersey-apache-client4-
1.19.
1.
jar:
1.19.
1]
-
at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.
java:
123) ~[jersey-client-
1.19.
1.
jar:
1.19.
1]
-
at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.
java:
27) ~[eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.sun.jersey.api.client.Client.handle(Client.
java:
652) ~[jersey-client-
1.19.
1.
jar:
1.19.
1]
-
at com.sun.jersey.api.client.WebResource.handle(WebResource.
java:
682) ~[jersey-client-
1.19.
1.
jar:
1.19.
1]
-
at com.sun.jersey.api.client.WebResource.access$200(WebResource.
java:
74) ~[jersey-client-
1.19.
1.
jar:
1.19.
1]
-
at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.
java:
509) ~[jersey-client-
1.19.
1.
jar:
1.19.
1]
-
at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplicationsInternal(AbstractJerseyEurekaHttpClient.
java:
194) ~[eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplications(AbstractJerseyEurekaHttpClient.
java:
165) ~[eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.
java:
137) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.
java:
73) ~[eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.
java:
134) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.
java:
137) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.executeOnNewServer(RedirectingEurekaHttpClient.
java:
118) ~[eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.
java:
79) ~[eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.
java:
134) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.
java:
137) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.
java:
119) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.
java:
134) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.
java:
137) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.
java:
77) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.
java:
134) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.
java:
1022) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.
java:
936) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.
java:
412) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.
java:
267) [eureka-client-
1.7.
0.
jar:
1.7.
0]
-
at org.springframework.cloud.netflix.eureka.CloudEurekaClient.<init>(CloudEurekaClient.
java:
61) [spring-cloud-netflix-eureka-client-
1.4.
0.RELEASE.
jar:
1.4.
0.RELEASE]
-
at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration.eurekaClient(EurekaClientAutoConfiguration.
java:
261) [spring-cloud-netflix-eureka-client-
1.4.
0.RELEASE.
jar:
1.4.
0.RELEASE]
-
at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration$$EnhancerBySpringCGLIB$$
5d9ea2ca.CGLIB$eurekaClient$0(<generated>) [spring-cloud-netflix-eureka-client-
1.4.
0.RELEASE.
jar:
1.4.
0.RELEASE]
-
at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration$$EnhancerBySpringCGLIB$$
5d9ea2ca$$FastClassBySpringCGLIB$$
1d2b2b2c.invoke(<generated>) [spring-cloud-netflix-eureka-client-
1.4.
0.RELEASE.
jar:
1.4.
0.RELEASE]
-
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.
java:
228) [spring-core-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.
java:
358) [spring-context-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration$$EnhancerBySpringCGLIB$$
5d9ea2ca.eurekaClient(<generated>) [spring-cloud-netflix-eureka-client-
1.4.
0.RELEASE.
jar:
1.4.
0.RELEASE]
-
at sun.reflect.NativeMethodAccessorImpl.invoke
0(Native Method) ~[
na:
1.8.
0_151]
-
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:
62) ~[
na:
1.8.
0_151]
-
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.
java:
43) ~[
na:
1.8.
0_151]
-
at java.lang.reflect.Method.invoke(Method.
java:
498) ~[
na:
1.8.
0_151]
-
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.
java:
162) [spring-beans-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.
java:
588) [spring-beans-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.
java:
1173) [spring-beans-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.
java:
1067) [spring-beans-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.
java:
513) [spring-beans-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.
java:
483) [spring-beans-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.
java:
345) [spring-beans-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.cloud.context.scope.GenericScope$BeanLifecycleWrapper.getBean(GenericScope.
java:
379) [spring-cloud-context-
1.3.
0.RELEASE.
jar:
1.3.
0.RELEASE]
-
at org.springframework.cloud.context.scope.GenericScope.get(GenericScope.
java:
181) [spring-cloud-context-
1.3.
0.RELEASE.
jar:
1.3.
0.RELEASE]
-
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.
java:
340) [spring-beans-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.
java:
197) [spring-beans-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.
java:
35) [spring-aop-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration.getTargetObject(EurekaRegistration.
java:
166) [spring-cloud-netflix-eureka-client-
1.4.
0.RELEASE.
jar:
1.4.
0.RELEASE]
-
at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration.getEurekaClient(EurekaRegistration.
java:
155) [spring-cloud-netflix-eureka-client-
1.4.
0.RELEASE.
jar:
1.4.
0.RELEASE]
-
at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry.maybeInitializeClient(EurekaServiceRegistry.
java:
56) [spring-cloud-netflix-eureka-client-
1.4.
0.RELEASE.
jar:
1.4.
0.RELEASE]
-
at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry.register(EurekaServiceRegistry.
java:
37) [spring-cloud-netflix-eureka-client-
1.4.
0.RELEASE.
jar:
1.4.
0.RELEASE]
-
at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaAutoServiceRegistration.start(EurekaAutoServiceRegistration.
java:
80) [spring-cloud-netflix-eureka-client-
1.4.
0.RELEASE.
jar:
1.4.
0.RELEASE]
-
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.
java:
175) [spring-context-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.
java:
50) [spring-context-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.
java:
348) [spring-context-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.
java:
151) [spring-context-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.
java:
114) [spring-context-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.
java:
880) [spring-context-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.
java:
144) [spring-boot-
1.5.
9.RELEASE.
jar:
1.5.
9.RELEASE]
-
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.
java:
546) [spring-context-
4.3.
13.RELEASE.
jar:
4.3.
13.RELEASE]
-
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.
java:
122) [spring-boot-
1.5.
9.RELEASE.
jar:
1.5.
9.RELEASE]
-
at org.springframework.boot.SpringApplication.refresh(SpringApplication.
java:
693) [spring-boot-
1.5.
9.RELEASE.
jar:
1.5.
9.RELEASE]
-
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.
java:
360) [spring-boot-
1.5.
9.RELEASE.
jar:
1.5.
9.RELEASE]
-
at org.springframework.boot.SpringApplication.run(SpringApplication.
java:
303) [spring-boot-
1.5.
9.RELEASE.
jar:
1.5.
9.RELEASE]
-
at org.springframework.boot.SpringApplication.run(SpringApplication.
java:
1118) [spring-boot-
1.5.
9.RELEASE.
jar:
1.5.
9.RELEASE]
-
at org.springframework.boot.SpringApplication.run(SpringApplication.
java:
1107) [spring-boot-
1.5.
9.RELEASE.
jar:
1.5.
9.RELEASE]
-
at org.gradle.ApplicationClient.main(ApplicationClient.
java:
11) [bin/
:na]
-
Caused
by: java.net.
ConnectException: Connection
refused: connect
-
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[
na:
1.8.
0_151]
-
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.
java:
85) ~[
na:
1.8.
0_151]
-
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.
java:
350) ~[
na:
1.8.
0_151]
-
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.
java:
206) ~[
na:
1.8.
0_151]
-
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.
java:
188) ~[
na:
1.8.
0_151]
-
at java.net.PlainSocketImpl.connect(PlainSocketImpl.
java:
172) ~[
na:
1.8.
0_151]
-
at java.net.SocksSocketImpl.connect(SocksSocketImpl.
java:
392) ~[
na:
1.8.
0_151]
-
at java.net.Socket.connect(Socket.
java:
589) ~[
na:
1.8.
0_151]
-
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.
java:
121) ~[httpclient-
4.5.
3.
jar:
4.5.
3]
-
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.
java:
180) ~[httpclient-
4.5.
3.
jar:
4.5.
3]
-
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.
java:
144) ~[httpclient-
4.5.
3.
jar:
4.5.
3]
-
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.
java:
134) ~[httpclient-
4.5.
3.
jar:
4.5.
3]
-
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.
java:
610) ~[httpclient-
4.5.
3.
jar:
4.5.
3]
-
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.
java:
445) ~[httpclient-
4.5.
3.
jar:
4.5.
3]
-
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.
java:
835) ~[httpclient-
4.5.
3.
jar:
4.5.
3]
-
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.
java:
118) ~[httpclient-
4.5.
3.
jar:
4.5.
3]
-
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.
java:
56) ~[httpclient-
4.5.
3.
jar:
4.5.
3]
-
at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.
java:
173) ~[jersey-apache-client4-
1.19.
1.
jar:
1.19.
1]
-
...
68 common frames omitted
通過網上搜索,大部分的回答如下幾種
一、客戶端配置文件中關鍵字需准守駝峰命名方式
-
eureka:
-
client:
-
serviceUrl:
-
defaultZone: http:
//localhost:21001/eureka/
上述代碼中的serviceUrl不應使用service-url,defaultZone不應使用default-zone
二、eureka服務端應關閉鑒權
需要在服務器端的配置文件中加入關閉鑒權的代碼
-
security:
-
basic:
-
enabled:
false
三、如果啟動eureka服務端報這種錯誤,則需要禁止服務端作為客戶端注冊。默認情況下eureka的服務注冊中心會將自己作為客戶端來嘗試注冊。
需要在服務端的配置文件中加入禁止注冊的代碼
-
eureka:
-
client:
-
fetch-registry:
'false'
-
register-
with-eureka:
'false'
但是,上述三種方式依然沒有解決我遇到的問題,最后發現是因為我客戶端的配置文件位置放錯了
application.yml文件應直接放在resources目錄下:
重新啟動服務,OK,成功。
原文地址;https://blog.csdn.net/qq_40460909/article/details/86248390