레디스 slaveof 명령에 대한 설명입니다
명령
slaveof ip port 명령은 자신을 지정한 서버의 슬레이브(클론)로 만듭니다.
slaveof no one 명령은 현재 슬레이브(클론)인 자신을 마스터로 만듭니다.
- slaveof 사용법
- slave(노예) 용어에 대하여
- 클러스터에서 slaveof에 해당하는 명령은?
센티널 환경 slaveof 명령 실행 시 발생할 수 있는 다양 경우 정리
- 센티널과 slaveof no one
- failover-timeout
- 마스터에 대한 slaveof
자세한 내용은 여기를 보세요.
'노예(Slave)' 라는 용어에 대해서
현대에 '노예(Slave)'라는 용어는 적절치 않다고 봅니다. 그것이 IT 분야라고 해도 마찬가지 일 것입니다. 레디스 개발자인 살바토르(Salvatore Sanfilippo)도 이 용어의 문제점을 인정하여 redis.io에 다음과 같은 글(note)을 남겼습니다. 살바토르의 글을 한글로 요약한 것과 원문을 싣습니다.
"레디스를 설계할 때 용어에 대한 충분한 검토없이 마스터-슬레이브라는 용어를 선택하였다. 이것을 고치는데 수정 사항이 많이 발생하여 그대로 두는 대신, 'SLAVEOF NO ONE' 이라는 명령을 만들어 자유 선언에 대한 메시지로 삼으려한다."
"레디스를 설계할 때 용어에 대한 충분한 검토없이 마스터-슬레이브라는 용어를 선택하였다. 이것을 고치는데 수정 사항이 많이 발생하여 그대로 두는 대신, 'SLAVEOF NO ONE' 이라는 명령을 만들어 자유 선언에 대한 메시지로 삼으려한다."
A note about slavery: it's unfortunate that originally the master-slave terminology was picked for databases. When Redis was designed the existing terminology was used without much analysis of alternatives, however a SLAVEOF NO ONE command was added as a freedom message. Instead of changing the terminology, which would require breaking backward compatibility in the API and INFO output, we want to use this page to remind you that slavery is both a crime against humanity today and something that has been perpetuated throughout all human history. If slavery is not wrong, nothing is wrong. -- Abraham Lincoln원문(slaveof)
따라서 이후부터는 '슬레이브(slave)' 대신 '클론(clone)'이라는 용어를 사용하도록 하겠습니다. 슬레이브에는 복제(replication)라는 의미가 없지만 클론(clone)에는 복제의 의미가 있습니다. 슬레이브 서버의 역할은 '실시간 백업 서버(Real-Time Backup Server)입니다.
여담으로 'replicatee'라는 용어도 검토해 보았습니다. Replicatee를 사용한다면 그에 상응하게 master를 replicator라고 해야 하는데 master는 복제(replicate) 기능이 master의 일부 또는 옵션(option)이기 때문에 replicator로 변경하는 것은 적절치 않다고 봅니다.
결국 생명공학(biotechnology) 분야에서 복제의 의미로 많이 사용되는 clone을 slave 대신 사용하기로 하였습니다. 이후부터는 클론(clone)을 사용하도록 하겠습니다. 다만 새 용어에 따른 혼란을 줄이기 위해서 각 페이지의 첫 부분에 클론과 슬레이브를 같이 표기하고 이후에는 클론만 표기하겠습니다.
2017년 2월 7일 권대욱 權大昱 (Charlie Kwon)
여담으로 'replicatee'라는 용어도 검토해 보았습니다. Replicatee를 사용한다면 그에 상응하게 master를 replicator라고 해야 하는데 master는 복제(replicate) 기능이 master의 일부 또는 옵션(option)이기 때문에 replicator로 변경하는 것은 적절치 않다고 봅니다.
결국 생명공학(biotechnology) 분야에서 복제의 의미로 많이 사용되는 clone을 slave 대신 사용하기로 하였습니다. 이후부터는 클론(clone)을 사용하도록 하겠습니다. 다만 새 용어에 따른 혼란을 줄이기 위해서 각 페이지의 첫 부분에 클론과 슬레이브를 같이 표기하고 이후에는 클론만 표기하겠습니다.
2017년 2월 7일 권대욱 權大昱 (Charlie Kwon)
클러스터에서 SLAVEOF에 해당하는 명령은?
클러스터에서 "slaveof ip port"에 해당하는 명령은 "cluster replicate node-id" 입니다.
그럼, "slaveof no one"에 대항하는 명령은 무었일까요?
"cluster reset" 명령입니다.
cluster reset 명령은 클러스터로부터 자신을 독립시키는 명령입니다. 자신이 클론(slave)이라면 클러스터로부터 독립되면서 마스터로 승격됩니다.
그럼, "slaveof no one"에 대항하는 명령은 무었일까요?
"cluster reset" 명령입니다.
cluster reset 명령은 클러스터로부터 자신을 독립시키는 명령입니다. 자신이 클론(slave)이라면 클러스터로부터 독립되면서 마스터로 승격됩니다.
센티널 환경에서 SLAVEOF 명령에 대한 정리
위에서 살펴보았듯이 센티널이 모니터하고 있는 마스터와 클론에 대한 변경(slaveof)는 예상치 못한 변화가 시간 차를 두고 발생한다. 두 가지 경우로 구분해서 정리한다.
- 센티널 구성 시: 마스터-클론을 미리 구성한 다음 센티널 모니터를 시작한다.
- 센티널 운영 중: 마스터나 클론의 구성을 변경(slaveof)하기 전에 센티널이 마스터에 대한 모니터를 중지(remove)시키고 변경한다.
댓글 없음:
댓글 쓰기