>  기사  >  데이터 베이스  >  Redis 클러스터 운영 예시에 대한 자세한 설명

Redis 클러스터 운영 예시에 대한 자세한 설명

WBOY
WBOY앞으로
2022-06-23 12:24:122174검색

이 기사에서는 Redis 인스턴스 추가, 8007을 마스터 노드로 구성, 8008을 8007의 슬레이브 노드로 구성 등 클러스터 작업과 관련된 문제를 주로 정리하는 Redis에 대한 관련 지식을 제공합니다. 함께, 모두에게 도움이 되기를 바랍니다.

Redis 클러스터 운영 예시에 대한 자세한 설명

추천 학습: Redis 동영상 튜토리얼

기존 기반을 바탕으로 3개의 마스터와 3개의 슬레이브로 구성된 기본 버전은 다음과 같습니다

1 . 클러스터 시작

/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8001/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8002/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8003/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8004/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8005/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8006/redis.conf

클러스터 상태 보기: 클러스터 노드

위 그림에서 볼 수 있듯이 전체 클러스터는 3개의 마스터 노드와 3개의 슬레이브 노드로 정상적으로 실행되고 있습니다.

  • 포트 8001의 인스턴스 노드는 0~5460개의 해시 슬롯을 저장하고,
  • 8002 포트 인스턴스 노드는 5461~10922의 해시 슬롯을 저장하고,
  • 8003포트 인스턴스 노드는 10923~16383개의 해시 슬롯을 저장하고,

이 3개의 마스터 노드는 모든 해시 슬롯을 Redis 클러스터의 스토리지 슬롯으로 구성합니다. 슬레이브 포인트는 각 마스터 노드의 백업 슬레이브 노드이며 스토리지 슬롯은 표시되지 않습니다.

2. 클러스터 운영

노드를 추가한 후의 클러스터는 아래 그림과 같습니다. 점선 상자

es 2.1 add redis 인스턴스

/usr/local/redis-cluster에서 8007 및 8008 폴더를 생성하고 8001 폴더의 redis.conf 파일을 8007로 복사하십시오. 및 8008 두 폴더
mkdir 8007 8008 
cd 8001
cp redis.conf /usr/local/redis‐cluster/8007/ 
cp redis.conf /usr/local/redis‐cluster/8008/
 
# 修改8007文件夹下的redis.conf配置文件
vim /usr/local/redis‐cluster/8007/redis.conf 
# 修改如下内容:
port:8007 
dir /usr/local/redis‐cluster/8007/
cluster‐config‐file nodes‐8007.conf 

# 修改8008文件夹下的redis.conf配置文件
vim /usr/local/redis‐cluster/8008/redis.conf
# 修改内容如下:
port:8008
dir /usr/local/redis‐cluster/8008/
cluster‐config‐file nodes‐8008.conf

# 启动8007和8008俩个服务并查看服务状态
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8007/redis.conf
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8008/redis.conf

ps ‐el | grep redis

2.2에서 8007을 마스터 노드로 구성합니다

add-node 명령을 사용하여 새 마스터 노드 8007(마스터)을 추가합니다. 다음 ip:port는 새 노드입니다. ip:port는 알려진 기존 노드입니다. 로그 끝에 "[OK] 새 노드가 올바르게 추가되었습니다."라는 메시지가 표시되면 새 노드가 있음을 의미합니다.
/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster add‐node 192.168.0.61:8007 192.168.0.61:8001
아래와 같이 클러스터 상태를 확인하세요

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐c ‐h 192.168.0.61 ‐p 8001

192.168.0.61:8001> cluster nodes
.

참고: 노드가 성공적으로 추가되면 새로 추가된 노드에는 아무 것도 포함되지 않습니다. 데이터에는 슬롯(해시 슬롯)이 할당되지 않았기 때문에 새 노드에 해시 슬롯을 수동으로 할당해야 합니다

redis-cli 명령을 사용하여 8007에 대한 해시 슬롯을 할당하고, 다음에서 마스터 노드를 찾습니다. 클러스터를 다시 샤딩하고

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster reshard 192.168.0.61:8001

2.3. 8008을 8007

의 슬레이브 노드로 구성합니다. 클러스터에 슬레이브 노드 8008을 추가하고 다음과 같이 클러스터 상태
/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster add‐node 192.168.0.61:8008 192.168.0.61:8001
를 확인합니다.

그림과 같이 여전히 마스터 노드이며 해시 슬롯이 할당되지 않았습니다.

이유: 현재 노드(슬레이브 노드)의 마스터 노드 ID를 지정하려면 복제 명령을 실행해야 합니다. 먼저 새로 추가된 8008 노드의 클라이언트에 연결한 후 클러스터 명령을 사용해야 합니다. 현재 8008을 운영 및 교체하기 위해 (슬레이브) 노드를 마스터 노드로 할당합니다. (여기서는 이전에 생성한 8007 마스터 노드를 사용합니다.)

명령어 실행

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐c ‐h 192.168.0.61 ‐p 8008 

192.168.0.61:8008> cluster replicate 2728a594a0498e98e4b83a537e19f9a0a3790f38 #后面这串id为8007的节点id

클러스터 상태 보기, 8008 노드 8007 노드의 슬레이브 노드로 추가되었습니다

 2.4、删除8080从节点[不删除四主四从]

用del-node删除从节点8008,指定删除节点ip和端口,以及节点id(红色为8008节点id)

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster del‐node 192.168.0.61:8008 a1cfe35722d151cf70585cee212755653 93c0956

再次查看集群状态,如下图所示,8008这个slave节点已经移除,并且该节点的redis服务也已被停止

 2.5、删除8007主节点[不删除四主四从]

因为主节点的里面是有分配了hash槽的,所以我们这里必须先把8007里的hash槽放入到其他的可用主节点中去,然后再进行移除节点操作,不然会出现数据丢失问题(目前只能把master的数据迁移到一个节点上,暂时做不了平均分配功能),执行命令如下:

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster reshard 192.168.0.61:8007

迁移验证:会发现8007下面已经没有任何hash槽了,证明迁移成功!

 用del-node命令删除8007主节点即可

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster del‐node 192.168.0.61:8007 2728a594a0498e98e4b83a537e19f9a0a 3790f38

查看最终集群状态,发现一切恢复如初,至此水平扩展结束

推荐学习:Redis视频教程

위 내용은 Redis 클러스터 운영 예시에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제