7.redis 的集群搭建
单节点,8G内存 部署6台测试。
1.#mkdir /usr/local/redis-cluster
#mkdir 7001 7002 7003 7004 7005 7006
2.配置一个7001 的redis.conf
1)bind 192.168.50.160 //这里都在一个节点上了,6台机器应绑定各自端口
port 7001 //同一个机器,7001~7006
daemonize yes //是否设置为后台启动
2)redis 实例的pid 文件(是个进程就有个文件):
pidfile /var/run/redis_7001.pid //7001~7006
3)日志配置文件地址
logfile "/usr/local/redis-cluster/7001/redis.log" //7001~7006
4)数据文件存储地址
dir /usr/local/redis-cluster/7001 //7001~7006
5)启动集群模式
cluster-enabled yes //是否启动集群模式
6)集群中每个节点有个配置文件
cluster-config-file nodes-7001.conf //7001~7006 ,默认采用和端口名一样了
7)集群节点超时时间
cluster-node-timeout 15000
8)刷盘模式
appendonly yes
appendfilename "appendonly.aof"
appendfsync always //aof 模式
3.集群各个目录修改
1)将redis.conf 复制到7002 、7003、7004、7005、7006
2)修改 替换 7001为7002 ;其他依次操作
vim redis.conf
:%s/7001/7002/g // 完成单个文件的替换 ,g表示全局替换
//总共5个700* , / 模糊查询 7002 ,按n 翻页查看
4.redis 集群需要用到ruby ,安装ruby
1)yum install ruby
2)yum install rubygems
3) gem install redis
## 报错redis requires Ruby version >= 2.2.2问题
1.安装RVM gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 curl -L get.rvm.io | bash -s stable source /usr/local/rvm/scripts/rvm 2.查看目前的ruby版本 ruby --version 3.删除当前ruby版本 rvm remove 2.0.0 4.查看RVM库中的ruby版本 rvm list known 5.查看RVM库中的ruby版本 rvm install "ruby-2.4.1" 6.选择安装ruby版本并设为默认 rvm use 2.4 --default 7.重新执行gem install redis 这里默认安装成了4版本,不知会有影响吗;我的redis 安装的是redis-3.2.11
5. 启动各个节点
//先启动节点
# ./redis-server /usr/local/redis-cluster/700*/redis.conf //启动各个节点对应的脚本
# cd /home/caolh/redis-3.2.11/src // 该文件下面有集群模式启动脚本
//创建集群
# ./redis-trib.rb create --replicas 1 192.168.50.160:7001 192.168.50.160:7002 192.168.50.160:7003 192.168.50.160:7004 192.168.50.160:7005 192.168.50.160:7006 // 创建集群 ,1表示 比例值 ,集群里的主节点和从节点比例是1:1
//可以看到主节点是7001~7003 ,从节点是7004~7006;主节点划分了16384个slot 槽,每个主节点的槽范围不一样,但是各自对应的从节点是一样的。
6.登陆测试
info 、cluster info 、cluster nodes 查看集群 主节点、从节点信息
linux 下启动集群节点方式
# ./redis-cli -c -h 192.168.50.160 -p 7001[[email protected] bin]# ./redis-cli -c -h 192.168.50.160 -p 7001 //第一次登陆的是7001
192.168.50.160:7001> set name java-caolihua -> Redirected to slot [5798] located at 192.168.50.160:7002 //数据重定向到7002节点 OK 192.168.50.160:7002> keys * 1) "name" 192.168.50.160:7002> quit [[email protected] bin]# ./redis-cli -c -h 192.168.50.160 -p 7001 //7001 查不到该数据 192.168.50.160:7001> keys * (empty list or set) 192.168.50.160:7001> set age 1 //数据没有重定向 OK 192.168.50.160:7001> keys * //7001可以查到数据 1) "age"
//之前创建集群,指定的主节点、副本信息 Adding replica 192.168.50.160:7004 to 192.168.50.160:7001 Adding replica 192.168.50.160:7005 to 192.168.50.160:7002 Adding replica 192.168.50.160:7006 to 192.168.50.160:7003
// 可以看到 从节点7004,7005都有了相应的数据
[[email protected] bin]# ./redis-cli -c -h 192.168.50.160 -p 7004
192.168.50.160:7004> keys *
1) "age"
192.168.50.160:7004> quit
[[email protected] bin]# ./redis-cli -c -h 192.168.50.160 -p 7005
192.168.50.160:7005> keys *
1) "name"
192.168.50.160:7005>
//测试 在从节点写入数据 ,转向到了主节点1 ,可以设置只读,不能写入
192.168.50.160:7005> set xxx 111
-> Redirected to slot [4038] located at 192.168.50.160:7001
OK
192.168.50.160:7001>
7.RDM测试,RDM0.8版本数据正常,0.9 版本数据有问题
启动成功,
8.集群数据删除 、重启、集群操作博客
官网: http://redis.io./topics/cluster-tutorial
http://blog.51yip.com/nosql/1726.html/comment-page-1