【二十】redis之Cluster概述与安装

概述

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的环境。

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是为每个主节点配置多少个从节点

前两个是主节点,后两个是从节点。

猜你喜欢

转载自blog.csdn.net/jy02268879/article/details/81488743