Redis高可用集群搭建

redis集群介绍

1
2
1,多个redis节点数据共享
2,通过redis分区来减轻解决单Redis服务器压力。

##Redis 集群的数据分片

1
2
3
4
5
6
7
Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念.
Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么:
节点 A 包含 05500号哈希槽.
节点 B 包含550111000 号哈希槽.
节点 C 包含1100116384号哈希槽.

准备两台Liunx服务器

1
用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境。

1 安装redis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1. 下载并解压
cd /usr/local/
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
tar -zxvf redis-3.2.4.tar.gz 
2. 编译安装
cd redis-3.2.4
make && make install
在执行上面的步骤之后进入redis目录下面有一个utils文件夹下面有一个redis_init_script脚本
创建文件夹 执行此命令 mkdir /etc/init.d/redis -p 改名字 mv redis-3.2.4 redis
然后复制 cp /usr/local/redis/redis.conf /etc/redis_7001.conf
然后vim redis_7001.conf 开启rdb持久化 pid改成对应的端口,日志文件改成对应的日志文件目录
mkdir -p /etc/redis-cluster
mkdir -p /var/log/redis
mkdir -p /var/redis/${自己的redis端口}
进入redis utils 目录下面 执行此命令 cp redis_init_script /etc/init/redis/ redis_init_script_7001
redis_init_script_7001 就是redis 7001 端口的redis 启动脚本。
vim /etc/init/redis/ redis_init_script_7001 可以看到
1
2
3
4
5
6
7
8
9
10
11
12
#大致浏览下该启动脚本,发现redis习惯性用监听的端口名作为配置文件等命名,我们后面也遵循这个约定。
#redis服务器监听的端口
REDISPORT=7001
#服务端所处位置,在make install后默认存放与`/usr/local/bin/redis-server`,如果未make install则需要修改该路径,下同。
EXEC=/usr/local/bin/redis-server
#客户端位置
CLIEXEC=/usr/local/bin/redis-cli
#Redis的PID文件位置
PIDFILE=/var/run/redis_${REDISPORT}.pid
#配置文件位置,需要修改
CONF="/etc/redis/${REDISPORT}.conf"

搭建redis集群配置

1
2
3
4
5
6
7
port 7001 ## 你的当前redis端口
## 开启集群 重要配置
cluster-enabled yes
## redis集群的配置文件 自动创建
cluster-config-file /etc/redis-cluster/node-7001.conf
## redis集群中节点的超时时间
cluster-node-timeout 15000

将上面的配置文件,在/etc/redis下放6个,分别为: 7001.conf,7002.conf, 第二台机子 7003.conf,7004.conf,7005.conf,7006.conf

关闭各自物理机的防火墙。相互ping 一下

#在/etc/init.d下,放6个启动脚本,分别为: redis_7001, redis_7002, redis_7003, 第二台机子 redis_7004, redis_7005, redis_7006

3、创建集群

1
2
3
4
5
6
7
8
9
在第一台服务器上面安装 ruby
cp /usr/local/redis-3.2.8/src/redis-trib.rb /usr/local/bin
redis-trib.rb create --replicas 1 192.168.31.187:7001 192.168.31.187:7002 192.168.31.19:7003 192.168.31.19:7004 192.168.31.227:7005 192.168.31.227:7006
--replicas: 每个master有几个slave
检查 redis-trib.rb check 192.168.31.187:7001

读写分离+高可用+多master

读写分离:每个master都有一个slave

高可用:master宕机,slave自动被切换过去

多master:横向扩容支持更大数据量