我正在使用Docker Toolbox
及其附带的Oracle VM
。
自动注册在docker
之外正常工作。
当我将其作为container
运行时,我可以使用192.168.99.100:8761
浏览器中的192.168.99.100:8080
和VM
来查看它们。只是client
注册的eureka-service
无效。
我还尝试使用network
关联它们,当我inspect
network
时,它向我显示两个容器都在network
中。但是客户端仍然没有在eureka-service
中注册自己。
EUREKA-SERVICE
application.yml:
server:
port: 8761
eureka:
instance:
prefer-ip-address: true
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://192.168.99.100:8761/
bootstrap.yml:
spring:
application:
name: eureka-service
MICROSERVICE(客户)
application.properties
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/shop
spring.datasource.username=shop
spring.datasource.password=shop
server.port=8080
application.yml
server:
port: 8080
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://192.168.99.100:8761/
//IP of the VM:EUREKA PORT
docker-compose.yml
spring:
jpa:
database: MYSQL
hibernate:
ddl-auto: validate
datasource:
url: jdbc:mysql://mysql:3306/shop
username: shop
password: shop
driver-class-name: com.mysql.jdbc.Driver
答案 0 :(得分:1)
将日志级别设置为info,并在启动应用程序时检查应用程序日志,注意这些日志:
2018-03-26 17:00:42.618 INFO [,] [10460] [main] com.netflix.discovery.DiscoveryClient: Disable delta property : false
2018-03-26 17:00:42.618 INFO [,] [10460] [main] com.netflix.discovery.DiscoveryClient: Single vip registry refresh property : null
2018-03-26 17:00:42.619 INFO [,] [10460] [main] com.netflix.discovery.DiscoveryClient: Force full registry fetch : false
2018-03-26 17:00:42.619 INFO [,] [10460] [main] com.netflix.discovery.DiscoveryClient: Application is null : false
2018-03-26 17:00:42.619 INFO [,] [10460] [main] com.netflix.discovery.DiscoveryClient: Registered Applications size is zero : true
2018-03-26 17:00:42.619 INFO [,] [10460] [main] com.netflix.discovery.DiscoveryClient: Application version is -1: true
2018-03-26 17:00:42.619 INFO [,] [10460] [main] com.netflix.discovery.DiscoveryClient: Getting all instance registry info from the eureka server
2018-03-26 17:00:42.785 INFO [,] [10460] [main] com.netflix.discovery.DiscoveryClient: The response status is 200
2018-03-26 17:00:42.786 INFO [,] [10460] [main] com.netflix.discovery.DiscoveryClient: Starting heartbeat executor: renew interval is: 5
2018-03-26 17:00:42.788 INFO [,] [10460] [main] com.netflix.discovery.InstanceInfoReplicator: InstanceInfoReplicator onDemand update allowed rate per min is 4
2018-03-26 17:00:42.792 INFO [,] [10460] [main] com.netflix.discovery.DiscoveryClient: Discovery Client initialized at timestamp 1522054842792 with initial instances count: 1
2018-03-26 17:00:42.822 INFO [,] [10460] [main] org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry: Registering application service-testServerConsumer with eureka with status UP
2018-03-26 17:00:42.823 INFO [,] [10460] [main] com.netflix.discovery.DiscoveryClient: Saw local status change event StatusChangeEvent [timestamp=1522054842823, current=UP, previous=STARTING]
2018-03-26 17:00:42.826 INFO [,] [10460] [DiscoveryClient-InstanceInfoReplicator-0] com.netflix.discovery.DiscoveryClient: DiscoveryClient_SERVICE-TESTSERVERCONSUMER/10.234.97.21:service-testServerConsumer:8101: registering service...
2018-03-26 17:00:42.881 INFO [,] [10460] [DiscoveryClient-InstanceInfoReplicator-0] com.netflix.discovery.DiscoveryClient: DiscoveryClient_SERVICE-TESTSERVERCONSUMER/10.234.97.21:service-testServerConsumer:8101 - registration status: 204
检查注册状态是否为204。
如果没有找到,请检查网络问题,如果您发现以下情况,是否可以访问eureka:
2018-03-26 17:03:50.048 WARN [,] [1648] [DiscoveryClient-InstanceInfoReplicator-0] com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient: Request execution failed with message: java.net.ConnectException: Connection refused: connect
2018-03-26 17:03:50.048 WARN [,] [1648] [DiscoveryClient-InstanceInfoReplicator-0] com.netflix.discovery.DiscoveryClient: DiscoveryClient_SERVICE-TESTSERVERCONSUMER/10.234.97.21:service-testServerConsumer:8101 - 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:111) ~[eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:798) [eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:104) [eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:88) [eureka-client-1.6.2.jar:1.6.2]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_144]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_144]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_144]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_144]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
2018-03-26 17:03:50.049 WARN [,] [1648] [DiscoveryClient-InstanceInfoReplicator-0] com.netflix.discovery.InstanceInfoReplicator: There was a problem with the instance info replicator
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:798) ~[eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:104) [eureka-client-1.6.2.jar:1.6.2]
at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:88) [eureka-client-1.6.2.jar:1.6.2]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_144]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_144]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_144]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_144]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
要检查eureka是否可访问,如果您的eureka是在spring cloud中启动的,请执行curl http://192.168.99.100:8761/eureka/apps
以查看是否可以获取服务器列表。