网站代码500,网站项目团队介绍,一汽大众网站谁做的,商品网站建设方案Redis Cluster#xff08;Redis 集群#xff09;是 Redis 分布式解决方案的一部分#xff0c;它旨在提供高可用性、高性能和横向扩展的功能。Redis Cluster 能够将多个 Redis 节点组合成一个分布式集群#xff0c;实现数据分片和负载均衡#xff0c;从而确保在大规模应用场…Redis ClusterRedis 集群是 Redis 分布式解决方案的一部分它旨在提供高可用性、高性能和横向扩展的功能。Redis Cluster 能够将多个 Redis 节点组合成一个分布式集群实现数据分片和负载均衡从而确保在大规模应用场景下的稳定性和可靠性。我们这篇文章了将为大家介绍如何使用 docker-compose 搭建 redis 集群。
Redis Cluster 介绍 Redis Cluster 介绍将数据划分为多个槽slot默认情况下共有 16384 个槽。每个 Redis 节点负责处理其中的一部分槽。当客户端请求访问某个键时Redis Cluster 会根据键的哈希值决定它应该位于哪个槽并将请求转发到负责该槽的 Redis 节点上。 在 Redis Cluster 中每个槽都可以有多个副本通常有一个主节点和一个或多个从节点。主节点负责处理客户端请求并将数据同步到从节点上。这样即使主节点出现故障系统仍然可以继续工作从节点可以接管主节点的工作并保持数据的一致性。Redis Cluster 提供了自动分片和数据复制的机制无需手动管理数据分片和节点复制。 Redis Cluster 使用 Gossip 协议进行节点间的通信节点之间互相交换信息以保持集群的状态一致性。通过 Gossip 协议Redis 节点可以动态发现新的节点加入或者节点离开集群从而实现集群的自动伸缩和高可用性。 Redis Cluster 具有良好的扩展性。当数据量增加或请求量增大时可以简单地增加新的 Redis 节点并让集群自动重新分片和重新分配槽。这种横向扩展方式能够无缝地增加集群的容量和性能而无需停机或对现有节点进行复杂的迁移操作。 Redis Cluster 具有很强的容错性。即使有部分节点宕机只要主节点的数量仍然满足半数以上集群仍然可以继续工作。当集群检测到主节点不可用时会自动将从节点提升为主节点确保服务的连续性和可用性。
docker-compose
创建一个 redis-cluster 的文件夹在其中在创建一个 redis6479 的一个文件夹在 redis6479 中创建 docker-compose.yml 文件文件如下
version: 3.3
services:redis6479:network_mode: hostimage: rediscontainer_name: redis6479restart: alwayslogging:driver: json-fileoptions:max-size: 5gvolumes:- ./data:/data- ./redis.conf:/usr/local/etc/redis/redis.conf- ./logs:/logscommand: redis-server /usr/local/etc/redis/redis.conf我们在这network用的是host模式redis节点之间通信直接用宿主机的ip即可 我们在这还有一个关于日志的配置 logging:driver: json-fileoptions:max-size: 5g我们的从节点一直会检测主节点的状态一直输出日志所以我们在这配置下日志的大小不然我们的服务器很快就会被日志文件占用很多的磁盘
在 redis6479 下创建 redis.conf 文件
创建脚本部署其他节点
在redis-cluster 下创建脚本 build.sh
#!/bin/bash
cd /home/xiuji/docker/redis-cluster;
cp -r redis6479 redis6579;
sed -i s/6479/6579/g /home/xiuji/docker/redis-cluster/redis6579/docker-compose.yml;
sed -i s/6479/6579/g /home/xiuji/docker/redis-cluster/redis6579/redis.conf;
cd /home/xiuji/docker/redis-cluster/redis6579;
sudo rm -rf data;
sudo rm -rf logs;
docker-compose up -d;cd /home/xiuji/docker/redis-cluster;
cp -r redis6479 redis6679;
sed -i s/6479/6679/g /home/xiuji/docker/redis-cluster/redis6679/docker-compose.yml;
sed -i s/6479/6679/g /home/xiuji/docker/redis-cluster/redis6679/redis.conf;
cd /home/xiuji/docker/redis-cluster/redis6679;
sudo rm -rf data;
sudo rm -rf logs;
docker-compose up -d;cd /home/xiuji/docker/redis-cluster;
cp -r redis6479 redis6779;
sed -i s/6479/6779/g /home/xiuji/docker/redis-cluster/redis6779/docker-compose.yml;
sed -i s/6479/6779/g /home/xiuji/docker/redis-cluster/redis6779/redis.conf;
cd /home/xiuji/docker/redis-cluster/redis6779;
sudo rm -rf data;
sudo rm -rf logs;
docker-compose up -d;cd /home/xiuji/docker/redis-cluster;
cp -r redis6479 redis6879;
sed -i s/6479/6879/g /home/xiuji/docker/redis-cluster/redis6879/docker-compose.yml;
sed -i s/6479/6879/g /home/xiuji/docker/redis-cluster/redis6879/redis.conf;
cd /home/xiuji/docker/redis-cluster/redis6879;
sudo rm -rf data;
sudo rm -rf logs;
docker-compose up -d;cd /home/xiuji/docker/redis-cluster;
cp -r redis6479 redis6979;
sed -i s/6479/6979/g /home/xiuji/docker/redis-cluster/redis6979/docker-compose.yml;
sed -i s/6479/6979/g /home/xiuji/docker/redis-cluster/redis6979/redis.conf;
cd /home/xiuji/docker/redis-cluster/redis6979;
sudo rm -rf data;
sudo rm -rf logs;
docker-compose up -d;创建好之后给脚本可执行权限我者直接简单粗暴 chmod -R 777 build.sh 执行脚本 ./build.sh 执行成功后我们可以看到多了5个文件夹 查看容器 docker ps -a | grep ‘redis’ 可以看到我们的6个节点已经全部启动了
创建集群
rediscluster默认最少三个主节点我们在这启动了6个节点我们创建一个3主3从的集群
在服务器上执行集群创建命令 redis-cli --cluster create 192.168.10.108:6479 192.168.10.108:6579 192.168.10.108:6679 192.168.10.108:6779 192.168.10.108:6879 192.168.10.108:6979 --cluster-replicas 1 -a ‘xj2022’ –cluster-replicas 1:每个主节点下的从节点的数量
-a ‘xj2022’ redis有密码(所有redis设置相同的密码)如果没有密码则不需要这个参数
执行完之后会出现如下页面 这块了可能会比较久
创建完成之后我们就可以使用如下命令连接到rediscluster 集群了 redis-cli -c -h 192.168.10.108 -p 6479 -a ‘xj2021’ --raw 查看集群状态 cluster nodes cluster info 测试读写是否正常 set xj ‘修己’ get xj 到此我们3主3从的cluster集群已经部署完成了
总结
通过 Docker Compose我们可以快速搭建 Redis 集群实现高可用性和高性能的分布式缓存。这种部署方式不仅方便而且易于扩展。希望本文对您理解如何使用 Docker Compose 部署 Redis 集群有所帮助。如果您对 Redis 集群的更多功能和高级配置感兴趣可以深入研究 Redis 官方文档。https://redis.io/
谢谢阅读如果您有任何问题或建议欢迎在评论区留言。