阅读量:0
一、Redis Cluster 集群部署详细步骤
1、准备环境
本地服务器三台:
192.168.75.100 192.168.75.101 192.168.75.102
2、上传tar包,解压安装
三台服务器同样的操作。也可以使用scp命令直接传tar包到其他两台服务器
scp -r redis-5.0.5.tar.gz root@192.168.75.102:/root/redis_cluster/
3、安装redis
每台服务器安装两个redis,先处理第一台服务器的第一个redis
- 解压
tar -zxvf redis-5.0.5.tar.gz
- 安装
//进入解压的目录 cd redis-5.0.5 //指定安装位置 make PREFIX=/root/redis_cluster/redis1-6310 install
安装完成
返回上一级目录,可以看到
进入解压的文件目录复制一个redis.conf到安装的目录
4、修改redis.conf 开启集群
vi redis.conf
bind 0.0.0.0 port 6310 protected-mode no daemonize yes dbfilename dump-6310.rdb pidfile /var/run/redis_6310.pid masterauth xyy,.123 requirepass xyy,.123 cluster-enabled yes cluster-config-file nodes-6310.conf cluster-node-timeout 15000 cluster-require-full-coverage no
在其他两台服务器上安装redis,安装过程同上面的 安装redis,执行完install 那一步后即可,等会再从第一台服务器传redis.conf文件
服务器:192.168.75.101
服务器:192.168.75.102
5、复制192.168.175.100的 redis.conf 文件到101、102服务器上
//101 scp -r redis.conf root@192.168.75.101:/root/redis_cluster/redis1-6310/ //102 scp -r redis.conf root@192.168.75.102:/root/redis_cluster/redis1-6310/
6、分别启动三台服务器的redis
bin/redis-server redis.conf
查看是否启动
ps -ef|grep redis
7、创建master集群,三主
进入哪个服务器的目录下都行,只要是redis-cli
bin/redis-cli --cluster create --cluster-replicas 0 -a xyy,.123 192.168.75.100:6310 192.168.75.101:6310 192.168.75.102:6310
a.报错,防火墙没关
关闭三台服务的防火墙或者放开6310端口
//查防火墙状态 systemctl status firewalld //永久开放端口 firewall-cmd --add-port=6310/tcp --permanent //关闭防火墙 systemctl stop firewalld
b.再次执行集群命令
c.连接客户端查看
//连接集群,那台服务器都可以 bin/redis-cli -c -p 6310 //输入redis密码 auth xyy,.123 //查看集群节点 cluster nodes
8、安装redis配置从节点,基本跟上面差不多,在每台服务器各自再安装一个redis
安装
在192.168.75.100服务器上操作,复制redis.conf文件到6311里
cp redis1-6310/redis.conf /root/redis_cluster/redis2-6311/
进入redis.conf 把所有的6310改成6311即可,其他的在6310里都已经修改过了,保持一致
//进入编辑 vi redis.conf //1.进入后可以搜索一下 /6310 //2.然后 i 编辑 //3.esc /6310 再搜索 //4.直到搜不到后保存退出 :wq
复制到其他两台服务器
//101 scp -r redis.conf root@192.168.75.101:/root/redis_cluster/redis2-6311/ //102 scp -r redis.conf root@192.168.75.102:/root/redis_cluster/redis2-6311/
直接启动这个redis,每台服务器是这样的。此时6311并没有加入集群
9、创建从节点加入集群
连接客户端,查看主节点的id
//不管是哪台服务器,都可以,主要是用 redis-cli bin/redis-cli -c -p 6310 //查看主节点id cluster nodes
复制192.168.75.100的id ,让从节点加入集群
//--cluster-master-id 主节点id // -a redis密码 bin/redis-cli --cluster add-node 192.168.75.100:6311 192.168.75.100:6310 --cluster-slave --cluster-master-id c7a842d10a9ead17ec2a3f0f0ff4483ad55e4ba6 -a xyy,.123
同理,分别执行其他两台服务器的从节点,在当前服务器即可,修改ip和masterid就行
再次查看,三主三从
二、单点redis数据迁移至redis cluster集群
【RDB】以上集群安装时,集群并未开启aof,接着上面的去做迁移
0、查看集群里没有数据
每个master都可以看一下。
解释一下为啥不同的服务器上的主从互相指向了 新建集群是本服务器的从指向的本服器务的主,可能因为重启测试过集群的分槽合槽,在合槽后重启,所有的从节点都指向了一个主,后续再分槽,从节点自动指向刚刚分槽的redis,所以主从的关系跨服务指向了,确保一主一从即可。 //连接redis客户端执行 keys *
1、把三主的卡槽集中到一个上面
这里集中到101的master上
//1.连接任意一台服务的redis客户端,进行合槽.这里是在100上连接的 redis1-6310/bin/redis-cli --cluster reshard 192.168.75.100:6310 -a xyy,.123 //2.可以看到集群信息,5461是要移动的卡槽数量 5461 //3.接收者。哪个master来接收这5461个槽位,就复制哪个的id。这里合到101上的master //4.发送者。哪个master来迁出自己的槽位,就复制哪个的id。这里迁出102上6310的master //5.回车确定执行 done //6.执行后再次确认 yes
同理迁出102上6311的master的槽位,到101的master,不在截图
查看
2、关闭所有redis节点
//1.查看进程 ps -ef|grep redis //2.这里杀死进程。也可以连接redis客户端,执行shutdown关闭 kill -9 进程号 //关闭三台服务上的
3、复制单点redis的rdb文件复制到这个拥有所有卡槽的redis下,并把命名改成该redis下的redis.conf里的一样
//复制命令 cp [资源文件[ [目标位置] //这里找了一个其他服务上的rdb文件,直接上传到这个位置的
//重命名。该名字是拥有所有卡槽的redis的redis.conf里的 dbfilename dump-6310.rdb mv dump.rdb dump-6310.rdb
4、启动该redis
//切记此时redis并未开启aof 也就是appendonly no //0.修改redis.conf appendfilename "appendonly-6310.aof" //1.启动 redis1-6310/bin/redis-server redis1-6310/redis.conf
5、查询是否已加载
//1.连接客户端 redis1-6310/bin/redis-cli -c -p 6310 -a xyy,.123 //查看 keys *
6、执行命令,保存aof文件
//连接客户端,手动命令保存aof文件 bgrewriteaof
7、关闭该redis,开启aof,再启动
//1.关闭 shutdown //2.修改redis.conf appendonly yes //3.启动 redis1-6310/bin/redis-server redis1-6310/redis.conf //4.连接并查看是否有数据
8、同样开启所有节点的aof并启动
//1.修改其他五个redis的redis.conf appendonly yes //2.这个命名这里也区分开来,每台服务器有6310和6311的aof appendfilename "appendonly-6310.aof" //3.启动所有redis
9、卡槽还原
//跟上面合槽同理
分槽实时查看
10、查看,会发现还原后的俩redis主从 也会分到数据
//连接任意两个从节点 192.168.75.100:6310和192.168.75.101:6311 可以看到分槽后也自动分了数据
未完待续。。。。
1.测试容错