redis分片集群安装与部署
分片集群的优势
- 高可用。且方便扩展。
- 数据分片,多节点提供服务,提高性能,数据提供冗余备份。
分片集群部署
只需更改配置文件
部署架构:6个节点,3主3从。数据集分为3片,分别再A,B,C节点上。A1和B1和C1分别为A,B,C的分片。
散列槽:
Redis Cluster 不使用一致散列,而是一种不同形式的分片,其中每个键在概念上都是我们所谓的散列槽的一部分。
Redis 集群中有 16384 个哈希槽,要计算给定键的哈希槽是多少,我们只需取密钥的 CRC16 模数 16384。
Redis 集群中的每个节点都负责哈希槽的一个子集。
部署规划
3台服务器,6个实例,每台服务器部署2个实例。
IP地址 | 角色 | 端口 | 配置文件 | 数据目录 |
---|---|---|---|---|
192.168.0.77 | 分片A | 7000 | /data/redis-cluster/redis-7000/bin/redis-7000.conf | /data/redis-cluster/redis-7000 |
192.168.0.89 | 分片B | 7000 | /data/redis-cluster/redis-7000/bin/redis-7000.conf | /data/redis-cluster/redis-7000 |
192.168.0.218 | 分片C | 7000 | /data/redis-cluster/redis-7000/bin/redis-7000.conf | /data/redis-cluster/redis-7000 |
192.168.0.77 | 副本分片B' | 7001 | /data/redis-cluster/redis-7001/bin/redis-7001.conf | /data/redis-cluster/redis-7001 |
192.168.0.89 | 副本分片C' | 7001 | /data/redis-cluster/redis-7001/bin/redis-7001.conf | /data/redis-cluster/redis-7001 |
192.168.0.218 | 副本分片A' | 7001 | /data/redis-cluster/redis-7001/bin/redis-7001.conf | /data/redis-cluster/redis-7001 |
ps:由于我测试环境部署是单节点部署6个实例来做测试。3台服务器部署的架构可以参考以下操作步骤。一样的部署和配置,需要更换ip地址。
安装步骤
-
下载redis源码包
官网地址:http://download.redis.io/releases/
我选择最新版本redis-6.2.6,下载的源码tmp目录。
-
编译安装
#解压后编译安装
cd /tmp
tar -zxvf redis-6.2.6.tar.gz
cd
make && make install PREFIX=/opt/redis-6.2.6 #编译安装完成后,源码文件目录就可以删除了 复制对应的文件,分别复制6份,用不同的目录来区分不同的实例。
-
分别修改各自的配置文件。
#基本参数解析
cluster-node-timeout 10000 #主节点在该时间内无法访问,它将由其从属节点进行故障转移。
cluster-require-full-coverage no #设置为no,及时部分主节点不可用,可以的节点分片也能提供查询服务。
cluster-slave-validity-factor 6 #有效因子,在5000X10时间内,不进行故障转移。设置了非0值,如果从节点都不可故障转移,则整个集群就不可用,直到主节点重新加入。
--------- #以下是配置文件内容
dir /data/redis-cluster/redis-6.2.6-7001 #工作目录,每个实例需变更
bind 192.168.0.218 #变更为自己的ip
port 7001 #变更为自己的端口
daemonize yes
pidfile /data/redis-cluster/redis-6.2.6-7001/redis.pid #根据每个实例路径变更
logfile /var/log/redis-cluster/redis-7001.log #根据每个实例路径变更
cluster-enabled yes
cluster-config-file /data/redis-cluster/redis-6.2.6-7001/nodes-7001.conf #根据每个实例路径变更
cluster-node-timeout 10000
cluster-require-full-coverage no
cluster-slave-validity-factor 6
appendonly yes
requirepass penngke
masterauth penngke -
实例比较多,创建一个一个集群启动脚本,方便启动
vim start-redis-cluster.sh
#!/bin/bash
cd /data/redis-cluster/redis-7000
./bin/redis-server ./bin/redis-7000.conf cd /data/redis-cluster/redis-7001
./bin/redis-server ./bin/redis-7001.conf cd /data/redis-cluster/redis-7002
./bin/redis-server ./bin/redis-7002.conf cd /data/redis-cluster/redis-7003
./bin/redis-server ./bin/redis-7003.conf cd /data/redis-cluster/redis-7004
./bin/redis-server ./bin/redis-7004.conf cd /data/redis-cluster/redis-7005
./bin/redis-server ./bin/redis-7005.conf -
用redis-cli客户端创建集群
./redis-cli --cluster create 10.255.65.99:7000 10.255.65.99:7001 10.255.65.99:7002 10.255.65.99:7003 10.255.65.99:7004 10.255.65.99:7005 --cluster-replicas 1 --pass '密码'
#输出结果可以看到已经创建为3主3从 -
可以使用./redis-cli 客户端,登陆6个节点任意节点。查看状态。
./redis-cli -c -p 7000
cluster info
cluster nodes
set test 666
get test