Redis Cluster
redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉
集群有ABC三个主节点, 如果这3个节点都没有加入从节点,如果B挂掉了,我们就无法访问整个集群了。A和C的slot也无法访问。
所以我们在集群建立的时候,一定要为每个主节点都添加了从节点, 比如像这样, 集群包含主节点A、B、C, 以及从节点A1、B1、C1, 那么即使B挂掉系统也可以继续正确工作。
B1节点替代了B节点,所以Redis集群将会选择B1节点作为新的主节点,集群将会继续正确地提供服务。 当B重新开启后,它就会变成B1的从节点。
不过需要注意,如果节点B和B1同时挂了,Redis集群就无法继续正确地提供服务了。
Redis集群的搭建:
集群中至少应该有奇数个节点,所以至少有三个节点,每个节点至少有一个备份节点,所以下面使用6节点(主节点、备份节点由redis-cluster集群确定)
redis安装
首先,检查防火墙状态,关闭防火墙,或打开防火墙对应端口,并添加iptables白名单
[root@redis_master01 ~]# firewall-cmd --zone=public --add-port=6379/tcp –permanent
[root@redis_master01 ~]# firewall-cmd --zone=public --add-port=16379/tcp --permanent
[root@redis_master01 ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 16379 -j ACCEPT
[root@redis_master01 ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT
检查是否安装了gcc
[root@localhost ~]# gcc -v
如果没有安装,则需要在线安装,make编译需要依赖gcc的环境
[root@localhost ~]# yum install –y gcc-c++
下载安装
下载redis安装包
[root@localhost ~]# wget http://download.redis.io/releases/redis-5.0.6.tar.gz
解压并进入redis目录,查看是否存在Makefile文件,存在则直接make编译redis源码
如下则编译成功
编译成功后安装到指定路径,一般存放于/usr/local下的redis目录,指令如下:
make install PREFIX=/usr/local/redis
查看/usr/local目录,发现redis已经成功安装至此目录下
进入redis目录,查看其中的文件
此时安装已经完成,可以启动redis。不过由于redis是在前端启动,如果客户端关闭,则redis服务也会停止,所以需要后台启动redis,后台启动方法如下:
第一步:复制redis解压文件中的redis.conf文件到当前目录/usr/local/redis/bin下
第二步:修改redis.conf文件中的内容,将 daemonize no -> daemonize yes,这样就可以修改为后台启动了
后台启动redis,可以通过ps命令查看redis服务是否已经启动
打开redis连接,测试,如果返回PONG表示连接成功
redis集群的配置
当六台服务器的redis全部可以启动时,我们就可以开始搭建集群
搭建集群的话,需要使用一个工具(脚本文件),这个工具在redis解压文件的源代码里。因为这个工具是一个ruby脚本文件,所以这个工具的运行需要ruby的运行环境,就相当于java语言的运行需要在jvm上。所以需要安装ruby,指令如下:
[root@localhost local]# yum install ruby –y
全部安装完成后,为了方便我们分辨机器和管理,我们将机器名改为如下格式