1 redis集群的搭建说明
redis集群由于投票容错机制要求超过半数节点认同某节点宕机才会宕机,所以redis集群的master节点最低需要3台,才能构成集群,其次要构成集群的高可用,需要保证每个master节点至少需要一个slave节点,所以redis需要六台主机才能构成高可用redis集群,笔者是在虚拟机中使用3台虚拟centos7.2的系统搭建
2 集群搭建步骤
1) 准备redis的安装包,需要自行准备,redis版本为 5.0.3
2) 准备3台虚拟机 ip分别为 192.168.40.161,192.168.40.162,192.168.40.163
3) 注意:在搭建集群前需要先将3台虚拟机的防火墙全部关闭,或者开放相关端口,笔者在虚拟机中搭建的,所以直接关闭了防火墙,sysemctl status firewalld.service 可以用该命令查看防火墙状态,systemctl stop firewalld.service 停止防火墙,systemctl disable firewalld 关闭防火墙的开机自启动,笔者是在root的账户下登陆
4)在3台虚拟机的/usr/local路径下新建redis-cluster目录 mkdir redis-cluster,然后在3台机器的的redis-cluster的目录下分别创建6389,6390目录,然后将redis.5.0.3放在redis-cluster的目录下,并解压,redis的获取(wget http://download.redis.io/releases/redis-5.0.3.tar.gz),解压(tar -zxvf redis-5.0.3.tar.gz)
5) 安装gcc用于编译redis yum -y install gcc,进去解压后的目录 cd /usr/local/redis-cluster/redis,执行编译并安装 make && make install,在当前的目录下复制一份redis.conf到redis-cluster的目录下 cp /usr/local/redis-cluster/redis/redis.conf /usr/local/redis-cluster/
6 修改redis.conf
##设置以后台进程的方式启动redis
daemonize yes
#设置不被占用的端口号
port 6389
#设置进程文件
pidfile /var/run/redis_6389.pid
#给每个配置文件设置一个存放生成文件数据的目录
dir dir /usr/local/redis-cluster/6389
#设置已集群模式启动
cluster-enabled yes
#集群节点信息文件,最好对应上端口
cluster-config-file nodes-6389.conf
#设置节点超时时间
cluster-node-timeout 5000
#去掉bind绑定访问ip
# bind 127.0.0.1
#关闭保护模式
protected-mode no
#使用AOF模式
appendonly yes
#设置访问redis的密码
requirepass password
#设置集群节点间访问密码,注意两个密码保持一致
masterauth password
7 将刚修改的redis文件分别复制到每台机器的6389,6390目录下,并将里面的所有端口分别修改成对应目录的端口
然后分别启动每台机器的redis节点
下面是start.sh的内容(注意每台机器都一样的布置,包括目录结构)
./redis/src/redis-server ./6379/redis.conf
./redis/src/redis-server ./6380/redis.conf
8 构建redis集群环境,redis5可以不用ruby来的脚本来构建集群,在这个过程中redis会有个需要输入yes的过程(注意一定是yes,而不能是y,如果偷懒写成y的,后面将会遇见集群节点设置值时报错,将需要重置每台master的slot,重置命令: ./redis-cli -a 12345678 --cluster fix 192.168.40.161:6379,指向每台master节点,需要运行三次,-a 指定连接集群的密码)
./redis/src/redis-cli -a 12345678 --cluster create 192.168.40.161:6389 192.168.40.162:6389 192.168.40.163:6389 192.168.40.161:6390 192.168.40.162:6390 192.168.40.163:6390 --cluster-replicas 1
9 连接集群 ./redis-cli -a 12345678 -c -h 192.168.40.161 -p 6389,连接过程中可能看到发生重定向到其他IP上区
10 如果在启动集群节点的过程中防火墙没有关闭,启动将会失败