복붙노트

[REDIS] 연결에 ElastiCache 클러스터를 통해 Node.js를

REDIS

연결에 ElastiCache 클러스터를 통해 Node.js를

나는 Node.js.를 통해 AWS의 ElastiCache 레디 스에 연결하는 방법에 혼동 해요 나는 성공적으로이 NPM을 node_redis를 통해 기본 호스트 (001)에 연결하기 위해 관리했습니다,하지만 난 분명히 ElastiCache 클러스터 명령을 구현하지 않기 때문에 ioredis의 클러스터링 기능을 사용할 수 없습니다입니다.

나는 다른 방법이있을 것으로 생각하지만, 노드에 대한 AWS SDK는뿐만 아니라 실제로 연결을 위해, ElastiCache를 관리하기위한 명령이 있습니다.

CLUSTER를 사용하지 않고, 나는 마스터 노드가 실패 할 경우 내가 다른 클러스터로 다시 떨어질 수 없기 때문에 내 애플, 장애 조치 할 수 없습니다 우려하고있다. 또한, 내 레디 스 클라이언트에서 오류가 발생할 오류 : READONLY 당신은 노예 읽기에 쓸 수 없습니다. 마스터는 내가 적절하게 처리하는 방법을 잘 모르겠어요있는 전환 할 때.

나는이 지나친 건가요? 나는 Node.js.와 ElastiCache 레디 스 클러스터를 사용하는 방법에 대한 약간의 정보를 찾는하고

해결법

  1. ==============================

    1.나는 이것을 지나친했다.

    나는 이것을 지나친했다.

    용액을 클라이언트 측에서 임의의 클러스터링을 사용하지 않고, 오직 기본 마스터 노드에 연결한다. 마스터가 실패하면, 슬레이브는 승진하고 DNS는 슬레이브가 클라이언트 측에서 변경 할 필요 호스트하지 않고, 기본 노드 지도록 업데이트됩니다.

    장애 조치가 발생하면 일시적인 연결 오류를 방지하기 위해, 당신은 ioredis 몇 가지 설정을 추가 할 수 있습니다 :

    var client = new Redis(port, host, {
      retryStrategy: function (times) {
        log.warn('Lost Redis connection, reattempting');
        return Math.min(times * 2, 2000);
      },
    
      reconnectOnError: function (err) {
        if (err.message.slice(0, targetError.length) === 'READONLY') {
          // When a slave is promoted, we might get temporary errors saying
          // READONLY You can't write against a read only slave. Attempt to
          // reconnect if this happens.
          log.warn('ElastiCache returned a READONLY error, reconnecting');
          return 2; // `1` means reconnect, `2` means reconnect and resend
          // the failed command
        }
      }
    });
    
  2. from https://stackoverflow.com/questions/35027777/connect-to-elasticache-cluster-via-node-js by cc-by-sa and MIT license