尝试使用 TLS 连接到本地网络内单独服务器上的 Redis (Memurai)。我可以使用 ServiceStack 代码通过非 TLS 连接到主节点。
我还可以使用 CLI 从同一网络中的服务器通过 TLS 连接到 Sentinel。
下面的代码给出了超时:
ConfigurationOptions options = new ConfigurationOptions
{
AbortOnConnectFail = false,
ConnectTimeout = 30000, // 30 seconds
SyncTimeout = 30000, // 30 seconds
EndPoints = { { host, 26379 } }, // 6379 Primary
User = "default", //null,
Password = null, // pw is not required
Ssl = true,
SslProtocols = System.Security.Authentication.SslProtocols.Tls12,
ServiceName = "Primary", // sentinel
AllowAdmin = true,
SslHost = host
};
options.CertificateValidation += ValidateServerCertificate;
bool ValidateServerCertificate(
object sender,
X509Certificate? certificate,
X509Chain? chain,
SslPolicyErrors sslPolicyErrors)
{
// 省略代码,因为我遇到 sslPolicy 错误 = None } ConnectionMultiplexer 复用器 = ConnectionMultiplexer.Connect(options); // 获取超时
错误:
StackExchange.Redis.RedisConnectionException:尝试发送的消息在积压中超时,因为没有可用的连接(30000 毫秒) - 上次连接异常:127.0.0.1:6379/Interactive 上的 UnableToConnect,正在初始化/NotStarted,最后一个:NONE,来源: BeginConnectAsync,未完成:0,上次读取:1 秒前,上次写入:1 秒前,保持活动:60 秒,状态:正在连接,mgr:10 个可用,共 10 个可用,上次心跳:从不,全局:0 秒前,v: 2.6.122.38350,命令=角色,超时:30000,inst:0,qu:1,qs:0,aw:False,bw:SpinningDown,后进:0,cur-in:0,同步操作:1, async-ops:0,serverEndpoint:127.0.0.1:6379,conn-sec:n/a,aoc:0,mc:1/1/0,mgr:10个可用,clientName:XXXXX(SE.Redis-v2 .6.122.38350),IOCP:(忙= 0,空闲= 1000,最小值= 1,最大值= 1000),工作人员:(忙= 0,空闲= 32767,最小值= 4,最大值= 32767),池:(线程=4,队列项目=0,已完成项目=271,计时器=32),v:2.6.122.38350
我在弄乱代码很长一段时间后才能够连接。它不是直接连接到 Sentinel。