为什么Hazelcast-Eureka-One插件找不到我的Eureka服务器?

时间:2019-02-15 17:42:09

标签: hazelcast netflix-eureka

我有一个配置了tcp-ip的有效的Hazelcast群集。我需要它与Eureka发现一起使用。我正在尝试实现hazelcast-eureka-one插件。

(Spring-Boot)应用程序当前已经使用@EnableEurekaClient注释成功地向Eureka注册了自己。我不关心hazelcast eureka客户端是相同还是不同的客户端。我可以将hazelcast与应用分开注册。只要有效。

当我删除eureka-client.properties时,该应用程序将无法启动,并显示错误消息,找不到eureka-client.properties。将文件放置到位后,应用程序启动,但显然eureka-client.properties中的所有属性均未加载,这使hazelcast无法知道eureka服务器在哪里。日志表明已找到属性文件,但似乎未导入任何属性。

将hazelcast-eureka-one升级到1.1不会改变。

将用于主机和端口的元数据设置为true不会更改。

等级:

compile group: 'com.hazelcast', name: 'hazelcast-spring', version: '3.9.4'
compile group: 'com.hazelcast', name: 'hazelcast-hibernate52', version: '1.2.3'
compile group: 'com.hazelcast', name: 'hazelcast-eureka-one', version: '1.0.1'

hazelcast.xml:

<?xml version="1.0" encoding="UTF-8"?>
<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config http://www.hazelcast.com/schema/config/hazelcast-config-3.9.xsd"
       xmlns="http://www.hazelcast.com/schema/config"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<instance-name>app.name.hazelcast.sessions-instance</instance-name>
<group>
    <name>app.name.hazelcast.sessions.local-group</name>
</group>

<network>
    <join>
        <multicast enabled="false"/>
        <tcp-ip enabled="false"/>
        <aws enabled="false"/>
        <discovery-strategies>
            <discovery-strategy class="com.hazelcast.eureka.one.EurekaOneDiscoveryStrategy" enabled="true">
                <properties>
                    <property name="self-registration">true</property>
                    <property name="namespace">hazelcast-app-name</property>
                    <property name="use-metadata-for-host-and-port">false</property>
                </properties>
            </discovery-strategy>
        </discovery-strategies>
    </join>
</network>

<map name="spring:session:sessions">
    <attributes>
        <attribute extractor="org.springframework.session.hazelcast.PrincipalNameExtractor">principalName</attribute>
    </attributes>
    <indexes>
        <index>principalName</index>
    </indexes>
</map>

eureka-client.properties:

hazelcast.shouldUseDns=false
hazelcast.datacenter=primary
hazelcast.name=hazelcast-app-name-sessions
hazelcast.serviceUrl.default=http://username:password@svcregistry1-dev.company.com:8580/eureka/,http://username:password@svcregistry2-dev.company.com:8590/eureka/

日志文件:

Loading 'hazelcast.xml' from classpath.
2019-02-15 11:19:13,935 -  INFO - [localhost-startStop-1] - [,,] - com.hazelcast.instance.AddressPicker     : [LOCAL] [app.name.hazelcast.sessions.local-group] [3.9.4] Prefer IPv4 stack is true.
2019-02-15 11:19:14,166 -  INFO - [localhost-startStop-1] - [,,] - com.hazelcast.instance.AddressPicker     : [LOCAL] [app.name.hazelcast.sessions.local-group] [3.9.4] Picked [172.28.208.1]:5701, using socket ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5701], bind any local is true
2019-02-15 11:19:14,179 -  INFO - [localhost-startStop-1] - [,,] - com.hazelcast.system                     : [172.28.208.1]:5701 [app.name.hazelcast.sessions.local-group] [3.9.4] Hazelcast 3.9.4 (20180420 - b8001d5) starting at [172.28.208.1]:5701
2019-02-15 11:19:14,179 -  INFO - [localhost-startStop-1] - [,,] - com.hazelcast.system                     : [172.28.208.1]:5701 [app.name.hazelcast.sessions.local-group] [3.9.4] Copyright (c) 2008-2018, Hazelcast, Inc. All Rights Reserved.
2019-02-15 11:19:14,179 -  INFO - [localhost-startStop-1] - [,,] - com.hazelcast.system                     : [172.28.208.1]:5701 [app.name.hazelcast.sessions.local-group] [3.9.4] Configured Hazelcast Serialization version: 1
2019-02-15 11:19:14,616 -  INFO - [localhost-startStop-1] - [,,] - c.h.s.i.o.impl.BackpressureRegulator     : [172.28.208.1]:5701 [app.name.hazelcast.sessions.local-group] [3.9.4] Backpressure is disabled
2019-02-15 11:19:15,309 - DEBUG - [localhost-startStop-1] - [,,] - .n.c.u.OverridingPropertiesConfiguration : Base path set to file:///C:/Users/my.name/IdeaProjects/AppName/build/classes/main/
2019-02-15 11:19:15,310 - DEBUG - [localhost-startStop-1] - [,,] - .n.c.u.OverridingPropertiesConfiguration : FileName set to eureka-client.properties
2019-02-15 11:19:15,310 - DEBUG - [localhost-startStop-1] - [,,] - .n.c.u.OverridingPropertiesConfiguration : URL set to file:/C:/Users/my.name/IdeaProjects/AppName/build/classes/main/eureka-client.properties
2019-02-15 11:19:15,316 -  INFO - [localhost-startStop-1] - [,,] - c.n.config.util.ConfigurationUtils       : Loaded properties file file:/C:/Users/my.name/IdeaProjects/AppName/build/classes/main/eureka-client.properties
2019-02-15 11:19:15,326 -  INFO - [localhost-startStop-1] - [,,] - .p.EurekaConfigBasedInstanceInfoProvider : Setting initial instance status as: STARTING
2019-02-15 11:19:15,334 -  WARN - [localhost-startStop-1] - [,,] - c.n.config.util.ConfigurationUtils       : file:/C:/Users/my.name/IdeaProjects/AppName/build/classes/main/eureka-client.properties is already loaded
2019-02-15 11:19:15,385 -  INFO - [localhost-startStop-1] - [,,] - com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2019-02-15 11:19:15,951 -  INFO - [localhost-startStop-1] - [,,] - c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2019-02-15 11:19:15,951 -  INFO - [localhost-startStop-1] - [,,] - c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2019-02-15 11:19:16,143 -  INFO - [localhost-startStop-1] - [,,] - c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2019-02-15 11:19:16,143 -  INFO - [localhost-startStop-1] - [,,] - c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2019-02-15 11:19:16,392 -  INFO - [localhost-startStop-1] - [,,] - c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-02-15 11:19:16,394 - DEBUG - [localhost-startStop-1] - [,,] - c.n.discovery.endpoint.EndpointUtils     : The availability zone for the given region us-east-1 are [defaultZone]
2019-02-15 11:19:16,394 - DEBUG - [localhost-startStop-1] - [,,] - c.n.d.s.r.aws.ConfigClusterResolver      : Config resolved to []
2019-02-15 11:19:16,394 - ERROR - [localhost-startStop-1] - [,,] - c.n.d.s.r.aws.ConfigClusterResolver      : Cannot resolve to any endpoints from provided configuration: {defaultZone=[]}
2019-02-15 11:19:16,612 - DEBUG - [localhost-startStop-1] - [,,] - c.n.d.s.r.a.ZoneAffinityClusterResolver  : Local zone=defaultZone; resolved to: []
2019-02-15 11:19:16,612 - ERROR - [localhost-startStop-1] - [,,] - c.n.d.s.transport.EurekaHttpClients      : Initial resolution of Eureka server endpoints failed. Check ConfigClusterResolver logs for more info
2019-02-15 11:19:16,647 -  INFO - [localhost-startStop-1] - [,,] - com.netflix.discovery.DiscoveryClient    : Disable delta property : false
2019-02-15 11:19:16,647 -  INFO - [localhost-startStop-1] - [,,] - com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
2019-02-15 11:19:16,647 -  INFO - [localhost-startStop-1] - [,,] - com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
2019-02-15 11:19:16,647 -  INFO - [localhost-startStop-1] - [,,] - com.netflix.discovery.DiscoveryClient    : Application is null : false
2019-02-15 11:19:16,647 -  INFO - [localhost-startStop-1] - [,,] - com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
2019-02-15 11:19:16,647 -  INFO - [localhost-startStop-1] - [,,] - com.netflix.discovery.DiscoveryClient    : Application version is -1: true
2019-02-15 11:19:16,647 -  INFO - [localhost-startStop-1] - [,,] - com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2019-02-15 11:19:16,648 - DEBUG - [localhost-startStop-1] - [,,] - c.n.d.s.t.d.SessionedEurekaHttpClient    : Ending a session and starting anew
2019-02-15 11:19:16,655 - ERROR - [localhost-startStop-1] - [,,] - com.netflix.discovery.DiscoveryClient    : DiscoveryClient_UNKNOWN/0c99d08b-8072-4fe4-a20f-c8653e10e374 - was unable to refresh its cache! status = There is no known eureka server; cluster server list is empty
com.netflix.discovery.shared.transport.TransportException: There is no known eureka server; cluster server list is empty
    at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:108)
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134)
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137)
    at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134)
    at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1051)
    at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:965)
    at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:414)
    at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:269)
    at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:265)
    at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:257)
    at com.hazelcast.eureka.one.EurekaOneDiscoveryStrategy.<init>(EurekaOneDiscoveryStrategy.java:147)
    at com.hazelcast.eureka.one.EurekaOneDiscoveryStrategy.<init>(EurekaOneDiscoveryStrategy.java:55)
    at com.hazelcast.eureka.one.EurekaOneDiscoveryStrategy$EurekaOneDiscoveryStrategyBuilder.build(EurekaOneDiscoveryStrategy.java:111)
    at com.hazelcast.eureka.one.EurekaOneDiscoveryStrategyFactory.newDiscoveryStrategy(EurekaOneDiscoveryStrategyFactory.java:53)
    at com.hazelcast.spi.discovery.impl.DefaultDiscoveryService.buildDiscoveryStrategy(DefaultDiscoveryService.java:185)
    at com.hazelcast.spi.discovery.impl.DefaultDiscoveryService.loadDiscoveryStrategies(DefaultDiscoveryService.java:145)
    at com.hazelcast.spi.discovery.impl.DefaultDiscoveryService.<init>(DefaultDiscoveryService.java:60)
    at com.hazelcast.spi.discovery.impl.DefaultDiscoveryServiceProvider.newDiscoveryService(DefaultDiscoveryServiceProvider.java:29)
    at com.hazelcast.instance.Node.createDiscoveryService(Node.java:265)
    at com.hazelcast.instance.Node.<init>(Node.java:216)
    at com.hazelcast.instance.HazelcastInstanceImpl.createNode(HazelcastInstanceImpl.java:160)
    at com.hazelcast.instance.HazelcastInstanceImpl.<init>(HazelcastInstanceImpl.java:128)
    at com.hazelcast.instance.HazelcastInstanceFactory.constructHazelcastInstance(HazelcastInstanceFactory.java:195)
    at com.hazelcast.instance.HazelcastInstanceFactory.newHazelcastInstance(HazelcastInstanceFactory.java:174)
    at com.hazelcast.instance.HazelcastInstanceFactory.newHazelcastInstance(HazelcastInstanceFactory.java:124)
    at com.hazelcast.core.Hazelcast.newHazelcastInstance(Hazelcast.java:92)
    at org.springframework.boot.autoconfigure.hazelcast.HazelcastServerConfiguration$HazelcastServerConfigFileConfiguration.hazelcastInstance(HazelcastServerConfiguration.java:56)
    at org.springframework.boot.autoconfigure.hazelcast.HazelcastServerConfiguration$HazelcastServerConfigFileConfiguration$$EnhancerBySpringCGLIB$$d6cfebe6.CGLIB$hazelcastInstance$0(<generated>)
    at org.springframework.boot.autoconfigure.hazelcast.HazelcastServerConfiguration$HazelcastServerConfigFileConfiguration$$EnhancerBySpringCGLIB$$d6cfebe6$$FastClassBySpringCGLIB$$3a3e2869.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:365)
    at org.springframework.boot.autoconfigure.hazelcast.HazelcastServerConfiguration$HazelcastServerConfigFileConfiguration$$EnhancerBySpringCGLIB$$d6cfebe6.hazelcastInstance(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:583)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1246)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider.getObject(DefaultListableBeanFactory.java:1665)
    at org.springframework.session.hazelcast.config.annotation.web.http.HazelcastHttpSessionConfiguration.setHazelcastInstance(HazelcastHttpSessionConfiguration.java:96)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:696)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:370)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:373)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1246)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:819)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:725)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:475)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1246)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
    at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:226)
    at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:214)
    at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:91)
    at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:80)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:250)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:237)
    at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:54)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5245)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1420)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1410)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

1 个答案:

答案 0 :(得分:1)

您在namespace中的hazelcast.xml必须与eureka-client.properties中属性的前缀相同。

换句话说,您需要将命名空间更改为:

<property name="namespace">hazelcast</property>

或将您的eureka-client.properties更改为:

hazelcast-app-name.shouldUseDns=false
hazelcast-app-name.datacenter=primary
hazelcast-app-name.name=hazelcast-app-name-sessions
hazelcast-app-name.serviceUrl.default=http://username:password@svcregistry1-dev.company.com:8580/eureka/,http://username:password@svcregistry2-dev.company.com:8590/eureka/

请在以下位置阅读更多信息: