一、redis单节点部署
创建文件用service启动redis方式
创建如下文件
vi /etc/systemd/system/redis.service
写入内容如下:
[Unit] Description=redis-server After=network.target [Service] Type=forking #使用时更改redies-server的目录地址,更改redis.conf配置文件的地址 ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target
重启配置使用上述文件生效
systemctl daemon-reload
二、redis集群部署
注:以下ruby环境和命令只适用于5.0(不包括)以前版本,5.0以上版本请跳过7.1之前步骤
- redis-trib.rb是在redis3.x版本时所用的一种部署redis集群的工具,redis-cli是redis5.x及更高版本所支持创建集群的工具,在redis3.x版本时redis-cli只是一个客户端连接管理工具。
- redis-cli比redis-trib.rb多了一个可以认证集群密码的功能,后者创建的集群不能对有密码的集群节点进行很好的管理,所以后来官方直接废弃了这个工具。
- 用redis-trib.rb创建集群之前需要配置ruby环境,新版本的redis-cli可以直接创建集群环境而不用配置ruby环境
集群架构
- redis 集群至少需要3个 master 实例
- master 可以带0个或者多个 slave
- Master之间的数据并不同步,而是各自存放各自的数据
- 所有的 master 按照接近1:1的比例分配16384个槽,意味着集群最多有 16384个master 但是在实际中推荐最大的
master 节点数不超过1000个。 - slave不分配槽
- 整个集群中的数据是以分布式的方式存储的,在存储或者获取的时候先对 key进行hash运算,看看该 key落在那个槽上,从而确定该 key
应该在那个节点存取 - Key 值落在哪一个槽上,只取决于 key 值本身,这个算法是固定的。
部署环境
版本:6.2.11
节点数量:redis-master-3节点
redis-selve-3节点
1.先安装依赖文件
yum -y install gcc tcl
2.解压redis包并执行如下命令
tar xf /home/redis-6.2.11.tar.gz cd /home/redis-6.2.11 make
3.需要更改的参数
#端口,各自端口不同 port 637* #后台启动 daemonize yes #密码,集群的密码都要相同 masterauth 123456 #开启集群 cluster-enabled yes #绑定本机Ip地址 bind 0.0.0.0 #更改密码,所有节点均纹统一密码,此为认证密码,单节点登录使用 requirepass 123456 #各节点集群配置文件 cluster-config-file node-63**.conf
4.安装ruby环境及依赖
yum -y install ruby ruby-devel rubygems
5.安装ruby环境
备注:redis-trib.rb这个二进制文件,用来构建redis集群,要用到ruby环境
补充:报错问题:“redis requires Ruby version >= 2.2.2”为ruby版本太低造成
#会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源3 yum install centos-release-scl-rh #直接yum安装即可 yum install rh-ruby25 -y #必要一步 scl enable rh-ruby25 bash #查看安装版本redis-trib.rb这个二进制文件就可以使用了,用来构建redis集群 ruby -v #安装redis接口 gem install redis
6.设置环境变量
备注:如果不设置环境变量的话,重启节点后ruby就找不到了
#使用export命令显示所有环境变量,复制后添加到/etc/profile文件中 export export PATH=/bin:/usr/bin:/sbin:$PATH #保存退出后使用命令source使用配置生效 source /etc/profile
7.集群创建
1.redis-trib.rb模式启动集群
#需要要先修改redis-trib.rb的密码与集群相同 #过滤出client.rb文件路径 find / -name "client.rb" #修改client.rb文件中的密码 默认为空修改为集群密码 #执行如下命令启动集群 /home/redis-6.2.11/src/redis-trib.rb create --replicas 1 192.168.95.133:6349 192.168.95.134:6378 192.168.95.135:6379 192.168.95.139:6375 192.168.95.137:6376 192.168.95.138:6377
2. 5.0以上版本
#4.0以上的版本用如下命令启动集群-a指定集群密码 ./redis-cli --cluster create 192.168.95.133:6349 192.168.95.134:6378 192.168.95.135:6379 192.168.95.139:6375 192.168.95.137:6376 192.168.95.138:6377 --cluster-replicas 1 -a '123456'
8.查看节点
#连接任意节点IP,-c是连接集群模式 ./src/redis-cli -h 192.168.95.139 -p 6375 -c #输入密码 auth **** #查看节点 cluster nodes
9.停止集群
各节点停止redis后即可停止集群
10.增删节点(此命令针对的是主节点)
#增加节点需要登录集群任何节点 cluster meet IP 端口 #删除节点,ID号在nodes文件中 cluster forget 节点ID
11.增删从节点
#增加从节点时,登录哪个节点即为从节点 cluster replicate 节点id #此ID必须在集群中已记录,即在nodes-**上记录后才能添加,否则会报错 #重置当前节点的配置信息,该名会重置rodes-port.conf 文件为初始状态 cluster rest
问题记录
解决办法:删除redis目录下的nodes*后重启redis所有节点
解决办法:登录时要加-c参数以集群方式登录
试验结论:
经过多次试验杀掉其中某一个主节点,集群会自动切换新的master,宕机节点恢复后会主动加入集群