1.集群(负载均衡)master(slave忽略)
集群中各个Master节点彼此相连,某个节点的fail
通过半数投票决定(奇数个节点),节点之间通过ping-pong彼此连接
cluster负责对整个集群的维护,设置16384个哈希槽平均分配到,通过crc 16
算法对连接进行计算同时对16384取余,在集群中,将16384个slot(哈希槽)平均分配到每个master中,根据算法获取连接值决定由哪个master节点处理该连接
客户端连接到集群中节点都代表连接集群成功
2.投票
1) 节点fail
超过一半的节点无法访问该节点,则该节点fail
2)集群fail
①某个master fail,但是该master没有slave则集群fail(slot丢失)
②超过半数的master节点fail,不管是否有slave整个集群都会fail
3.搭建集群
1)搭建6个redis服务器(3个master和3和slave) 6379-6384
cluster-enabled yes
2) 创建文件夹(/opt/redis) --> cluster
将6个数据库(配置文件)放置在cluster中
将src的redis-trib.rb文件复制到cluster中
cluster 目录下:
redis-trib.rb
mkdir 6379
cd 6379
3)修改配置文件并拷贝配置文件
redis.conf ----> vim 修改 cluster-enabled yes
cp -r 6379 6380 6381 6382 6383 6384
vim redis.conf
修改redis.conf的端口
4)启动6台redis-server
redis-server xxxx/xxx/xxx/6379/redis.conf
redis-server xxxx/xxx/xxx/6380/redis.conf
redis-server xxxx/xxx/xxx/6381/redis.conf
redis-server xxxx/xxx/xxx/6382/redis.conf
redis-server xxxx/xxx/xxx/6383/redis.conf
redis-server xxxx/xxx/xxx/6384/redis.conf
5)安装ruby(通信接口的程序是ruby写的)
yum install -y ruby
yum install -y rubygems
集群管理器和redis之间通信,安装接口 redis-3.2.1gem
在线安装:gem install redis (要求ruby版本在2.2.2以上)
离线:gem install redis-3.2.1gem
6) 创建集群:
./redis-trib.rb create --replicas 1 192.168.2.101:6379 192.168.2.102:6380 192.168.2.103:6381 192.168.2.104:6382 192.168.2.104:6382 192.168.2.105:6383 192.168.2.106:6384
7) 连接集群:
redis-cli -h 主机 -p 端口 -c
8) 客户端进入后查看集群信息和节点命令
cluster info
cluster nodes