centos7上的redis集群部署
首先下载redis源码包
http://download.redis.io/releases/
我选择的是4.0.9版本
在/home目录下解压
tar -zxvf redis-4.0.9.tar.gz
cd 到/home/redis-4.0.9目录下编译
make报错
yum安装gcc
yum install gcc -y
再make产生新的错误
执行命令
make MALLOC=libc
然后执行
make install PREFIX=/home/redis-4.0.9/redis-cluster
自动创建了redis-cluster/bin 目录,并将一些执行文件复制到bin目录
将redis.conf配置文件复制到redis-cluster目录下
在redis-cluster目录下创建7001 7002 7003 7004 7005 7006共6个目录
并复制配置文件redis.conf,修改
daemonize yes #后台启动
port 7001 #修改端口号,从7001到7006
cluster-enabled yes #开启cluster,去掉注释
cluster-config-file nodes.conf #自动生成
cluster-node-timeout 15000 #节点通信时间
appendonly yes #持久化方式
安装redis-trib所需的 ruby脚本
注意:centos7默认的ruby版本太低(2.0),要卸载重装(最低2.2)
yum install centos-release-scl-rh //会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源
yum install rh-ruby23 -y
scl enable rh-ruby23 bash //必要一步
ruby -v
gem install redis
然后,redis-trib.rb这个二进制文件就可以使用了
注意:
登录的时候可能不能使用ruby相关命令,因此需要加载环境变量
设置登录时自动启动ruby
vi /etc/profile.d/rh-ruby23.sh
#!/bin/bash
scl enable rh-ruby23 bash
export PATH=$PATH:/home/redis-4.0.9/src
启动所有的redis节点
bin/redis-server 7001/redis.conf
bin/redis-server 7002/redis.conf
bin/redis-server 7003/redis.conf
bin/redis-server 7004/redis.conf
bin/redis-server 7005/redis.conf
bin/redis-server 7006/redis.conf
注意:这里并没有创建集群
使用redis-trib.rb创建集群
注意:redis-trib.rb在redis/src目录下
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
使用create命令 --replicas 1 参数表示为每个主节点创建一个从节点,其他参数是实例的地址集合。
redis集群的测试
客户端连接集群redis-cli需要带上 -c ,redis-cli -c -p 端口号
根据redis-cluster的key值分配,name应该分配到节点7002[5461-10922]上,上面显示redis cluster自动从7001跳转到了7002节点
查看7002节点
redis-trib.rb check 127.0.0.1:7002
现在模拟7002节点故障
kill -9 该节点的进程号
然后再重新启用,会发现原来的从节点变成主节点,7002主节点变成从节点