redis集群模式
一、主从复制
1、开启master和node1虚拟机,连接xshell,复制之前先拍快照
2、通过master虚拟机将redis复制给node1
复制成功
3、 控制台启动两台服务器
只有master可以执行写命令,slave只能读,来降低master的读压力
4、修改node1端口号区分两台服务
通过配置文件修改
直接命令加上端口号修改
./redis-server --port 6380
5、启动成功后将node1主改成从,master与node1建立连接
第一种方式:启动服务器过程时直接建立连接
6、分别从master和node1复制窗口启动redis终端
测试:
master可写可读,node1只能读不能写
第二种方式:先直接启动服务器在建立连接
再手动将主的改成从的
从服务器断开连接变成主服务器
以上就是实现主从复制的两种方式,可以随时连接,随时解除,但是我们发现只有master有写功能,但是只有一个主服务器,其他都是从服务器,如果主服务器挂了,其他就没了,这还是存在单节点问题,所以需要多台主服务器一起跑,奇数个主服务器加起来是一个完整的redis,其中挂了其他的还是好的仍然可以跑,这里需要注意主服务器个数为奇数,是为了能有效检测出挂了的主服务器,比如说如果是四台,两台检测没有问题,两台检测有问题,就不能有效确定有没有问题,如果是偶数个,就不好排查出来,里面存在少数服从多数的原理。下面我们开始搭建redis集群
Redis集群搭建
需要创建3个主服务器,和3个备份服务器,在集群中可以实现自动转换,如果主服务器挂了,那么相对应的备份服务器将自动转换代替主服务器
1、开始搭建集群之前先拍快照,三台虚拟机都需要拍照,然后打开三台虚拟机,xshell连接
2、为避免之前文件影响集群结果,删除一些之前的文件
3、创建安装目录 在master ,node1 ,node2中分别创建
mkdir /usr/local/soft/redis-cluster
4、将安装好的redis 复制到redis-cluster 目录下修改名字为7000
cp -r /usr/local/soft/redis /usr/local/soft/redis-cluster
mv /usr/local/soft/redis-cluster/redis /usr/local/soft/redis-cluster/7000
进入7000/bin目录下看看有没有持续化文件,如果有就删了,避免影响集群搭建结果
删除单机版缓存文件
rm -rf appendonly.aof
rm -rf dump.rdb
5、修改配置文件 vim redis.conf
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000
port 7000 //端口7000
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes.conf //集群的配置 配置文件首次启动自动生成
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 (全持久化)
6、复制7000
cp -r 7000 7001
cp -r 7000 7002
cp -r 7000 7003
cp -r 7000 7004
cp -r 7000 7005
7、修改每一个里面的配置
vim 7001/bin/redis.conf
把7000改成对应的端口号
pidfile /var/run/redis_7001.pid
port 7001
注意:每一个都需要改成对应的名字
8、分发
在7002 ,7003 复制到node1
scp -r /usr/local/soft/redis-cluster/7002 node1:/usr/local/soft/redis-cluster/
scp -r /usr/local/soft/redis-cluster/7003 node1:/usr/local/soft/redis-cluster/
在7004 ,7005 复制到node2
scp -r /usr/local/soft/redis-cluster/7004 node2:/usr/local/soft/redis-cluster/
scp -r /usr/local/soft/redis-cluster/7005 node2:/usr/local/soft/redis-cluster/
8、启动redis
1、在master中执行
cd /usr/local/soft/redis-cluster/7000/bin
./redis-server redis.conf
cd /usr/local/soft/redis-cluster/7001/bin
./redis-server redis.conf
2、在node1中执行
cd /usr/local/soft/redis-cluster/7002/bin
./redis-server redis.conf
cd /usr/local/soft/redis-cluster/7003/bin
./redis-server redis.conf
3、在node2中执行
cd /usr/local/soft/redis-cluster/7004/bin
./redis-server redis.conf
cd /usr/local/soft/redis-cluster/7005/bin
./redis-server redis.conf
9、通过工具构建集群 在master中安装
1、安装工具
yum -y install ruby ruby-devel rubygems rpm-build
2、上传redis-3.0.0.gem
gem install -l redis-3.0.0.gem
3、放在/usr/local/bin/ 目录下的命令可以在任何一个位置运行
cp /usr/local/module/redis-3.0.0/src/redis-trib.rb /usr/local/bin/redis-trib
10、启动集群 第一次使用 都免集群重启不需要使用
# replicas 每一个主节点的备份节点数量
redis-trib create --replicas 1 192.168.186.110:7000 192.168.186.110:7001 192.168.186.120:7002 192.168.186.120:7003 192.168.186.130:7004 192.168.186.130:7005
先使用ifconfig查找自己的三台虚拟机ip地址,改成三台虚拟机的ip地址
11、客户端访问reids集群
# -p 端口号 -h 节点ip -c 自动重定向
redis-cli -p 7000 -h master -c
注意:集群中在默认情况下每一个节点只能操作与之操作对应的槽位,所以需要重定向实现无中心化
未重定向之前
重定向之后(把命令发送到与之对应的机器上执行)
12、
查看集群信息
cluster info
查看节点信息
cluster nodes
测试:7002没有挂之前
7002挂之后
node1手动杀死7002
重启7002以后再次观察节点变化
到这里redis集群就搭建成功了,拍下快照命名redis集群搭建,返回集群搭建之前快照,学习建议使用单节点模式,集群模式节点太多,启动太麻烦