linux系统(centos)redis分片集群安装部署
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 protected-mode no # redis使用内存限制-2G maxmemory 2147483648 maxmemory-policy allkeys-lru maxmemory-samples 5
-
实例比较多,创建一个一个集群启动脚本,方便启动
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 -a '密码' cluster info cluster nodes set test 666 get test
-
搭建完成