一、R edis的3主3从模式部署
1.1第一步:
用plug用户在3台服务器/usr/local下创建文件夹redis-cluster目录,然后在其下面再分别创建6个文件夹(服务器1创建:8001、8002文件夹;服务器2创建:8003 8004文件夹;服务器3创建:8005 8006文件夹)
- mkdir -p /usr/local/redis-cluster #每个服务器都执行
- cd /usr/local/redis-cluster #每个服务器都执行
- 服务器1:mkdir 8001 8002 #服务器1执行
- 服务器2:mkdir 8003 8004 #服务器2执行
- 服务器3:mkdir 8005 8006 #服务器3执行
1.2第二步:
把redis/etc/下自带的redis.conf配置文件copy到8001下(同时也拷贝到8002、8003、8004、8005、8006目录下),8001修改如下内容:
- daemonize yes(后台启动)
- port 8001 (分别对每个机器的端口号进行设置)
- bind 192.168.0.6(配置当前机器的ip,这里方便redis集群定位机器,不绑定可能会出现循环查找集群节点机器的情况)
- dir /usr/local/redis-cluster/8001/(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
- cluster-enabled yes(启动集群模式)
- cluster-config-file nodes-8001.conf(这里800x最好和port对应上)
- cluster-node-timeout 5000(一台机器超时5秒,踢出去该机器。)
- appendonly yes
- requirepass 123456 (redis密码)
1.3第三步:
参考第二步,把8002-8006的redis.conf配置文件也修改下,重点配置第2、3、4、6项里的端口号,可以用批量替换的方法:
:%s/源字符串/g(:%s/8001/8002/g)
1.4第四步:
分别启动6个redis实例,然后检查是否启动成功
- /home/redis/bin/redis-server /usr/local/redis-cluster/800*/redis.conf
- ps -ef | grep redis(查看是否启动成功)
1.5第五步:
由于redis集群需要使用ruby命令,所以我们需要安装ruby
- yum install ruby
- yum install rubygems(1和2结合命令为:yum -y install ruby ruby-devel rubygems rpm-build)
- gem install redis --version 4.4.3(安装redis和ruby通讯的接口,版本不一定要和redis对应)
1.6第六步(把以上的单实例,组建为集群)
如下:启动、测试集群
- 启动集群
./redis-cli --cluster create 192.168.157.142:8001 192.168.157.142:8002 192.168.157.143:8003 192.168.157.143:8004 192.168.157.144:8005 192.168.157.144:8006 --cluster-replicas 1 -a 123456)
注释:上面1是指主从1:1(主/从) ,前面3台是主,后面3台是从

命令执行后:

Can I set the above......(是否按这个配置):yes
搭建完成:


1.7第七步验证集群
验证集群
- 连接任意一个客户端即可:./redis-cli -c -h -p (-c表示集群模式,指定ip地址和端口号),如:/usr/local/redis/bin/redis-cil -c -h 192.168.0.60 -p 800*(联机集群)
- 进行验证:cluster into(查看集群信息)、cluster nodes(查看节点列表)
- 进行数据操作验证
- set name hcf #登录服务器1写一个
- get name #登录服务器2或3看看能否获取该值,如果可以就没问题
- 关闭集群则需要逐个进行关闭,使用命令
- /usr/local/redis/bin/redis-cil -c -h 192.168.0.60 -p 8001 shutdown
- ps -ef |grep redis
- /usr/local/redis/bin/redis-cil -c -h 192.168.0.60 -p 8002 -a 123456(密码)
- cluster nodes(查看节点列表)
1.8第八步:遇到的错误:
问题1:

解决1:给redis设置密码,详见:
https://blog.csdn.net/m0_64284147/article/details/125682121
问题2:

解决2:

问题3:

解决3:protected-mod
问题4
解决4:给redis加密码,重启
问题5:启动集群时提示这个
解决5:这个只是提示密码不安全或者密码不能这么明显,这个不影响启动
问题6:启动单独redis时,提示这个
解决6:这个提示使用了集群模式启动,内存不足会......样的意思,待研究。不过不影响集群启动。
问题7:启动集群时提示这个
解决:这个是因为需要把每台redis都启动,然后再去启动集群。
问题8、查看、清理redis缓存值
查看redis缓存的值,首先登录redis:
>keys *
清理所有缓存值:
flushall
二、R edis集群启动和关闭命令
注释:启动命令上面后,下面这个是总结启动和关闭
2.1文件夹介绍:
/home/plug/redis-7.2.1:redis-7.2.1.tar.gz安装包解压的文件
redis:redis-7.2.1的安装文件,里面有bin文件夹,是负责启动redis和集群的
redis-cluster:redis集群的配置文件
2.2启动集群:
启动集群前先启动6个redis,分别是8001、8002、8003、8004、8005、8006端口
32服务器redis启动:
cd /home/plug/redis/bin
./redis-server /home/plug/redis-cluster/8001/redis.conf
./redis-server /home/plug/redis-cluster/8002/redis.conf

提示这个:大概意思是使用了集群模式启动,内存什么的。但不影响集群启动。
33服务器redis启动:
cd /home/plug/redis/bin
./redis-server /home/plug/redis-cluster/8003/redis.conf
./redis-server /home/plug/redis-cluster/8004/redis.conf

提示这个:大概意思是使用了集群模式启动,内存什么的。但不影响集群启动。
34服务器redis启动:
cd /home/plug/redis/bin
./redis-server /home/plug/redis-cluster/8005/redis.conf
./redis-server /home/plug/redis-cluster/8006/redis.conf

提示这个:大概意思是使用了集群模式启动,内存什么的。但不影响集群启动。
启动集群:
在32服务器上启动即可:
cd /home/plug/redis/bin
./redis-cli --cluster create 10.128.38.32:8001 10.128.38.32:8002 10.128.38.33:8003 10.128.38.33:8004 10.128.38.34:8005 10.128.38.34:8006 --cluster-replicas 1 -a 123456
启动成功标志:

验证集群是否成功:
在32服务器登陆8001或者8002端口的redis,然后存几个字段值。
在33和34服务器,查看能否查看32存的字段值。可以查看就说明集群通了。
32服务器存储值:
root@localhost bin\]# cd /home/plug/redis/bin/ \[root@localhost bin\]# ./redis-cli -c -h 10.128.38.32 -p 8001 -a 123456 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 10.128.38.32:8001\> set name10 lixin -\> Redirected to slot \[15374\] located at 10.128.38.34:8005 OK 10.128.38.34:8005\> set name11 hcf OK 10.128.38.34:8005\>  ****33、34服务器查看值:**** ****\[plug@localhost bin\]$ cd /home/plug/redis/bin/**** ****\[plug@localhost bin\]$ ./redis-cli -c -h 10.128.38.34 -p 8006 -a 123456**** ****Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.**** ****10.128.38.34:8006\> get name10**** ****-\> Redirected to slot \[15374\] located at 10.128.38.34:8005**** ****"lixin"**** ****10.128.38.34:8005\> get name11**** ****"hcf"**** ****10.128.38.34:8005\>****  ##### **其他(组建集群):** 组建集群命令: cd /home/plug/redis-7.2.1/src ./redis-trib.rb create --replicas 1 10.128.38.32:8001 10.128.38.32:8002 10.128.38.33:8003 10.128.38.33:8004 10.128.38.34:8005 10.128.38.34:8006 ### **2.3关闭集群:** 登陆每台集群: ./redis-cli -c -h 10.128.38.32 -p 8001 -a 123456 关闭: shutdown