Тайм-аут чтения при подключении к перенаправлению эластичного кэша AWS через запуск приложения весенней загрузки на экземпляре aws ec2 - PullRequest
0 голосов
/ 21 июня 2019

Я запускаю приложение весенней загрузки в качестве контейнера 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.

...