Подключение к зашифрованному ElastiCache Redis из Java с использованием CName - PullRequest
0 голосов
/ 04 сентября 2018

Я использую драйвер Lettuce из данных Spring для подключения к ElastiCache с использованием транзитного шифрования. Когда я пытаюсь подключиться к Route53 CName, назначенному кластеру ElastiCache. Я получаю эту ошибку:

Caused by: com.lambdaworks.redis.RedisException: Cannot retrieve initial cluster partitions from initial URIs [RedisURI [host='my.cname.net', port=6379]]
    at com.lambdaworks.redis.cluster.RedisClusterClient.loadPartitions(RedisClusterClient.java:507)
    at com.lambdaworks.redis.cluster.RedisClusterClient.initializePartitions(RedisClusterClient.java:481)
    at com.lambdaworks.redis.cluster.RedisClusterClient.connectClusterAsyncImpl(RedisClusterClient.java:335)
    at com.lambdaworks.redis.cluster.RedisClusterClient.connectClusterAsync(RedisClusterClient.java:273)
    at org.springframework.data.redis.connection.lettuce.LettuceClusterConnection.doGetAsyncDedicatedConnection(LettuceClusterConnection.java:1250)
    at org.springframework.data.redis.connection.lettuce.LettuceConnection.getAsyncDedicatedConnection(LettuceConnection.java:3466)
    at org.springframework.data.redis.connection.lettuce.LettuceConnection.getDedicatedConnection(LettuceConnection.java:3487)
    at org.springframework.data.redis.connection.lettuce.LettuceConnection.getConnection(LettuceConnection.java:3460)
    at org.springframework.data.redis.connection.lettuce.LettuceConnection.sMembers(LettuceConnection.java:1998)
    ... 24 common frames omitted

Вот код, который я использую для подключения:

@Bean
public static RedisConnectionFactory connectionFactory() {
    Map<String, Object> source = Maps.newHashMap();
    source.put("spring.redis.cluster.nodes", "my.cname.net:6379");
    RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration(new MapPropertySource("RedisClusterConfiguration", source));
    clusterConfiguration.setMaxRedirects(10);
    LettuceConnectionFactory factory = new LettuceConnectionFactory(clusterConfiguration);
    factory.setValidateConnection(false);
    factory.setUseSsl(true);
    return factory;
}

Теперь, когда я заменяю Cname действительным сетевым именем, присоединенным к кластеру ElastiCache, программа работает. Кто-нибудь знает, почему происходит сбой Программы только при использовании Cname?

1 Ответ

0 голосов
/ 16 октября 2018

У нас была очень похожая проблема с клиентом .NET. Я полагаю, что проблема заключается в том, что сертификат о том, что конечная точка Redis предназначена для домена amazonaws.com, поэтому подключение к кластеру через ваше CName my.cname.net не удается, потому что этот сертификат недействителен для этого домена. Мы не смогли найти какой-либо способ изменить сертификат, поэтому не могли обойти проблему и вынуждены были использовать реальное сетевое имя в соединении.

...