AWS ElastiCache Redis(禁用集群模式)作为SignalR背板连接问题咨询
使用禁用集群模式的AWS ElastiCache Redis作为SignalR背板的问题排查
我之前帮同事处理过一模一样的场景,禁用集群模式的AWS ElastiCache Redis完全可以作为SignalR的背板,但你遇到的Ping套接字失败问题,基本都是几个常见的配置疏忽导致的,给你梳理下排查方向和解决办法:
安全组与VPC网络权限问题
AWS ElastiCache默认绑定在专用VPC内,如果你部署SignalR的应用服务器不在同一个VPC,或者ElastiCache的安全组没有开放6379端口给应用服务器的IP段,就会直接触发套接字连接失败。建议先检查:- ElastiCache的安全组入站规则,是否允许应用服务器所在IP/IP段访问6379端口
- 尽量将应用服务器和ElastiCache部署在同一个VPC内,跨VPC的话需要配置VPC对等连接或者NAT网关,步骤会复杂很多
端点配置重复传参错误
看你贴的代码:GlobalHost.DependencyResolver.UseRedis("xxxxxx.0001.use1.cache.amazonaws.com:6379", 6379, "", "Performance");这里犯了一个小错误:第一个参数已经包含了端口
:6379,第二个参数又重复传入了6379,这会导致SignalR的Redis客户端解析地址时出现异常。正确的写法应该是第一个参数只传主机名,端口单独通过第二个参数传递:GlobalHost.DependencyResolver.UseRedis("xxxxxx.0001.use1.cache.amazonaws.com", 6379, "", "Performance");Redis版本兼容性问题
SignalR的Redis背板对Redis版本有最低要求(至少2.8及以上),如果你的ElastiCache Redis版本过低,可能会出现协议不兼容的情况,导致连接时的Ping操作失败。可以登录AWS控制台查看ElastiCache实例的Redis版本,必要时升级到兼容的版本。应用服务器本地网络限制
如果你的SignalR应用部署在本地机房或者其他云服务商,除了AWS的安全组,还要检查应用服务器的本地防火墙、出站规则,是否允许访问ElastiCache实例的公网/内网IP及6379端口。
内容的提问来源于stack exchange,提问作者jamesb
相关产品推荐
相关产品推荐

