이 기사에서는 Redis 인스턴스 추가, 8007을 마스터 노드로 구성, 8008을 8007의 슬레이브 노드로 구성 등 클러스터 작업과 관련된 문제를 주로 정리하는 Redis에 대한 관련 지식을 제공합니다. 함께, 모두에게 도움이 되기를 바랍니다.
추천 학습: Redis 동영상 튜토리얼
기존 기반을 바탕으로 3개의 마스터와 3개의 슬레이브로 구성된 기본 버전은 다음과 같습니다
/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개의 슬레이브 노드로 정상적으로 실행되고 있습니다.
이 3개의 마스터 노드는 모든 해시 슬롯을 Redis 클러스터의 스토리지 슬롯으로 구성합니다. 슬레이브 포인트는 각 마스터 노드의 백업 슬레이브 노드이며 스토리지 슬롯은 표시되지 않습니다.
노드를 추가한 후의 클러스터는 아래 그림과 같습니다. 점선 상자
es 2.1 add redis 인스턴스
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
/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.
참고: 노드가 성공적으로 추가되면 새로 추가된 노드에는 아무 것도 포함되지 않습니다. 데이터에는 슬롯(해시 슬롯)이 할당되지 않았기 때문에 새 노드에 해시 슬롯을 수동으로 할당해야 합니다
2.3. 8008을 8007redis-cli 명령을 사용하여 8007에 대한 해시 슬롯을 할당하고, 다음에서 마스터 노드를 찾습니다. 클러스터를 다시 샤딩하고
/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster reshard 192.168.0.61:8001
/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 중국어 웹사이트의 기타 관련 기사를 참조하세요!