至少3个主节点才能搭建redis集群,两台机器同样操作
集群进入fail状态的必要条件
A、某个主节点和所有从节点全部挂掉,我们集群就进入faill状态。
B、如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.(因为集群是通过选举方式,半数以上主节点与其他主节点通讯失败才认定此节点挂断,因此若半数挂后无法选举判断是哪个节点挂)
C、如果集群任意master挂掉,且当前master没有slave.集群进入fail状态
- 虚拟机使用的是centos镜像,使用两台机器搭建机器(第一台自动分配两个主节点,第二台1个)
- 在usr/local/下创建文件夹redis_cluster存放解压后的redis,手动解压或者使用tar –zxvf redis-3.8.tar.gz命令。
- 在usr/local/创建cluster文件夹存放集群节点配置文件,在cluster文件夹下创建7001,7002,7003文件夹存放节点配置文件。
- 将redis下redis.conf文件复制到7001,7002,7003三个文件夹下,并修改各自配置
- 此处以7001下redis.conf配置为例修改,其他相同并取相应节点名称
bind 192.168.127.130 //绑定服务器IP地址
port 7001 //绑定端口号,必须修改,以此来区分Redis实例
daemonize yes //后台运行
pidfile /usr/local/redis_cluster/redis-7001.pid //修改pid进程文件名,以端口号命名
logfile /usr/local /redis_cluster/7001/redis.log //修改日志文件名称以端口号为目录来分
dir /usr/local /redis_cluster/7001/ //修改数据文件存放地址,以端口号为目录名来区分
cluster-enabled yes //启用集群
cluster-config-file nodes-7001.conf //配置每个节点的配置文件,同样以端口号为名称
cluster-node-timeout 15000 //配置集群节点的超时时间,可改可不改
appendonly yes //启动AOF增量持久化策略
appendfsync always //发生改变就记录日志
- 安装ruby yum install ruby
- 还需要继续安装Redis的Ruby接口程序
gem install redis(安装错误因为ruby版本太低,需要更新)
安装Redis的ruby接口程序,可能会提示如下,错误:redis requires ruby version 2.2.2,怎么办呢?如果是第一次遇到这个问题,可能会困扰你一阵子,我这里也有解决方案,帮你解忧。地址如下:http://www.cnblogs.com/PatrickLiu/p/8454579.html,按步骤执行就可以,一切顺利。
- [root@linux ~]# gpg --keyserver hkp://keys.gnupg.net --recv-keys
- [root@linux ~]# curl -sSL https://get.rvm.io | bash -s stable
- [root@linux ~]# find / -name rvm –print
- [root@linux ~]# source /usr/local/rvm/scripts/rvm
- [root@linux ~]# rvm install 2.4.1
- [root@linux ~]# rvm use 2.4.1 –default(设置默认使用))
- 编译redis 进入解压后的redis
命令make
- 安装redis进入解压后redis/src下
make install
- 启动节点:cd /usr/local (关闭防火墙 systemctl stop firewall.service)
redis-server cluster/7001/redis.conf
redis-server cluster/7002/redis.conf
redis-server cluster/7003/redis.conf
ps –ef|grep redis查询所有节点信息文件是否正确
- 加入集群,再两台机器中随便一台执行 进入cd /usr/local/redis-cluster/redis/src
ruby redis-trib.rb create --replicas 1 192.168.127.130:7001 192.168.127.130:7002 192.168.127.130:7003 192.168.127.131:7001 192.168.127.131:7002 192.168.127.131:7003
- 登陆随便一个节点 进入redis/src下执行
redis-cli -c -h 192.168.127.130 -p 7001(-c为集群)
set “testredis” “111”
set “testredis” “11”
测试