REDIS配置
描述用户需要什么样的Redis,本文介绍Pigsty中关于Redis的配置项
- REDIS_IDENTITY : REDIS身份参数
- REDIS_NODE : REDIS节点准备
- REDIS_PROVISION : REDIS集群/实例置备
REDIS_IDENTITY
身份参数是定义Redis集群时必须提供的信息,包括:
名称 | 属性 | 说明 | 例子 |
---|---|---|---|
redis_cluster | 必选,集群级别 | 集群名 | redis-test |
redis_node | 必选,节点级别 | 节点编号 | primary , replica |
redis_instances | 必选,节点级别 | 实例定义 | { 6001 : {} ,6002 : {}} |
- redis_cluster 标识了Redis集群的名称,在集群层面进行配置,作为集群资源的顶层命名空间。
- redis_node 标识了节点在集群中的序号
- redis_instances 是一个JSON对象,Key为实例端口号,Value为一个JSON对象,包含实例特殊的配置
redis_cluster
Redis数据库集群名称, 类型:string
,层级:C,默认值为:
REDIS数据库集群名称将用作集群内资源的命名空间,需要遵循特定命名规则:[a-z][a-z0-9-]*
,以兼容不同约束对身份标识的要求。建议使用redis-
作为集群名前缀。
身份参数,必填参数,集群级参数
redis_node
Redis节点序列号, 类型:int
,层级:I,默认值为:
数据库节点的序号,在集群内部唯一,用于区别与标识集群内的不同节点,从0或1开始分配。
redis_instances
Redis实例定义, 类型:instance[]
,层级:I,默认值为:
部署在该数据库节点上的所有Redis实例,JSON KV对象格式。Key为数值类型端口号,Value为该实例特定的JSON配置项。
样例:
redis_instances: { 6501 : {} ,6502 : {} ,6503 : {} ,6504 : {} ,6505 : {} ,6506 : {} }
redis_instances:
6501: {}
6502: { replica_of: '10.10.10.13 6501' }
6503: { replica_of: '10.10.10.13 6501' }
每一个Redis实例在对应节点上监听一个唯一端口,您可以为Redis实例配置独立的参数选项(目前只支持 replica_of
,用于预构建主从复制)
身份参数,必填参数,实例级参数
REDIS_NODE
redis_fs_main
Redis使用的主数据盘挂载点, 类型:path
,层级:C,默认值为:"/data"
Redis使用的主数据盘挂载点,默认为/data
。
Pigsty会在该目录下创建redis
目录,用于存放Redis数据。例如/data/redis
。
详情请参考 FHS:Redis
redis_exporter_enabled
是否启用Redis监控, 类型:bool
,层级:C,默认值为:true
Redis Exporter默认启用,在每个Redis节点上部署一个,默认监听9121端口。
redis_exporter_port
Redis Exporter监听端口, 类型:int
,层级:C,默认值为:9121
注:如果您修改了该默认端口,则需要在Prometheus的相关配置规则文件中一并替换此端口。
redis_exporter_options
Redis Exporter命令参数, 类型:string
,层级:C/I,默认值为:""
REDIS_PROVISION
redis_safeguard
安全保险,禁止清除存在的Redis实例, 类型:bool
,层级:C/A,默认值为:false
如果为true
,任何情况下,Pigsty剧本都不会移除运行中的PostgreSQL实例,包括 redis-remove.yml。
详情请参考 保护机制。
redis_clean
是否抹除运行中的Redis实例?类型:bool
,层级:C/A,默认值为:false
。
针对 redis.yml 剧本的抹除豁免,如果指定该参数为真,那么在 redis.yml 剧本执行时,会自动抹除已有的Redis实例
这是一个危险的操作,因此必须显式指定。
当安全保险参数 redis_safeguard 打开时,本参数无效。
redis_rmdata
移除Redis实例时是否一并移除数据目录?, 类型:enum
,层级:A,默认值为:true
如果不移除, 之前实例残留的RDB/AOF文件会被自动加载使用。
redis_mode
Redis集群模式, 类型:enum
,层级:C,默认值为:"standalone"
指明该Redis集群的模式,有三种可选模式:
standalone
:默认模式,部署一系列独立的Redis实例,(可以构建普通主从)cluster
: Redis原生集群模式sentinel
:Redis高可用组件:哨兵
当使用standalone
模式时,Pigsty会根据 replica_of
参数额外设置Redis主从。 当使用cluster
模式时,Pigsty会根据 redis_cluster_replicas 参数使用所有定义的实例创建原生Redis集群。
redis_conf
Redis配置文件模板, 类型:string
,层级:C,默认值为:"redis.conf"
redis_bind_address
Redis监听地址, 类型:ip
,层级:C,默认值为:"0.0.0.0"
Redis监听的IP地址,如果留空则为 inventory_hostname
。默认监听有本地所有IPv4地址
redis_max_memory
Redis可用的最大内存, 类型:size
,层级:C/I,默认值为:"1GB"
每个Redis实例使用的最大内存限制,默认为1GB,建议在集群层面配置此参数,保持集群实例配置一致。
redis_mem_policy
内存逐出策略, 类型:enum
,层级:C,默认值为:"allkeys-lru"
其他可选策略包括:
volatile-lru
allkeys-lru
volatile-lfu
allkeys-lfu
volatile-random
allkeys-random
volatile-ttl
noeviction
redis_password
Redis密码, 类型:string
,层级:C,默认值为:""
masterauth
& requirepass
使用的密码,留空则禁用密码,默认禁用
注意安全,请不要将无密码保护的Redis放置于公网上
redis_rdb_save
RDB保存指令, 类型:string[]
,层级:C,默认值为: [ "1200 1" ]
Redis SAVE命令,配置将启用RDB功能,每一条Save策略作为一个字符串。
redis_aof_enabled
是否启用AOF, 类型:bool
,层级:C,默认值为:false
redis_rename_commands
重命名危险命令列表, 类型:object
,层级:C,默认值为:{}
JSON字典,将Key表示的命令重命名为Value表示的命令,避免误操作危险命令。
redis_cluster_replicas
集群每个主库带几个从库, 类型:int
,层级:C,默认值为:1
在Redis原生集群模式中,为每一个主库配置多少个从库?默认为1个。
/bin/redis-cli --cluster create --cluster-yes \
--cluster-replicas {{ redis_cluster_replicas|default(1) }}
最后修改 2022-05-27: init commit (1e3e284)