概述
Cluster中每个节点都知道其他节点的信息,相互间可以通信(meet),知道每个节点负责哪些槽(slot)。
16384是redis Cluster指定的槽的数量。
要为每个节点指派槽,才能正常读写。
redis Cluster有主从复制,每个主节点都有从节点,高可用,分片。
从节点默认不支持读写,如果要对从节点做读写分离需要每个连接用readonly,自己维护从节点的资源池和故障转移。
不建议在从节点做读,直接扩容操作各个主节点。
原生命令安装
node1 | node2 | node3 | node4 | |
master | Y | Y | ||
slave | slaveof node1 | slaveof node3 |
1.配置开启节点 4台机器
cd /app/redis/config
touch redis-cluster-6379.conf
vi redis-cluster-6379.conf
protected-mode no
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "6379.log"
dir /app/redis/data
dbfilename "dump-6379.rdb"
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-require-full-coverage no
启动4个节点
cd /app/redis/src
./redis-server /app/redis/config/redis-cluster-6379.conf
2.meet。各节点之间相互meet建立通信
在node1中进行
cd /app/redis/src
./redis-cli -h node1 -p 6379 cluster meet 192.168.2.104 6379
./redis-cli -h node1 -p 6379 cluster meet 192.168.2.106 6379
./redis-cli -h node1 -p 6379 cluster meet 192.168.2.107 6379
3.指派槽
node1和node3是master,由他们两个平分16384个槽
node1 0-8191
node2 8192-16384
node1上执行
./redis-cli -h node1 -p 6379 cluster addslots {0..8191}
node3上执行
./redis-cli -h node3 -p 6379 cluster addslots {8192..16383}
4.主从分配
node2 slaveof node1 ,node4 slaveof node3
集群中输入命令cluster nodes查看每个节点的ID,这个ID在分配主从的时候要用
在node2上执行 那一串很长的是node1的nodeid
./redis-cli -p 6379 cluster replicate 4be5d22323fbb080172ffdeb0885f7caacc45dbd
在node4上执行 那一串很长的是node3的nodeid
./redis-cli -p 6379 cluster replicate 6500b5a2ed52ffc05a5d81ee57ecca4282e5cf5e
配置完以后再在集群中输入cluster nodes查看节点信息
./redis-cli -p 6379 cluster nodes
集群中可以输入命令cluster info查看集群信息。
cluster slots可以看到槽的分配信息。
cluster keyslot key可以查看key属于哪个槽
测试是否安装好了
./redis-cli -c -p 6379
node1设置key-value
node2获取key-value
官方工具安装
官方提供了ruby的安装脚本
1.首先每台机器要准备ruby的环境。
2.安装rubygem redis
cd /app
wget http://rubygems.org/downloads/redis-4.0.1.gem
gem install -l redis-4.0.1.gem
报错
ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
gem list -- check redis gem
3.安装redis-trib.rb
首先配置开启节点 4台机器
cd /app/redis/config
touch redis-cluster-6379.conf
vi redis-cluster-6379.conf
protected-mode no
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "6379.log"
dir /app/redis/data
dbfilename "dump-6379.rdb"
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-require-full-coverage no
启动4个节点
cd /app/redis/src
./redis-server /app/redis/config/redis-cluster-6379.conf
使用redis-trib.rb
cd /app/redis/src
./redis-trib.rb create --replicas 1 192.168.2.103:6379 192.168.2.106:6379 192.168.2.104:6379 192.168.2.107:6379
replicas是为每个主节点配置多少个从节点
前两个是主节点,后两个是从节点。