Redis学习第四课 --集群-3主3从的6个节点服务
1、虚拟机环境
使用的Linux环境已经版本:
Centos 7 64位系统
主机ip:
192.168.56.180
192.168.56.181
192.168.56.182
每台服务器是1主1从,实验3台服务器课成为3主3从。
Redis安装的项目目录、日志、配置文件等都存放在/root/svr/目录下。
2、下载相关的安装包以及解压
首先在192.168.56.180机器操作:
1 2 3 |
|
3、安装
在/root/svr/redis-3.2.9/目录下执行:
1 |
|
4、配置信息
创建集群配置、log日志、数据所在的文件夹:
1 2 |
|
创建集群端口文件夹:
1 2 3 |
|
复制配置文件到/root/svr/redis-3.2.9/cluster-conf/7777目录下:
1 |
|
修改7777目录下redis.conf配置文件:
(注意:找到相应的信息修改,或者把修改的信息全部注释掉,重新添加下面信息到头部,有利于以后修改和查看)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
复制7777目录下redis.conf至8888并修改端口及存储路径:
1 |
|
5、使用scp复制安装和配置好的redis复制到其他服务器上
已经在192.168.56.180机器配置好,复制到181和182机器
在两台新机器上创建文件夹
1 |
|
复制:
1 2 |
|
1 2 |
|
6、启动3台机器的redis
3台机器执行启动方式:
1 2 |
|
查看状态是否:
1 |
|
7、创建集群
1 |
|
无法创建,提示错误信息:
提示错误,是没有安装ruby这个插件,因为redis
集群创建的程序文件redis-trib,rb是由ruby来编写的,需要安装:
1 |
|
安装ruby完毕接着执行上面的创建集群命令
报错。这时候需要安装一些和ruby与reids相关程序包和类库
1 2 |
|
报错,提示ruby版本需要大于2.2.2版本。CentOS7 yum库中ruby的版本支持到 2.0.0,可gem 安装redis需要最低是2.2.2
需要安装个高版本的ruby
1 2 3 4 5 6 |
|
查看rvm库中已知的ruby版本
1 |
|
安装一个ruby版本
1 |
|
使用一个ruby版本
1 |
|
卸载一个已知版本
1 |
|
查看现在版本
1 |
|
在重新安装ruby相关的redis就可以了
1 |
|
更新ruby版本、移除旧版本、重新安装reids完毕。接着执行上面的创建集群命令。
还是出现错误:提示连接不上节点:
这时候需要排查一下错误:
第一:服务器是否关闭防火墙
1 2 |
|
(我这边已经关闭)
第二:是否所有的节点都启动
1 |
|
(我这边都已经启动并且正常运行)
第三:服务器之间是否ping通
ping 192.168.56.180
ping 192.168.56.181
ping 192.168.56.182
(我这边都能正常ping通过)
第四:是否可以telnet ip port 连接上
1 2 |
|
出现错误:提示redis是受保护的,需要身份验证才可以进行:
这个问题解决可以有两种方法解决:
(1)修改配置文件redis.conf的权限参数设置为no,就是不需要权限验证
1 |
|
(2)修改配置文件redis.conf的权限设置安全密码(密码自定义设置)
1 |
|
我这里是第一解决方法,不需要权限,先kill启动的6个redis进程,在修改配置文件。在启动reidis服务。
接着执行上面的创建集群命令。
创建集群启动成功。
8、测试redis集群
1 2 |
|
在192.168.56.181:7777服务set值
在192.168.56.182:8888服务上get
9、数据解析
完整搭建起来,管理的集群以及主从关联都在nodes.conf文件中生成的,我这边集群节点的生成配置文件数据显示
1 2 3 4 5 6 7 8 9 10 |
|
当节点挂了,nodes.conf会记录新的数据
当主节点挂了,因为集群会一直在监听集群中的主从节点的状态。加入一个主节点挂了,集群监听机制检查到,会对主节点的槽(数据)进行迁移,按照投票机制将主节点关联的从节点进行选举出一个充当主节点,因为我这里一个主节点关联一个从节点,所以只能是那个充当。
10、扩展知识
(1)持久层的配置和原理:rdb和aof
(2)哨兵、数据字段迁移、键空间迁移、在线迁移、redis-trib.rb的详解
(3)集群节点添加,删除
(4)Jedis客户端对集群的数据操作:set、list、key/value、hash等
(5)将key值执行CRC16算法对18384个槽进行取模
(6)压测.........