Я запускаю приложение весенней загрузки в качестве контейнера Docker на экземпляре EC2.Я создал кластер redis (эластичный кэш на AWS) и включил шифрование при передаче и в состоянии покоя.
Все правильно с точки зрения конфигурации VPC и групп безопасности.Проблема в том, что когда я вижу журналы весенней загрузки приложения, он выдает
redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:202)
at redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:40)
at redis.clients.jedis.Protocol.process(Protocol.java:147)
at redis.clients.jedis.Protocol.read(Protocol.java:211)
at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:297)
at redis.clients.jedis.Connection.getRawObjectMultiBulkReply(Connection.java:242)
at redis.clients.jedis.Connection.getObjectMultiBulkReply(Connection.java:248)
at redis.clients.jedis.BinaryJedis.scan(BinaryJedis.java:3284)
at org.eclipse.leshan.server.cluster.RedisRegistrationStore$RedisIterator.scanNext(RedisRegistrationStore.java:287)
at org.eclipse.leshan.server.cluster.RedisRegistrationStore$RedisIterator.<init>(RedisRegistrationStore.java:281)
at org.eclipse.leshan.server.cluster.RedisRegistrationStore.getAllRegistrations(RedisRegistrationStore.java:266)
at org.eclipse.leshan.server.impl.RegistrationServiceImpl.getAllRegistrations(RegistrationServiceImpl.java:57)
at dishac.server.management.RequestProcessorEngine$Scanner.run(RequestProcessorEngine.java:117)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
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)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.net.SocketInputStream.read(SocketInputStream.java:127)
at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:196)
... 19 more
Я уверен, что кластер redis доступен, потому что у меня есть другой кластер redis с такой же конфигурацией, за исключением шифрования при передаче и в состоянии покояотключено, работает нормально для меня.
Вот моя привязка файла докера (я использую переменные ENV вместо application.yml):
ENV SPRING_REDIS_HOST md-rs.us.usblahe2.cblhaahe.amazonaws.com ENV SPRING_REDIS_SSL верно ENV SPRING_REDIS_PASSWORD blahblahblahblah ENV SPRING_REDIS_JEDIS_POOL_MAX_ACTIVE 8 ENV SPRING_REDIS_JEDIS_POOL_MAX_IDLE 8 ENV SPRING_REDIS_JEDIS_POOL_MAX_WAIT -1ms ENV SPRING_REDIS_JEDIS_POOL_MIN_IDLE 0
Обновление: Я попытался с Stunnel из той же ec2 экземпляра (где ява весна загрузки приложение работает) иЯ могу получить доступ к кластеру Redis.