一、概述
- Redis3.0版本以.上开始支持cluster,采用的是hash slot(hash槽),可以将多个Redis实例整合在一起,形成一个群集,也就是将数据分散到群集的多台机器上。
二、Redis集群的优势
- 自动分割数据到不同的节点上,解决单点故障
- 整个集群的部分节点失败或者不可达的情况下能够继续处理命令
三、redis群集部署
3.1、环境介绍
- redis群集至少需要6个节点服务器,3主3备,但主节点宕机时,备用节点能变为主节点继续服务。
- master1:192.168.5.150/24
- master2:192.168.5.151/24
- master3:192.168.5.152/24
- slave1:192.168.5.250/24
- slave2:192.168.5.251/24
- slave3:192.168.5.252/24
3.2、实验步骤
- 6个节点安装redis软件
yum install gcc gcc-c++ make -y ##安装环境包
tar zxvf redis-5.0.4.tar.gz -C /opt ##解压源码包到opt目录下
cd /opt/redis-5.0.4/
make -j8
make PREFIX=/usr/local/redis install ###指定安装路径
- 6个节点都关闭防火墙,启动redis服务
systemctl stop firewalld ##关闭防火墙
setenforce 0 ##关闭增强型安全功能
ln -s /usr/local/redis/bin/* /usr/local/bin/ ##创建软连接让系统环境识别
cd /opt/redis-5.0.4/utils/
./install_server.sh ##执行启动脚本
##......省略启动过程,
Please select the redis executable path [/usr/local/bin/redis-server] /usr/local/bin/redis-server ###手动输入
netstat -natp | grep 6379 ##检查redis 6379端口是否开启
- 6个节点修改配置文件
vi /etc/redis/6379.conf
##70行 bind 127.0.0.1 注释掉
##89行 改为 protected-mode no 关掉保护
##839 开启群集功能 cluster-enabled yes 前面注释去掉
##841 群集节点配置文件 cluster-config-file nodes-6379.conf ###前面的#号去掉
##847 超时时间 cluster-node-timeout 15000 ###前面的#号去掉
### cluster-require-full-coverage no ###前面的#号去掉 yes改成no,当主库down机,没有从库时群集仍然可用
###700行 appendonly yes 开启持久化
- 6个节点重启redis服务
/etc/init.d/redis_6379 restart
###redis的配置文件在 /var/lib/redis/6379/下
- 建立群集,只需要在一个节点上操作
yum -y install ruby rubygems
##上传redis-3.2.0.gem 这个包到/opt目录下执行下面命令,(gem下载地址:https://rubygems.org/gems/redis/versions/3.0.2)
cd /opt
gem install redis --version 3.2.0
cd /opt/redis-5.0.4/src/
redis-cli --cluster create --cluster-replicas 1 192.168.5.150:6379 192.168.5.151:6379 192.168.5.152:6379 192.168.5.250:6379 192.168.5.251:6379 192.168.5.252:6379
Can I set the above configuration? (type 'yes' to accept): yes ###这个地方要输入yes
- 远程进入redis数据库
redis-cli -h 192.168.5.150 -p 6379 -c
192.168.5.150:6379> cluster info ####查看集群状态
192.168.5.150:6379> cluster nodes ####查看节点信息
eaebf0547271d50362bf5da65558de335d76c1d0 192.168.5.152:6379@16379 master - 0 1584884400507 3 connected 10923-16383
flcd054727add70f5c8045c378j0dfbd52604702 192.168.5.252:6379@16379 slave eaebf0547271d50362bf5da65558de335d76c1d0 - 0 1584884400621 6 connected
01930e787a3af7bf3cd56085e490d540e6d7800b 192.168.5.150:6379@16379 myself,master - 0 1584884400000 1 connected 0-5460
352dcd0258945621452fd4efdcf00249537706a2 192.168.5.250:6379@16379 slave 01930e787a3af7bf3cd56085e490d540e6d7800b - 0 1584884678511 5 connected
bf62d7ab749ef2afadd70f5c8045c378e770b411 192.168.5.151:6379@16379 master - 0 1584884399494 2 connected 5461-10922
45698hhcdf0gf70f5c8045c378jcd765f0c27664 192.168.5.251:6379@16379 slave bf62d7ab749ef2afadd70f5c8045c378e770b411 - 0 1584884400621 4 connected
四、验证群集功能
- 数据同步功能
在mster节点上创建一个键值对
redis-cli -h 192.168.5.150 -p 6379 -c ##进入192.168.5.150节点数据库
192.168.5.150:6379> set centos 7.6 ###创建一个键值对
192.168.5.150:6379> get centos ###查看centos键的值
"7.6"
192.168.5.150:6379> exit ##退出
进入192.168.5.150的从库验证写入信息
redis-cli -h 192.168.5.250 -p 6379 -c ##进入192.168.5.150的从库
192.168.5.250:6379> keys * #查看所有键
"centos"
192.168.5.2500:6379> get centos ###查看centos键的值
"7.6"
- 高可用故障转移功能
##手动宕掉一台master服务器
redis-cli -h 192.168.5.150 -p 6379 shutdown
###查看群集状态,发现被宕掉的master节点对应的从库变为了主库
192.168.5.151:6379> cluster nodes ###查看节点信息
352dcd0258945621452fd4efdcf00249537706a2 192.168.5.250:6379 master.......//省略
本文详细介绍了如何在六个节点上部署Redis集群,包括环境准备、软件安装、配置修改及群集建立过程。同时,通过数据同步和高可用故障转移功能验证了集群的稳定性和可靠性。
740

被折叠的 条评论
为什么被折叠?



