클러스터 슬롯레디스 클러스터는 0 ~ 16383 까지의 슬롯 값을 가지고 있습니다.또한 이 슬롯 값을 마스터 노드별로 분배할 수 있습니다. 레디스 클러스터에서는 기본적으로 키에 해시 함수를 적용해서 나온 값(슬롯) 노드에 할당을 합니다.즉, 슬롯을 이용하여 특정 노드에 데이터가 몰리지 않도록 분산하기 위해 사용하는 기능이 클러스터 슬롯입니다. 특정 키가 어떤 슬롯에 저장되는지는 레디스의 해시함수 알고리즘에 의해 정해지기 때문에,특정 키는 특정노드에만 저장이 될 것입니다.단 서로 다른 키라고 하더라도 해시함수로 나온 값이 동일할 수 있으므로 하나의 슬로셍는 여러개의 키가 저장될 수 있습니다. 클러스터 노드간에는 해시 알고리즘을 서로 공유하고 있어특정 키가 어떤 노드에 저장되는지, 어떤 슬롯에 저장되어야하는..
Database
배치작업이란SQL Server 엔진에서 정해진 시간에, 정해진 작업을 수행하도록 하는 작업을 말합니다.즉, 배치작업이 실패했다고 해서 이 후 계획된 시간에 수행이 안되는 것이 아니라 다시 수행되고 실패하는 식으로계속해서 정해진 시간에 수행되는 작업을 의미합니다. 예를들면, 아래와 같은 배치작업 주로 이루어져 있겠죠?1. 매일 정해진 시간 백업을 진행한다.2. 매일 정해진 시간에 데이터 동기화 작업을 진행한다.3. 매일 정해진 시간에 특정 일자보다 오래된 데이터는 삭제한다. 그런데, 이러한 작업들은 아무래도 일반적인 쿼리인 1건 조회, 1건 적재와 같은 비용보다는 크게 됩니다. 배치작업을 만들 때 고려할 점 3가지중간 단계에서 실패하더라도, 이 후에 재처리가 가능하도록작업 실패로 인해 제대로 정리되지 못한..
클러스터 노드 구성 방법redis-cli 혹은 redis-trib 의 create 옵션을 사용하여 클러스터를 구성하는 방법https://mozi.tistory.com/381 포스팅을 참고해 주세요 매뉴얼을 사용하여 개별 구성하는 방법마스터/복제노드를 사용자가 설정할 수 있습니다.마스터와 복제노드를 사용자가 원하는 만큼 개별적으로 설정할 수 있습니다. 클러스터 매뉴얼대로 개별 구성 방법마스터 노드 한 개로 클러스터 구성하기 1234567891011121314151617181920$ redis-server 7000/redis_7000.conf $ redis-cli -c -p 7000127.0.0.1:7000> cluster infocluster_state:failcluster_slots_assigned:0c..
클러스터 노드 구성 방법redis-cli 혹은 redis-trib.rb 의 create 옵션을 사용하여 클러스터를 구성하는 방법create 옵션을 사용하여 클러스터를 구성할 수 있으며, 이 때는 Redis 엔진에 의해 마스터/복제 노드가 지정됩니다.마스터는 최소 3개 이상으로 구성되어야 합니다.모든 마스터는 동일한 복제 노드 수를 가지고 있어야 합니다. * redis-trib.rb는 레디스5.0 버전부터 redis-cli로 대체되었으며 여기에서는 다루지 않습니다. 매뉴얼을 사용하여 개별 구성하는 방법마스터/복제노드를 사용자가 설정할 수 있습니다.마스터와 복제노드를 사용자가 원하는 만큼 개별적으로 설정할 수 있습니다. 매뉴얼을 사용하여 개별 구성하는 방법을 권장드리며 이유는 포스팅 하단에 작성되어 있습니다..
Redis 클러스터 구동 전 사전 설정redis.conf3개의 노드를 구성할 conf 파일을 설정해 줍니다.cluster-enabled : 클러스터로 사용합니다.cluster-config-file : 노드별로 클러스터 노드 정보를 conf 파일에 저장합니다.cluster-node-timeout : 노드간 통신이 되지 않아 timeout 되는 시간을 설정합니다. 1234567891011121314151617181920212223242526272829$ cat redis_7000.confcluster-enabled yescluster-config-file nodes-7000.confcluster-node-timeout 3000port 7000dir /home/psh/7000appendonly yesdaemo..
레디스 클러스터복제노드를 포함하는 모든 노드가 서로 통신하며 정보를 주고 받습니다.클라이언트는 어느 노드든지 접속이 가능하며 클러스터 구성정보를 가져와서 보유하며입력되는 키에 따라 해당 노드에 접속하여 요청을 처리합니다. 일부 노드가 다운되더라도 다른 노드에 영향을 미치지 않습니다.그러나 과반수 이상의 노드가 다운되는 경우 클러스터가 깨지게 됩니다. 마스터 노드는 1개 이상의 복제 노드를 가질 수 있습니다.노드가 추가되거나 삭제 될 때 클러스터를 중지할 필요는 없으나, 노드 간 키가 이동될 때 해당 키에 락이 걸릴 수 있습니다. 레디스 서버는 노드끼리 통신을 하고 있기 때문에, 별도의 센티넬이 필요치 않습니다.특정 마스터가 다운되는 경우 다른 마스터들이 다운된 마스터의 복제서버로 장애조치를 진행합니다. ..
센티넬의 자동 Failover 기능 센티넬은 마스터, 복제서버가 정상적인지 감지하고 있다가마스터 서버가 다운되면 복제서버를 자동으로 마스터로 승격시켜 주는 기능을 수행합니다. 센티넬 Failover 테스트센티넬이 모니터링 하고 있는 서버모든 레디스는 하나의 서버에 구성되어 있어서 포트로만 구분하였습니다.마스터 6379복제1 6380복제2 6381센티넬 8000 1. 마스터 서버 shutdown 12$ redis-cli -p 6379127.0.0.1:6379> shutdowncs 2. 마스터 된 서버의 info replication 확인복제1(6380) 서버에서 확인을 했으며 복제2(6381) 서버가 마스터로 승격된 것을 확인할 수 있습니다. 1234567891011121314151617181920127...
센티넬이란일반적으로 운영환경에서는 마스터와 복제로 구성됩니다.운영 중 예기치 않은 이슈로 마스터가 다운되면, 서버 담당자는 복제를 마스터로 올리고 클라이언트가 새로운 마스터에 접속할 수 있도록 해야 합니다. 센티넬은 마스터와 복제서버의 네트워크 통신이 가능한지 시도하고 있다가, 마스터에서 통신이 되지 않으면 자동으로 복제를 마스터로 올립니다. 센티넬의 기능모니터링센티넬은 마스터, 복제서버가 제대로 동작하고 있는지 주기적으로 검사합니다. 자동 장애조치마스터가 예기치 않게 다운되었을 때 복제 서버를 마스터로 올립니다.복제 서버가 여러개 있을 경우 다른 복제서버는 새로운 마스터로부터 데이터를 받을 수 있도록 재 구성합니다.기존 마스터가 구동되는 경우 복제로 전환하여 새로운 마스터로부터 데이터를 받을 수 있도록..
마스터서버에서 복제서버로 Failover 하는 방법마스터가 다운되었다면 복제서버를 마스터로 변경해야 합니다.이 때 복제서버에서 사용하는 명령어 입니다. 1127.0.0.1:6380> replicaof no onecs 마스터 서버 복구 후 마스터서버로 FailBack 하는방법기존 마스터 서버 : '127.0.0.1 6379' (이하 6379)현 마스터 서버 : '127.0.0.1 6380' (이하 6380) replicaof 명령을 사용하여 failback 방법1. 6379 를 마스터로 바라보는 복제서버가 없는지 확인합니다. (복제서버의 데이터 유실 방지를 위해)2. 6379 를 마스터로 구동합니다.3. 6380 서버에서 클라이언트 접속을 차단합니다.4. 6379 에서 6380 의 복제서버로 구성하여 데이..
Redis Replication 복제 방식Redis 에서는 복제 방식으로 '전체 동기화' 와 '부분 동기화' 를 제공하고 있습니다. 전체 동기화 (Full synchronization)복제 순서1. 마스터는 자식 프로세스를 생성합니다.2. 자식 프로세스는 백그라운드로 데이터를 RDB 파일로 백업합니다.3. 백업하는 동안 마스터에 새로 들어온 명령은 처리 후 복제 버퍼에 저장합니다.4. RDB 파일 백업이 완료되면, 마스터는 파일을 복제서버로 전송합니다.4. 복제 서버는 파일을 받아 디스크에 저장하고 메모리로 로드합니다.5. 마스터는 복제버퍼에 저장된 명령을 복제서버에 전송합니다. 특이사항1. 마스터가 다운되는 경우 복제서버는 1초마다 마스터에 접속을 시도합니다.2. 마스터가 살아나면 복제서버는 복제 순서..