【发布时间】:2015-12-31 20:02:48
【问题描述】:
我正在尝试在 2 个 Ubuntu 虚拟机上以分布式模式运行 spring xd。我的目标是在其中一个运行 spring xd 的 VM 上部署一个模块,并使其对另一个 VM(主机名:container1)上的容器可见。在主 VM(主机名:xd-admin)上,我在 servers.yml 中使用此配置运行 redis-sentinel
spring:
redis:
port: 6379
host: 127.0.0.1
sentinel:
master: 127.0.0.1:26379
nodes: 127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381
在 container1 中,servers.yml 中有以下内容
spring:
redis:
port: 6379
host: 127.0.0.1
sentinel:
master: xd-admin:26379
nodes: 127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381
zk:
namespace: xd
client:
connect: xd-admin:2181
sessionTimeout: 60000
connectionTimeout: 30000
initialRetryWait: 1000
retryMaxAttempts: 3
当我在 xd-admin 主机上运行 xd-container 时,我得到了
Caused by: redis.clients.jedis.exceptions.JedisException: Can connect to sentinel, but 127.0.0.1:26379 seems to be not monitored...
at redis.clients.jedis.JedisSentinelPool.initSentinels(JedisSentinelPool.java:150) ~[jedis-2.6.2.jar:na]
at redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:69) ~[jedis-2.6.2.jar:na]
at redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:47) ~[jedis-2.6.2.jar:na]
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createRedisSentinelPool(JedisConnectionFactory.java:215) ~[spring-data-redis-1.5.0.RELEASE.jar:1.5.0.RELEASE]
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createPool(JedisConnectionFactory.java:202) ~[spring-data-redis-1.5.0.RELEASE.jar:1.5.0.RELEASE]
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.afterPropertiesSet(JedisConnectionFactory.java:195) ~[spring-data-redis-1.5.0.RELEASE.jar:1.5.0.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
... 30 common frames omitted
当我在 container1 主机上运行 xd-container 时,我得到了
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: All sentinels down, cannot determine where is 192.168.33.10:26379 master is running...
at redis.clients.jedis.JedisSentinelPool.initSentinels(JedisSentinelPool.java:153)
at redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:69)
at redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:47)
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createRedisSentinelPool(JedisConnectionFactory.java:215)
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createPool(JedisConnectionFactory.java:202)
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.afterPropertiesSet(JedisConnectionFactory.java:195)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
... 31 more
我在 xd-admin 上运行了 zookeeper 和 rabbit-mq。我在 container1 上运行了 redis。我知道 xd-admin 可以从 container1 访问,因为我在 xd-admin 上安装了 apache2,并且当我从 container1 运行 curl xd-admin 时收到响应。如何正确配置 redis 和/或我的 servers.yml 以便我的容器进行通信?
【问题讨论】: