01

前言

Redis是一款流行的、开源的、基于内存的键值存储系统,以其卓越的速度和丰富多样的数据结构(如字符串、哈希、列表、集合、有序集合等)著称。它提供持久化、事务、发布/订阅、 Lua脚本等功能,广泛运用于缓存、实时计算、排行榜、会话存储等领域,有效提升了应用程序的性能和响应速度。

Redis集群是其内置的分布式解决方案,通过数据分片(sharding)技术,可在多台机器上搭建大规模、高可用、高性能的Redis服务。集群中的每个节点各自处理部分数据,通过哈希槽(slot)实现数据分布,并通过Gossip协议进行节点间的通信和状态同步。
Redis集群能自动处理节点故障转移,确保服务的连续性,并可根据需求动态扩展,极大地提升了Redis应对大数据量和高并发场景的能力。此外,Redis集群还支持客户端直连任意节点进行请求路由,简化了客户端访问逻辑,提高了集群的可用性和运维便捷性。

02

部署架构

在生产环境中,Redis集群采用高可用的部署架构,其中包括3个主节点和6个从节点,形成3主6从的配置。每台物理服务器承载3个Redis实例,端口依次为7101、7102、7103。集群横跨三台机器,共计9个节点,确保了数据的冗余备份与负载均衡。主节点与其对应的两个从节点通过精确指定的IP地址建立复制关系,确保数据同步及故障转移的有效性。

03

实例部署

1. 部署环境

Redis版本:5.0.8

内核版本3.10.0-1160.el7.x86_64

系统系统:CentOS Linux release 7.9.2009

2. 应用下载

下载地址:http://download.redis.io/releases/

3. 编译安装

(1)上传Redis压缩包到其中一台服务器上,解压编译,需提前安装好gcc-c+

tar -xf redis-5.0.8.tar.gzcdredis-5.0.8yum install gcc-c++makecdsrc/makeinstall

(2)创建Redis实例目录,并把编译好的二进制文件复制到Redis的启动目录下

mkdir/data/product/redis01/{conf,bin,logs} -pcpredis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel /data/product/redis01/bin/cp../redis.conf/data/product/redis01/conf/redis.conf.def

(3)创建配置文件(以redis01为例)不同服务器和端口实例的需要调整配置的ip

bind 192.168.43.51protected-mode yesport 7101tcp-backlog 511timeout 0tcp-keepalive 300daemonize yessupervised nopidfile /data/product/redis01/logs/redis_7101.pidloglevel noticelogfile "/data/product/redis01/logs/redis_7101.log"databases 16always-show-logo yessave9001save30010save6010000stop-writes-on-bgsave-erroryesrdbcompression yesrdbchecksum yesdbfilename dump7101.rdbdir /data/product/redis01slave-serve-stale-datayesslave-read-onlyyesrepl-diskless-syncnorepl-diskless-sync-delay 5repl-disable-tcp-nodelaynoslave-priority100repl-backlog-size100mb# redis 5.0supportstream-node-max-bytes4096stream-node-max-entries 100dynamic-hz yesrdb-save-incremental-fsync yesactivedefrag yesactive-defrag-ignore-bytes100mbactive-defrag-threshold-lower10active-defrag-threshold-upper100active-defrag-cycle-min5active-defrag-cycle-max75active-defrag-max-scan-fields1000slave-lazy-flushnoappendonly yesappendfilename "appendonly7101.aof"appendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size64mbaof-load-truncated yeslua-time-limit5000cluster-enabled yescluster-config-filenodes-7101.confcluster-node-timeout15000slowlog-log-slower-than10000slowlog-max-len128latency-monitor-threshold 0notify-keyspace-events""hash-max-ziplist-entries 512hash-max-ziplist-value64list-max-ziplist-size-2list-compress-depth0set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value64hll-sparse-max-bytes3000activerehashing yesclient-output-buffer-limitnormal000client-output-buffer-limitslave512mb 256mb 120client-output-buffer-limitpubsub 32mb 8mb 60hz 10aof-rewrite-incremental-fsync yesmaxmemory-policyallkeys-lru#redis最大使用内存maxmemory 40960MBrequirepass Monitor123456masterauth Monitor123456

(4)创建多台实例(不同服务器和端口实例的需要调整配置文件redis.conf的侦听IP地址和端口信息

cp-r /data/product/redis01 /data/product/redis02cp-r /data/product/redis01 /data/product/redis03scp -r /data/product/redis0* root@192.168.43.52:/data/product/scp -r /data/product/redis0* root@192.168.43.53:/data/product/

(5)启动各节点的实例

/data/product/redis01/bin/redis-server /data/product/redis01/conf/redis.conf/data/product/redis02/bin/redis-server /data/product/redis02/conf/redis.conf/data/product/redis03/bin/redis-server /data/product/redis03/conf/redis.conf

04

构建集群

1.构建master节点

/data/product/redis01/bin/redis-cli --cluster create --cluster-replicas 0-aYWZL123456 192.168.43.51:7101192.168.43.52:7101192.168.43.53:7101

2. 查看masterid(指定slave需要用到masterid)

/data/product/redis01/bin/redis-cli -h 192.168.43.51 -p 7101 -a YWZL123456 cluster nodes

3.执行slave节点到指定的master节点上

/data/product/redis01/bin/redis-cli--clusteradd-node192.168.43.51:7102192.168.43.52:7101-aYWZL123456--cluster-slave--cluster-master-id90a8e289099f82413731d5ae1da5c16f79339c5c/data/product/redis01/bin/redis-cli--clusteradd-node192.168.43.52:7103192.168.43.51:7101-aYWZL123456--cluster-slave--cluster-master-id90a8e289099f82413731d5ae1da5c16f79339c5c/data/product/redis01/bin/redis-cli--clusteradd-node192.168.43.51:7103192.168.43.53:7101-aYWZL123456--cluster-slave--cluster-master-idab3b8211536292a533998aa3dffbf2d4dfd39d78/data/product/redis01/bin/redis-cli--clusteradd-node192.168.43.53:7103192.168.43.51:7101-aYWZL123456--cluster-slave--cluster-master-idab3b8211536292a533998aa3dffbf2d4dfd39d78/data/product/redis01/bin/redis-cli--clusteradd-node192.168.43.53:7102192.168.43.52:7101-aYWZL123456--cluster-slave--cluster-master-id95d7276bd52704742923541ce1fe17375c3ba9cd/data/product/redis01/bin/redis-cli--clusteradd-node192.168.43.52:7102192.168.43.53:7101-aYWZL123456--cluster-slave--cluster-master-id95d7276bd52704742923541ce1fe17375c3ba9cd

05

集群验证

1. 查看3个master是否对应指定的slave

/data/product/redis01/bin/redis-cli-h192.168.43.51-p7101 -aYWZL123456inforeplication/data/product/redis01/bin/redis-cli-h192.168.43.52-p7101 -aYWZL123456inforeplication/data/product/redis01/bin/redis-cli-h192.168.43.53-p7101 -aYWZL123456inforeplication

2. 在单台节点上插入数据查看是否同步(集群需要指定参数-c)

/data/product/redis01/bin/redis-cli-h192.168.43.53-p7101 -c-aYWZL123456setusernamezhangsangetusername

MUSIC

♬..♩~ ♫. ♪..

END

推荐阅读

Rsync | Linux数据异地备份利器

Linux如何实现SSH免密登录?

python自动化模块批量实现多台服务器间SSH免密登录!!!

太强了!分布式Elasticsearch集群数据迁移企业案例

给力!利用Python导出ZABBIX资产指标清单

容器化部署最新版ZABBIX监控系统

超实用!利用Nginx实现文件下载,效率翻倍

本篇文章来源于微信公众号: Linux运维之旅



微信扫描下方的二维码阅读本文

此作者没有提供个人介绍
最后更新于 2024-04-20