Redis Cluster 군집 동적 확장 실현

머리말
4.567915.글 에서 우 리 는 한 걸음 한 걸음 여러분 에 게 Redis 의 Cluster 군집 환경 을 구축 하고 3 개의 주요 노드 와 3 개의 노드 에서 의 Cluster 환경 을 형성 하 는 것 을 가 르 쳤 습 니 다.물론 클 러 스 터 info 명령 을 사용 하여 클 러 스 터 군집 의 상 태 를 볼 수 있 고 클 러 스 터 Nodes 명령 을 사용 하여 클 러 스 터 군집 각 노드 의 상세 한 정보 와 관 계 를 자세히 알 수 있 습 니 다.우 리 는 메 인 노드 에 데 이 터 를 추가 하고 데 이 터 를 조작 할 수 있 으 며 노드 에서 데 이 터 를 읽 을 수 있 습 니 다.이런 조작 은 물론 문제 가 없습니다.오늘 이 글 은 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 환경 을 멈 추 지 않 고 동적 으로 클 러 스 터 환경 에 주 를 추가 하고 노드 와 동적 으로 클 러 스 터 환경 에서 노드 를 삭제 하 는 방법 을 설명 합 니 다.자,쓸데없는 말 은 그만 하고 오늘 의 설명 을 시작 합 시다.시작 하기 전에 먼저 설명해 야 합 니 다.redis 의 동적 확장 작업 은 모두 redis-trib.rb 스 크 립 트 파일 을 통 해 이 루어 졌 기 때문에 이 스 크 립 트 파일 에 대한 설명 을 살 펴 보 겠 습 니 다.효 과 는 그림 과 같 습 니 다.

[root@linux redis] # ruby redis-trib.rb

2.클 러 스 터 군집 증가 작업
이제 막 우리 의 작업 을 시작 했다.나 는 노드 증가 와 삭제 노드 를 나 누 어 쓰 고 노드 를 증가 하거나 삭제 했다.나 는 두 가지 측면 으로 나 누 었 다.하 나 는 메 인 노드 의 작업 이 고 다른 하 나 는 노드 의 작업 이다.메 인,노드 가 조작 에 있어 차이 가 있 기 때문에 나 누 어 말한다.노드 를 추가 하 는 순 서 는 Master 메 인 노드 를 추가 한 다음 에 Slave 가 노드 에서 증가 하 는 것 입 니 다.물론 이 글 은 지난 글 에서 말 한 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 모델 을 바탕 으로 한 것 입 니 다.그러면 먼저전편글 이 구축 한 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 모델 에 대한 상세 한 정 보 를 살 펴 보 겠 습 니 다.효과 그림:


1.마스터 메 인 서버 노드 동적 증가
1.1 디 렉 터 리 7006(Master 메 인 노드 폴 더)과 7007(Slave 는 노드 폴 더 에서)을 만 들 고 이전 Cluster 클 러 스 터 클 러 스 터 노드 7000-7005 의 모든 노드 에서 프로필 redis.conf 를 7006 과 7007 디 렉 터 리 로 복사 합 니 다.

[root@linux redis-cluster]# pwd
                [root@linux redis-cluster]# /root/application/program/redis-cluster/

                [root@linux redis-cluster]# mkdir 7006 7007

                [root@linux redis-cluster]# ls
                7000 7001 7002 7003 7004 7005 7006 7007

                   [root@linux redis-cluster]# cp 7000/redis.conf 7006
                   [root@linux redis-cluster]# cp 7000/redis.conf 7007
1.디 렉 터 리 생 성:

2.프로필 복사:

1.2 설정 파일 을 수정 하고 7006 과 7007 디 렉 터 리 아래 의 redis.conf 설정 파일 의 포트 를 상응 하 게 수정 합 니 다.자신의 디 렉 터 리 이름과 일치 합 니 다.수정 항목 은 다음 과 같 습 니 다.(Liux 환경 에서 다음 명령 을 실행 하여 전역 적 으로 교체 할 수 있 습 니 다.%s/7000/7006/g,%s/7000/7007/g,저장 하고 종료 하면 됩 니 다)
1.2.1,7006 노드 의 설정 파일:redis.conf

bind 192.168.127.130

                      port 7006
    
                      daemonize yes

                      pidfile /var/run/redis-7006.pid

                      logfile /root/application/program/redis-cluster/7006/redis.log
    
                      dir /root/application/program/redis-cluster/7006/

                      cluster-enabled yes

                      cluster-config-file nodes-7006.conf


                      cluster-node-timeout 15000

                      appendonly yes

                      appendfsync always
1.2.2,7007 노드 의 설정 파일:redis.conf

bind 192.168.127.130

                      port 7007

                      daemonize yes

                      pidfile /var/run/redis-7007.pid

                      logfile /root/application/program/redis-cluster/7007/redis.log
    
                      dir /root/application/program/redis-cluster/7007/

                      cluster-enabled yes

                      cluster-config-file nodes-7007.conf


                      cluster-node-timeout 15000

                      appendonly yes

                      appendfsync always
1.3.7006 과 7007 디 렉 터 리 에서 Redis 인 스 턴 스 를 시작 하고 효 과 를 봅 니 다.

[root@linux redis]# pwd
                [root@linux redis]# /root/application/program/redis/


                [root@linux redis]# redis-server ../redis-cluster/7006/redis.conf
                [root@linux redis]# redis-server ../redis-cluster/7007/redis.conf
효과 그림:


1.4、7006 메 인 노드 를 Cluster 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 클 러

 [root@linux redis]# pwd
                [root@linux redis]# /root/application/program/redis/

                [root@linux redis]# ruby redis-trib.rb add-node 192.168.127.130:7006 192.168.127.130:7000
메모:새 노드 를 추가 하 는 데 성공 하면 새로운 노드 는 데이터 가 없습니다.데이터 슬롯(해시 slots)을 할당 하지 않 았 기 때문에 수 동 으로 작업 해 야 합 니 다.
1.4.1、7006 증가:(192.168.127.30:7006,캡 처 주소 오류,포트 번 호 는 7006,9006 이 아 닙 니 다)

1.4.2 노드 증가 성공.

1.4.3、cluster info 검증:

1.4.4,cluster nodes 검증:

1.5.7006 Master 메 인 노드 에 데이터 Slots 를 분배 합 니 다.분배 방법 은 클 러 스 터 에서 모든 메 인 노드(Master 메 인 노드 만 데이터 slots 가 있 기 때 문)를 알 고 이 를 재 분할 하 는 것 입 니 다.

[root@linux redis]# pwd
                [root@linux redis]# /root/application/program/redis/

                [root@linux redis]# ruby redis-trib.rb reshard 192.168.127.130:7000
1.5.1 분배 데이터 슬롯:

1.5.2 데이터 슬롯 을 수신 하 는 노드 와 데이터 슬롯 이 발생 하 는 방식 을 선택한다.

1.5.3 분배 계획 을 집행 한다.

1.5.4 데이터 슬롯 분배 성공:

2,동적 증가 Slave 서버 노드 에서
메 인 노드 7006 을 추가 할 때 앞의 3 단 계 는 모두 있 습 니 다.즉,1.1-1.3 에서 그 다음 에 야 메 인 노드 를 구축 하 는 내용 입 니 다.앞의 3 단 계 는 노드 7007 에서 도 필수 적 입 니 다.저 는 이런 절 차 를 메 인 노드 7006 을 만 드 는 절차 에 썼 을 뿐 입 니 다.여러분 들 은 알 고 계 세 요.
2.1 7007 노드 를 클 러 스 터 에 추가

[root@linux redis]# pwd
[root@linux redis]# /root/application/program/redis/
[root@linux redis]# ruby redis-trib.rb add-node 192.168.127.130:7007 192.168.127.130:7000
효과 그림:

2.2 7007 노드 를 7006 의 종 노드 로 지정 하여 주종 의 설정 을 실현 한다.

[root@linux redis]# pwd
[root@linux redis]# /root/application/program/redis/
[root@linux redis]# redis-cli -c -h 192.168.127.130 -p 7007  //  7007
192.168.127.130::7007>cluster replicate 71ecd970838e9b400a2a6a15cd30a94ab96203bf(    ID,   7006)
192.168.127.130::7007>OK
효과 그림:

3.클 러 스 터 클 러 스 터 클 러 스 터 삭제 작업
우 리 는 위의 절차 에서 7006 과 7007 두 개의 주종 노드 를 만 들 었 기 때문에 다음 작업 은 내 가 바로 이 Cluster 군집 모드 에서 이 두 노드 를 동적 으로 삭제 하 는 것 이다.삭제 순 서 는 Slave 가 노드 에서 삭제 한 다음 에 Master 메 인 노드 를 삭제 하고 마지막 으로 우리 가 지난 글 에서 만 든 Cluster 클 러 스 터 클 러 스 터 모드,즉 3 개의 메 인 노드 와 3 개의 노드 로 복원 하 는 것 입 니 다.현재 4 개의 메 인 노드 와 4 개의 종 노드 입 니 다.효과 그림:

1.서버 노드 에서 Slave 를 동적 으로 삭제 합 니 다.
1.1.7007 을 노드 에서 삭제 하고 del-node 명령 을 입력 하 며 노드 를 삭제 하 는 IP 주소 와 Port 포트 번 호 를 지정 하 는 동시에 이 노드 ID 이름 도 제공 합 니 다.

[root@linux redis]# pwd
[root@linux redis]# /root/application/program/redis/
[root@linux redis]# ruby redis-trib.rb del-node 192.168.127.130:7007 991ed242102aaa08873eb9404a18e0618a4e37bd
그림%1 개의 캡 션 을 편 집 했 습 니 다.

삭제 전 그림:

삭제 후 그림:

2.마스터 메 인 서버 노드 동적 삭제
Master 메 인 노드 를 삭제 하려 면 좀 번 거 로 울 수 있 습 니 다.Master 메 인 노드 에 데이터 슬롯(slots)이 있 기 때문에 데이터 가 손실 되 지 않도록 이 데이터 슬롯 을 다른 Master 메 인 노드 로 옮 긴 다음 에 메 인 노드 를 삭제 해 야 합 니 다.
2.1 다시 조각 을 나 누고 삭제 할 Master 메 인 노드 의 데이터 슬롯 을 다른 Master 메 인 노드 로 이동 시 켜 데이터 가 손실 되 지 않도록 한다.

[root@linux redis]# pwd
[root@linux redis]# /root/application/program/redis/
[root@linux redis]# ruby redis-trib.rb reshard 192.168.127.130:7006
2.1.1.몇 개의 슬롯 을 제거 하 는 지 그림 과 같다.입력 200 을 만 들 고 여 기 는 199 를 입력 해 야 한다.계산 은 0 에서 시작 되 기 때문에 기억 해 야 한다.

2.1.2 수용 슬롯 의 Master 메 인 노드 ID:이 노드 는 임의의 메 인 노드 일 수 있 습 니 다.저 는 7002 를 선택 하 겠 습 니 다.ID 는 3b025b3ecfa65f462de639c7a 412 be443cf1dd1c 입 니 다.

2.1.3 어느 메 인 노드 에서 제거 합 니까?이 메 인 노드 는 7006 이 고 ID 는 71ecd 970838 e9b400a2a6a15cd30a94ab96203 bf 입 니 다.

2.1.4 구역 계획 을 실행 하고 yes 를 선택 합 니 다.파 티 션 완료,효 과 는 그림:

2.1.5 현재 7006 메 인 노드 에 데이터 슬롯 이 없습니다.

2.2 7006 메 인 노드 를 삭제 하고 노드 를 삭제 할 IP 주소 와 Port 포트 를 제공 합 니 다.물론 삭제 할 노드 의 ID 이름 도 있 습 니 다.

[root@linux redis]# pwd
[root@linux redis]# /root/application/program/redis/
[root@linux redis]# ruby redis-trib.rb del-node 192.168.127.130:7006 71ecd970838e9b400a2a6a15cd30a94ab96203bf
2.2.1 삭제 성공

2.2.2 노드 효과 보기

총화
오늘 은 여기까지 쓰 고 작은 총 결 을 하 겠 습 니 다.메 인 복사 와 보초병 모드 라 는 두 개의 클 러 스 터 모델 은 동적 으로 확장 할 수 없 기 때문에 메 인 노드 간(여러 개의 메 인 노드 가 있 는 상황)데이터 가 똑 같 아서 메 인 노드 의 용량 이 전체 클 러 스 터 의 병목 이 되 었 다.클 러 스 터 용량 을 확장 하려 면 메 인 노드 의 용량 을 확대 해 야 한다.상기 문제 로 인해 redis 는 3.0 에서 Cluster 클 러 스 터 클 러 스 터 모델 을 시작 합 니 다.이 모델 은 메 인 노드 간 의 데이터 가 다 르 고 데이터 도 수요 에 따라 자동 으로 다른 노드 로 전환 할 수 있 습 니 다.이렇게 하면 가로 동적 확장 을 실현 할 수 있 고 새로 추 가 된 주종 노드 는 새로운 데 이 터 를 저장 하 는 데 사용 하면 이전의 노드 의 데이터 에 아무런 영향 을 주지 않 을 수 있다.게다가 설정 도 간단 하 다.이것 이 야 말로 우리 가 필요 로 하 는 클 러 스 터 모델 이다.
레 디 스 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 의 동적 확장 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.레 디 스 클 러 스 터 클 러 스 터 클 러 스 터 클 러 스 터 의 동적 확장 내용 에 대해 서 는 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기