Redis部署

部署Redis需要先进行集群定义,本文介绍了几类Redis集群的定义方式。

与PostgreSQL类似,部署Redis同样需要两个步骤:

  1. 使用配置项声明/定义Redis集群
  2. 执行剧本创建Redis集群

Redis集群定义

下面给出了三个Redis集群的精简定义,包括:

  • 一个1节点,3实例的Redis Sentinel集群 redis-sentinel
  • 一个2节点,12实例的的Redis Cluster集群 redis-cluster
  • 一个1节点,一主两从的Redis Standalone集群 redis-standalone

您需要在节点上为Redis实例分配唯一的端口号。

Redis Sentinel集群定义

  1. #----------------------------------#
  2. # redis sentinel example #
  3. #----------------------------------#
  4. redis-meta:
  5. hosts:
  6. 10.10.10.10:
  7. redis_node: 1
  8. redis_instances: { 6001 : {} ,6002 : {} , 6003 : {} }
  9. vars:
  10. redis_cluster: redis-meta
  11. redis_mode: sentinel
  12. redis_max_memory: 128MB

Redis原生集群定义

  1. #----------------------------------#
  2. # redis cluster example #
  3. #----------------------------------#
  4. redis-test:
  5. hosts:
  6. 10.10.10.11:
  7. redis_node: 1
  8. redis_instances: { 6501 : {} ,6502 : {} ,6503 : {} ,6504 : {} ,6505 : {} ,6506 : {} }
  9. 10.10.10.12:
  10. redis_node: 2
  11. redis_instances: { 6501 : {} ,6502 : {} ,6503 : {} ,6504 : {} ,6505 : {} ,6506 : {} }
  12. vars:
  13. redis_cluster: redis-test # name of this redis 'cluster'
  14. redis_mode: cluster # standalone,cluster,sentinel
  15. redis_max_memory: 64MB # max memory used by each redis instance
  16. redis_mem_policy: allkeys-lru # memory eviction policy

Redis普通主从实例定义

  1. #----------------------------------#
  2. # redis standalone example #
  3. #----------------------------------#
  4. redis-common:
  5. hosts:
  6. 10.10.10.13:
  7. redis_node: 1
  8. redis_instances:
  9. 6501: {}
  10. 6502: { replica_of: '10.10.10.13 6501' }
  11. 6503: { replica_of: '10.10.10.13 6501' }
  12. vars:
  13. redis_cluster: redis-common # name of this redis 'cluster'
  14. redis_mode: standalone # standalone,cluster,sentinel
  15. redis_max_memory: 64MB # max memory used by each redis instance

创建Redis集群

使用剧本redis.yml创建Redis实例/集群

  1. ./redis.yml -l redis-sentinel
  2. ./redis.yml -l redis-cluster
  3. ./redis.yml -l redis-standalone

此外,您还可以针对单个节点或单个Redis实例进行操作:

  1. ./redis.yml -l 10.10.10.10 # 创建单个节点 10.10.10.13
  2. ./redis.yml -l 10.10.10.13 -p 6501 # 创建单个实例 10.10.10.13:6501

其他注意事项

尽管这样做并不是推荐的行为,您可以将PostgreSQL与Redis进行混合部署,以充分利用机器资源。

redis.yml 剧本会在机器上同时部署Redis监控Exporter,包括redis_exporternode_exporter(可选)

在此过程中,如果机器的node_exporter存在,将会被重新部署。

Prometheus默认会使用”多目标抓取”模式,使用节点上9121端口的Redis Exporter抓取该节点上所有的Redis实例。

查阅Redis监控

目前Pigsty提供了3个Redis监控面板,作为一个独立监控应用 REDIS的组成部分,分别为:

  • Redis Overview:提供整个环境中Redis的全局概览, Demo
  • Redis Cluster: 关注单个Redis业务集群的监控信息, Demo
  • Redis Instance:关注单个Redis实例的详细监控信息, Demo

您可以使用自带的 redis-benchmark 进行测试,生成一些测试流量:

  1. redis-benchmark -h 10.10.10.13 -p 6501

最后修改 2022-05-27: init commit (1e3e284)