在 istio 网格中运行时出现 Redis 断管错误

标签 redis istio

当我在 Kubernetes 集群中运行客户端时,与 redis 的连接正常,但在 istio 网格中运行时出现“管道损坏”错误

redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Broken pipe
        at redis.clients.jedis.Connection.flush(Connection.java:334)
        at redis.clients.jedis.Connection.getIntegerReply(Connection.java:263)
        at redis.clients.jedis.Jedis.exists(Jedis.java:179)
        at com.swift.ems.microservices.CreateSessionServer$AuthServiceImpl.createSessionAuth(CreateSessionServer.java:59)
        at com.swift.ems.microservices.AuthServiceGrpc$MethodHandlers.invoke(AuthServiceGrpc.java:204)
        at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:171)
        at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:283)
        at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:707)
        at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
        at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(Unknown Source)
        at java.net.SocketOutputStream.write(Unknown Source)
        at redis.clients.util.RedisOutputStream.flushBuffer(RedisOutputStream.java:52)
        at redis.clients.util.RedisOutputStream.flush(RedisOutputStream.java:216)
        at redis.clients.jedis.Connection.flush(Connection.java:331)
        ... 12 more
ERROR ConnectingSep 12, 2018 9:04:19 PM io.grpc.internal.SerializingExecutor run
SEVERE: Exception while executing runnable io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed@525a867b
redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Broken pipe
        at redis.clients.jedis.Connection.flush(Connection.java:334)
        at redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:257)
        at redis.clients.jedis.Connection.getBulkReply(Connection.java:248)
        at redis.clients.jedis.Jedis.get(Jedis.java:153)
        at com.swift.ems.redis.SessionHandler.getStatus(SessionHandler.java:61)
        at com.swift.ems.microservices.CreateSessionServer$AuthServiceImpl.createSessionAuth(CreateSessionServer.java:74)
        at com.swift.ems.microservices.AuthServiceGrpc$MethodHandlers.invoke(AuthServiceGrpc.java:204)
        at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:171)
        at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:283)
        at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:707)
        at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
        at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(Unknown Source)
        at java.net.SocketOutputStream.write(Unknown Source)
        at redis.clients.util.RedisOutputStream.flushBuffer(RedisOutputStream.java:52)
        at redis.clients.util.RedisOutputStream.flush(RedisOutputStream.java:216)
        at redis.clients.jedis.Connection.flush(Connection.java:331)
        ... 14 more

我相信它需要给更多的连接时间但不确定,在此先感谢。

最佳答案

好吧,Istio 阻止了与 redis 的连接,因此创建了一个服务条目并且它起作用了! https://istio.io/blog/2018/egress-tcp/#mesh-external-service-entry-for-an-external-mysql-instance

关于在 istio 网格中运行时出现 Redis 断管错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52305324/

相关文章:

kubernetes - 无法使用 minikube 设置 Istio

istio - 无法使基于 lua 的 EnvoyFilter 工作

kubernetes - 从集群内部调用时出现 503 响应代码

docker - 将 redis 与 docker-compose 一起使用时连接被拒绝

java - 如果 Redis 宕机,Springboot 无法启动

spring-boot - 使用 spring boot 连接被拒绝的 redis master slave

redis - Jedis 存储困惑,这个问题是 Redis 还是 Jedis?

Laravel 6.x - 缓存 'pagination()'

kubernetes - 如何处理服务网格中的重大变化

http-status-code-404 - Istio 入口网关 : 404 NR route_not_found