반응형

https://github.com/xetorthio/jedis#jedis-cluster에 가장 잘 설명되어 있고,

매우 간단하다.


대규모 시스템에는 기본적으로 Pooling도 지원을 해야 되기 때문에

JedisCluster 생성자에 jedisPoolConfig, maxRedirection, timeout 정도만 세팅을 해서 사용을 하면 된다.


<pre style="font-family: 'Source Code Pro'; font-size: 9pt;">@Bean
public JedisCluster jedisCluster() {
Set<HostAndPort> jedisClusterNodes = new HashSet<>();
jedisClusterNodes.add(new HostAndPort("192.168.33.10", 7000));
jedisClusterNodes.add(new HostAndPort("192.168.33.10", 7001));
jedisClusterNodes.add(new HostAndPort("192.168.33.10", 7002));
jedisClusterNodes.add(new HostAndPort("192.168.33.10", 7003));
jedisClusterNodes.add(new HostAndPort("192.168.33.10", 7004));
jedisClusterNodes.add(new HostAndPort("192.168.33.10", 7005));

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(40);
jedisPoolConfig.setMinIdle(10);

return new JedisCluster(jedisClusterNodes, 3000, 3, jedisPoolConfig);
}</pre>


클러스터 노드 추가 시 Host부분이 중요한데.. HostName에 지정된 IP와

redis-trib.rb로 cluster구성 시에 옵션으로 들어가는 각 cluster의 IP String이 같아야 제대로 동작을 한다.


다르면, Jedis가 노드를 찾지 못하여, 엄청나게 Redirection을 하다가 Too Many Redirection Exception을 뱉는다.

귀찮더라도 cluster구성 시에는 private ip나 public ip로 띄우는걸 권장


뭐.. Jedis 추후 버전에서는 해결이 될 만한 문제이기도 하지만, 현재는 잘 안된다.


문제 해결에 도움을 받은 링크

https://github.com/xetorthio/jedis/issues/943

반응형

'개발 > Redis' 카테고리의 다른 글

[PHPRedmin] Windows 세팅  (0) 2016.06.11
[Redis] 3.0.2 Cluster 구성  (0) 2016.06.11
[Redis] Copy Key  (0) 2016.06.11
[Redis Cluster] FailOver 테스트  (0) 2016.06.11
,