서문:
클러스터링은 안정적이고 효율적인 상태를 달성하기 위해 서버 수를 추가하여 동일한 서비스를 제공하는 것을 의미합니다. Redis 클러스터를 사용하는 이유는 무엇입니까? Redis 클러스터는 Redis의 읽기 및 쓰기 기능을 향상시킬 수 있습니다.
이제 정식으로 Redis 클러스터에 대해 알아봅시다.
준비 작업:
4가지 구성 요소가 필요합니다: Redis, Ruby 언어 런타임 환경, Redis Ruby 드라이버 redis-xxxx.gem 및 Redis 클러스터 redis-trib.rb 생성 도구. Redis-trib.rb 도구를 사용하여 Redis 클러스터를 생성합니다. 이 파일은 Ruby 언어로 작성되어 있으므로 Ruby 개발 환경을 설치하고 redis-xxxx.gem을 드라이브해야 합니다.
1) Redis 설치 파일 다운로드: https://github.com/MSOpenTech/redis/releases/ Redis는 msi 및 zip 형식의 다운로드 파일을 제공합니다. Redis-x64-3.2.100 버전. 여기.
2) Ruby 설치 파일 다운로드: http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe
3) Ruby 환경에서 Redis 드라이버 다운로드: https:// rubygems.org/gems/redis/versions/3.2.2, 호환성을 고려하여 여기서 다운로드되는 것은 버전 3.2.2
입니다. 참고: 페이지 오른쪽 하단에 있는 관련 링크에서 다운로드하세요
4) Redis 공식 버전 다운로드 Redis 클러스터를 생성하는 Ruby 스크립트 파일 redis-trib.rb, 경로는 다음과 같습니다: https://raw.githubusercontent.com/MSOpenTech/redis/3.0/src/redis-trib.rb
Redis 설치
는 Redis-x64-3.2.100.zip의 압축을 풀고 다운로드됩니다. 사용 편의성을 위해 D:Redis-ClusterRedis와 같은 드라이브 문자의 루트 디렉터리에 배치하는 것이 좋습니다. -x64-3.2.100.
Redis를 설치하고 3개의 인스턴스를 실행합니다(Redis 클러스터에는 최소 3개의 노드가 필요하며, 3개 미만은 생성할 수 없습니다).
구성 파일을 통해 6개의 다른 Redis 인스턴스를 시작합니다. Redis의 기본 포트는 6379이므로 여기서는 6380입니다. 6381, 6382, 6383, 6384, 6385는 6개의 Redis 인스턴스를 실행하는 데 사용됩니다.
참고:
(1) 불필요한 오류를 방지하려면 구성 파일을 utf8 형식으로 저장해야 하며 주석을 포함하지 않아야 합니다.
(2) 구성 파일에 로그를 저장하는 방법에는 두 가지가 있습니다. 파일, 시스템 로그에 저장) 필요에 따라 둘 중 하나를 선택하십시오:
loglevel notice #日志的记录级别,notice是适合生产环境的 logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6380_log.txt" #指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录 syslog-enabled yes #是否使用系统日志 syslog-ident redis6380 #在系统日志的标识名
여기서는 파일에 저장하는 방법을 사용하므로 먼저 Redis 디렉터리 D:Redis-ClusterRedis-x64- 아래에 새 Logs 폴더를 만듭니다. 3.2.100 .
Redis 설치 루트 디렉터리에서 인코딩 형식 utf-8(redis.6380.conf, redis.6381.conf, redis.6382.conf, redis.6383.conf, redis.6384.conf, redis)을 사용하여 구성 파일을 만듭니다. .6385.conf.
redis.6380.conf,
port 6380 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6380_log.txt" appendonly yes appendfilename "appendonly.6380.aof" cluster-enabled yes cluster-config-file nodes.6380.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
redis.6381.conf,
port 6381 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6381_log.txt" appendonly yes appendfilename "appendonly.6381.aof" cluster-enabled yes cluster-config-file nodes.6381.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
redis.6382.conf,
port 6382 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6382_log.txt" appendonly yes appendfilename "appendonly.6382.aof" cluster-enabled yes cluster-config-file nodes.6382.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
redis.6383.conf,
port 6383 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6383_log.txt" appendonly yes appendfilename "appendonly.6383.aof" cluster-enabled yes cluster-config-file nodes.6383.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
redis.6384.conf,
port 6384 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6384_log.txt" appendonly yes appendfilename "appendonly.6384.aof" cluster-enabled yes cluster-config-file nodes.6384.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
redis.6385.conf
port 6385 loglevel notice logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6385_log.txt" appendonly yes appendfilename "appendonly.6385.aof" cluster-enabled yes cluster-config-file nodes.6385.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
(동영상 공유 학습: redis 동영상 튜토리얼)
구성은 다음과 같이 설명됩니다.
port 6380 #端口号 loglevel notice #日志的记录级别,notice是适合生产环境的 logfile "Logs/redis6380_log.txt" #指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录 syslog-enabled yes #是否使用系统日志 syslog-ident redis6380 #在系统日志的标识名 appendonly yes #数据的保存为aof格式 appendfilename "appendonly.6380.aof" #数据保存文件 cluster-enabled yes #是否开启集群 cluster-config-file nodes.6380.conf cluster-node-timeout 15000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
위 구성 파일을 Redis 디렉토리에 저장하고 이 구성 파일을 사용하여 6 Redis 서비스를 설치하는 경우 명령은 다음과 같습니다.
D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6380.conf --service-name redis6380 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6381.conf --service-name redis6381 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6382.conf --service-name redis6382 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6383.conf --service-name redis6383 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6384.conf --service-name redis6384 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6385.conf --service-name redis6385
참고:
1) Redis 클러스터를 다시 시작할 때 문제를 방지하려면 redis.6380.conf와 같은 구성 파일의 전체 경로를 사용하는 것이 가장 좋습니다.
2) 제거 명령은 다음과 같습니다.
D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6380.conf --service-name redis6380 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6381.conf --service-name redis6381 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6382.conf --service-name redis6382 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6383.conf --service-name redis6383 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6384.conf --service-name redis6384 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6385.conf --service-name redis6385
Start this 6 services, 명령은 다음과 같습니다.
D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6380 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6381 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6382 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6383 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6384 D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6385
실행 결과:
Ruby 설치
(1) Ruby 환경 설치.
다운로드한 "rubyinstaller-2.2.4-x64.exe"를 두 번 클릭하여 설치합니다. 마찬가지로, 간편한 작동을 위해 C:Ruby22와 같은 드라이브 문자의 루트 디렉터리에 설치하는 것이 좋습니다. -x64. 설치 중 마지막 2개를 선택하세요. 옵션
은 시스템의 환경 변수에 ruby를 추가한다는 의미이며 cmd 명령에서 직접 ruby 명령을 사용할 수 있습니다
(1) Ruby 환경의 Redis 드라이버
다운받은 "Ruby 환경 Redis 드라이버 파일(redis-3.2.2.gem)을 Ruby 설치 루트 디렉터리(C:Ruby22-x64)에 복사합니다.
그런 다음 다음과 같이 설치 명령을 실행합니다.
gem install --local path_to_gem/filename.gem
Redis 클러스터 생성
다운로드한 "ruby 스크립트 파일 redis-trib.rb를 사용하여 Redis 클러스터 생성"을 Redis 설치 루트 디렉터리(D:Redis)에 복사합니다. -ClusterRedis- x64-3.2.100).
(1) redis-trib.rb를 사용하여 Redis 클러스터를 생성합니다.
MD 아래의 Redis 디렉터리로 전환합니다(D:Redis-ClusterRedis-x64-3.2.100)
D:/Redis-Cluster/Redis-x64 -3.2 .100/redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6385
D:\Redis-Cluster\Redis-x64-3.2.100>redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 >>> Creating cluster Connecting to node 127.0.0.1:6380: OK Connecting to node 127.0.0.1:6381: OK Connecting to node 127.0.0.1:6382: OK Connecting to node 127.0.0.1:6383: OK Connecting to node 127.0.0.1:6384: OK Connecting to node 127.0.0.1:6385: OK >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 Adding replica 127.0.0.1:6383 to 127.0.0.1:6380 Adding replica 127.0.0.1:6384 to 127.0.0.1:6381 Adding replica 127.0.0.1:6385 to 127.0.0.1:6382 M: bb6ef615bb0ae13275943caec0db9d30b9f35c5e 127.0.0.1:6380 slots:0-5460 (5461 slots) master M: b4d120f2983ad683f7b68992e1ba414722238db7 127.0.0.1:6381 slots:5461-10922 (5462 slots) master M: 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 127.0.0.1:6382 slots:10923-16383 (5461 slots) master S: 5d154137180284d926ef51a91fc75f9438249ef8 127.0.0.1:6383 replicates bb6ef615bb0ae13275943caec0db9d30b9f35c5e S: ad151680a3e36cf2083ef822be0bdb075a7d36de 127.0.0.1:6384 replicates b4d120f2983ad683f7b68992e1ba414722238db7 S: 9a2260a5a6a2add84b622a453a6a7b86a29d180d 127.0.0.1:6385 replicates 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 Can I set the above configuration? (type 'yes' to accept): yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join... >>> Performing Cluster Check (using node 127.0.0.1:6380)M: bb6ef615bb0ae13275943caec0db9d30b9f35c5e 127.0.0.1:6380 slots:0-5460 (5461 slots) master M: b4d120f2983ad683f7b68992e1ba414722238db7 127.0.0.1:6381 slots:5461-10922 (5462 slots) master M: 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 127.0.0.1:6382 slots:10923-16383 (5461 slots) master M: 5d154137180284d926ef51a91fc75f9438249ef8 127.0.0.1:6383 slots: (0 slots) master replicates bb6ef615bb0ae13275943caec0db9d30b9f35c5e M: ad151680a3e36cf2083ef822be0bdb075a7d36de 127.0.0.1:6384 slots: (0 slots) master replicates b4d120f2983ad683f7b68992e1ba414722238db7 M: 9a2260a5a6a2add84b622a453a6a7b86a29d180d 127.0.0.1:6385 slots: (0 slots) master replicates 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
비고:
(1)--replicas #指定集群中每个主节点配备几个从节点,这里设置为1。
(2)redis-trib.rb工具的使用
、create:创建集群 、check:检查集群 、info:查看集群信息 、fix:修复集群 、reshard:在线迁移slot 、rebalance:平衡集群节点slot数量 、add-node:将新节点加入集群 、del-node:从集群中删除节点 、set-timeout:设置集群节点间心跳连接的超时时间 、call:在集群全部节点上执行命令 、import:将外部redis数据导入集群
(2)检验是否真的创建成功
输入以下命令:
redis-trib.rb check 127.0.0.1:6380
如果现实信息如下,则说明创建的Redis集群是没问题。
D:\Redis-Cluster\Redis-x64-3.2.100>redis-trib.rb check 127.0.0.1:6380 Connecting to node 127.0.0.1:6380: OK Connecting to node 127.0.0.1:6383: OK Connecting to node 127.0.0.1:6382: OK Connecting to node 127.0.0.1:6384: OK Connecting to node 127.0.0.1:6385: OK Connecting to node 127.0.0.1:6381: OK >>> Performing Cluster Check (using node 127.0.0.1:6380) M: bb6ef615bb0ae13275943caec0db9d30b9f35c5e 127.0.0.1:6380 slots:0-5460 (5461 slots) master 1 additional replica(s) S: 5d154137180284d926ef51a91fc75f9438249ef8 127.0.0.1:6383 slots: (0 slots) slave replicates bb6ef615bb0ae13275943caec0db9d30b9f35c5e M: 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 127.0.0.1:6382 slots:10923-16383 (5461 slots) master 1 additional replica(s) S: ad151680a3e36cf2083ef822be0bdb075a7d36de 127.0.0.1:6384 slots: (0 slots) slave replicates b4d120f2983ad683f7b68992e1ba414722238db7 S: 9a2260a5a6a2add84b622a453a6a7b86a29d180d 127.0.0.1:6385 slots: (0 slots) slave replicates 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 M: b4d120f2983ad683f7b68992e1ba414722238db7 127.0.0.1:6381 slots:5461-10922 (5462 slots) master 1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. D:\Redis-Cluster\Redis-x64-3.2.100>
(3)信息查询
使用Redis客户端Redis-cli.exe来查看数据记录数,以及集群相关信息
原文作者:cctext
原文链接:https://www.cnblogs.com/yy3b2007com/p/11033009.html
相关推荐:redis数据库教程
위 내용은 Windows에서 Redis 클러스터를 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!