一 、redis 集群初始化
Redis Cluster是Redis官方推出的分布式解决方案,用于解决单机Redis在大规模数据存储和高并发访问场景下的性能瓶颈问题。Redis Cluster将数据分片存储在多个节点上,实现了数据的分布式存储和负载均衡。同时,Redis Cluster还具备自动故障转移和节点扩容缩容的能力,提高了系统的可用性和可伸缩性。
Redis Cluster采用了一种基于哈希槽的分片策略,将数据分为16384个哈希槽,并将这些哈希槽分配到不同的节点上。每个节点负责管理一部分哈希槽,对于一个键值对,根据其哈希值确定所属的哈希槽,然后将该键值对存储在负责该哈希槽的节点上。客户端通过与集群中的任意一个节点通信,该节点会根据键值对的哈希值将请求转发到对应的节点上。
Redis Cluster还具备自动故障转移的能力。当一个节点宕机时,集群会自动将该节点上的哈希槽迁移到其他正常节点上,确保数据的可用性。同时,Redis Cluster还支持节点的动态扩容和缩容。当需要增加节点时,只需将新节点加入集群,并将一部分哈希槽迁移到新节点上;当需要缩减节点时,只需将部分哈希槽迁移到其他节点上,并将目标节点从集群中移除。
1.环境准备
三台 centos7 :
redis1 192.168.188.145redis2 192.168.188.146
redis3 192.168.188.157
2.编写脚本 redis_cluster.sh
vim /opt/redis_cluster.sh
#!/usr/bin/bash
# redis 集群环境初始化,单点多实例部署,没有把握不要修改以下默认配置
# redis 实例个数
instance=2
# redis 服务安装路径 /usr/local/redis
instance_path=/opt/module
# redis 集群节点配置安装路径
cluster_path=${instance_path}redis-Cluster/
# redis 版本
redis_level=redis-5.0.10
ping -w1 -c1 www.baidu.com &>/dev/null
if [ $? -ne 0 ];then
echo "网络错误,请检查网络"
exit 1
fi
yum repolist &>/dev/null
if [ $? -ne 0 ];then
echo "yum错误,请检查"
exit 2
fi
yum install -y gcc make \
&& wget http://download.redis.io/releases/${redis_level}.tar.gz \
&& mkdir -p $instance_path \
&& tar xzf ${redis_level}.tar.gz -C $instance_path \
&& cd ${instance_path}${redis_level}/ && make \
&& make PREFIX=${instance_path}${redis_level} install
cat >/etc/profile.d/redis.sh <<EOF
export REDIS_HOME=${instance_path}${redis_level}
export PATH=\$REDIS_HOME/bin:\$PATH
EOF
source /etc/profile.d/redis.sh
for i in `seq 1 $instance`
do
mkdir -p /opt/module/redis-Cluster/700${i}
cat >/opt/module/redis-Cluster/700${i}/redis.conf<<EOF
port 700${i}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
protected-mode no
appendonly yes
daemonize yes
bind 0.0.0.0
pidfile ${cluster_path}700${i}/redis_700${i}.pid
dir ${cluster_path}700${i}/
EOF
${instance_path}${redis_level}/bin/redis-server ${cluster_path}700${i}/redis.conf
done
chmod a+x /opt/redis_cluster.sh
/opt/redis_cluster.sh
3.创建集群
redis-cli --cluster create 192.168.188.145:7001 192.168.188.145:7002 192.168.188.146:7001 192.168.188.146:7002 192.168.188.157:7001 192.168.188.157:7002
--cluster-replicas 1