Redis CLUSTER nodes.conf 파일을 이용한 장애복구

레디스 클러스터 교육 레디스 정기점검/기술지원
Redis Technical Support
레디스 엔터프라이즈 서버
Redis Enterprise Server

CLUSTER   nodes.conf 파일을 이용한 장애복구

nodes.conf 파일을 사용한 복구

  • nodes.conf 파일은 클러스터 모드일때 각 노드의 정보를 보관하는 파일이다. 기록은 레디스 서버가 한다.   내용은 cluster nodes 명령을 실행했을때 나오는 정보를 기록한 것이다.   사용자가 편집할 수 없다고 하지만, 편집 가능하다.   다음은 nodes.conf 파일 내용이다.
  • c78596fffb8248ff68b1a44829fb17a9f516487c 127.0.0.1:5002 myself,master - 0 0 2 connected 5461-10922
    53521dcff885d3ee9beb56f00cbba3b1fc7beead 127.0.0.1:5003 master - 0 1437202857947 3 connected 10923-16383
    345fc3d83f09c48800f1c3db197db7be23cf41fc 127.0.0.1:5004 master - 0 1437202858849 1 connected 0-5460
    vars currentEpoch 3 lastVoteEpoch 0
  • 테스트 환경
    • 3 노드 클러스터: 5001, 5002, 5003
    • cluster-require-full-coverage yes로 설정, no로 설정해도 상황은 같으나, yes로 설정했을 경우가 클러스터를 빨리 살려야 하는 긴박한 상황이므로 nodes.conf를 사용한 테스트에 더 적합하다 할 수 있다.
  • 다음은 테스트 순서 요약이다.
    1. 3 노드 클러스터 시작: 5001, 5002, 5003
    2. 5001번 노드 다운
    3. 5001번 서버(머신)을 살릴 수 없을 경우, 빠르게 다른 머신(박스)를 준비
    4. 새 서버에 5002번 nodes.conf를 복사해서 레디스 시작
    5. 클러스터 복구 완료
  • 테스트 순서를 그림으로 표현하면 아래와 같다.
  • Redis Cluster cluster replace node
  • 레디스 시작
  • $ ./redis-server ./5001/redis.conf
    $ ./redis-server ./5002/redis.conf
    $ ./redis-server ./5003/redis.conf
  • 클터스터 시작
  • $ ./redis-trib.rb create --replicas 0 127.0.0.1:5001 127.0.0.1:5002 127.0.0.1:5003
  • 5001번 노드 다운
  • $ ./redis-cli -p 5001 shutdown
  • 클러스터 다운
  • $ ./redis-cli -p 5002 cluster info
    cluster_state:fail
  • 새 머신(박스)를 준비한다. IP와 port는 달라도 된다. nodes.conf 파일 복사하고 편집한다.   여기서는 포트 5004번을 준비했다.
    1. nodes.conf 파일 복사
    2. # cp 5002/nodes.conf   5004/
    3. nodes.conf 내용 수정: 5002는 'myself,'를 삭제한다.   5001은 '127.0.0.1:5001 master,fail' 을 '127.0.0.1:5004 myself,master'로 수정한다.   고칠 필요가 없는 항목은 표시하지 않았다.
      수정 전
    4. c9c050ce14afa53c1a8b70c7ae9eb252ce49a971 127.0.0.1:5002 myself,master
      fb49879f47ae09ddf41e797c1f3428cd478a0183 127.0.0.1:5003 master
      34192c4b802580dd7eaf39700d2fa9ec8d3a172b 127.0.0.1:5001 master,fail
      수정 후
      c9c050ce14afa53c1a8b70c7ae9eb252ce49a971 127.0.0.1:5002 master
      fb49879f47ae09ddf41e797c1f3428cd478a0183 127.0.0.1:5003 master
      34192c4b802580dd7eaf39700d2fa9ec8d3a172b 127.0.0.1:5004 myself,master
    5. 5004번 redis 시작
    6. $ ./redis-server ./5004/redis.conf
  • 5002, 5003번 서버 메시지: 노드 주소가 수정되었고, 장애가 복구되었서 클러스터 상태가 정상이라는 메시지가 나온다.
  • # Address updated for node 34192c4b802580dd7eaf39700d2fa9ec8d3a172b, now 127.0.0.1:5004
    * Clear FAIL state for node 34192c4b802580dd7eaf39700d2fa9ec8d3a172b: is reachable again and nobody is serving its slots after some time.
    # Cluster state changed: ok
  • 이 방법을 사용하지 않으면, cluster forget, cluster meet, redis-trib reshard 명령등으로 복구해야 한다.   이 방법은 레디스 클러스터 장애복구에 잘 나와 있다.

<< Data Center Failover Cluster Failover using nodes.conf Cluster Heartbeat Check Load >>

Email 답글이 올라오면 이메일로 알려드리겠습니다.