温馨提示×

centos缓存如何跨节点共享

小樊
37
2025-12-07 10:55:13
栏目: 智能运维

在 CentOS 上实现缓存跨节点共享的主流做法

  • 使用集中式内存缓存:部署 MemcachedRedis,让所有应用节点连接同一缓存集群,天然实现数据共享与横向扩展。Memcached 适合高吞吐的纯键值场景;Redis 支持更丰富的数据结构、持久化与高可用。两者在 CentOS 上均可通过 YUM 快速安装与配置。对于需要高可用的 Redis,可采用 SentinelRedis Cluster 模式。
  • 共享存储型缓存:将缓存落地到共享文件系统(如 NFS/GlusterFS)或对象存储,各节点挂载同一目录/桶来读写缓存文件。优点是部署简单、成本低;缺点是文件 I/O 与一致性管理更复杂,性能通常低于内存缓存,适合对一致性要求不高或作为“二级缓存/落地层”的场景。
  • 反向代理层共享缓存:在 NginxVarnish 上启用反向代理缓存,缓存命中在边缘节点生效,减少回源。该方式主要解决“内容层”共享,并非应用对象缓存的通用方案。

方案一 Memcached 集中式共享

  • 安装与启动(在所有需要共享的节点或专用缓存节点上部署 Memcached):
    • 安装:sudo yum install memcached -y
    • 启动:sudo systemctl start memcached && sudo systemctl enable memcached
    • 验证:memcached -htelnet localhost 11211
  • 应用接入:各应用节点将缓存客户端指向 Memcached 集群地址(如 192.168.1.10:11211,192.168.1.11:11211),客户端通常使用一致性哈希进行分片。以 Tomcat 为例,可在 conf/context.xml 中定义资源,指定 servers 列表与过期时间等参数,实现容器级共享缓存。

方案二 Redis 集中式共享与高可用

  • 安装与基础配置:
    • 安装:sudo yum install epel-release && sudo yum install redis -y
    • 启动:sudo systemctl start redis && sudo systemctl enable redis
    • 验证:redis-cli ping(返回 PONG 表示可用)
  • 高可用与扩展:
    • 高可用:部署 Redis Sentinel 实现主从自动故障转移与读写分离。
    • 横向扩展:部署 Redis Cluster 实现分片与在线扩容。
  • 典型应用:多台 Nginx + PHP-FPM 节点将 PHP Session 统一存入 Redis,实现登录态与购物车等会话数据的跨节点共享。

方案三 共享存储型缓存 NFS 与 GlusterFS

  • NFS 共享目录(适合轻量、小规模):
    • 在共享存储节点:sudo yum install nfs-utils -y,编辑 /etc/exports/mnt/nas_cache 10.0.0.0/24(rw,sync,no_root_squash),启动 NFS 服务。
    • 在各应用节点:sudo yum install nfs-utils -y,挂载 sudo mount -t nfs 10.0.0.1:/mnt/nas_cache /mnt/local_cache
    • 注意网络、权限与防火墙策略,确保缓存目录对应用可读写。
  • GlusterFS(适合更大规模与更高可用):
    • 安装:sudo yum install glusterfs-server glusterfs-client -y,启动 glusterd
    • 创建卷:gluster volume create cache_volume transport tcp <server_ip>:/glusterfs/brick1 force,然后 gluster volume start cache_volume
    • 挂载:sudo mount -t glusterfs <server_ip>:/cache_volume /mnt/cache
  • 适用提示:共享存储型方案便于“缓存落地/共享文件”,但需自行处理并发写、缓存失效与一致性策略,性能通常低于内存缓存。

方案四 反向代理层共享缓存 Nginx 与 Varnish

  • Nginx 代理缓存示例:
    • 配置 proxy_cache_pathproxy_cache,在 location 中使用 proxy_cache my_cache; 指定共享的 keys_zone。
    • 适合 HTML/图片/API 响应等“边缘层”共享命中,减少源站压力。
  • Varnish:通过 VCL 定制缓存策略,作为高性能 HTTP 加速器在反向代理层共享响应缓存。
  • 适用提示:该方式主要优化内容分发层,并不等同于应用对象缓存的跨节点共享。

选型与注意事项

  • 选型建议:
    • 纯键值、超高吞吐、容忍丢失:优先 Memcached
    • 需要持久化、丰富结构、高可用与集群:优先 Redis(Sentinel/Cluster)
    • 已有共享存储、成本敏感或需缓存落地:考虑 NFS/GlusterFS
    • 主要是静态内容与边缘命中:使用 Nginx/Varnish
  • 一致性:集中式缓存需设计合理的 TTL/失效主动失效 机制;共享文件缓存需处理并发写与锁。
  • 高可用:Redis 建议 Sentinel/Cluster;Memcached 可通过多实例+客户端一致性哈希提升容错。
  • 网络与安全:开启 防火墙/安全组 仅放通 11211(Memcached)/6379(Redis) 等必要端口;必要时启用 TLS/ACL
  • 监控与容量:监控 命中率、内存使用、连接数、慢查询,结合业务设置合理 maxmemory 与淘汰策略(如 LRU/LFU)。

0