参数
使用 21 个参数定制 redis
redis 模块中有 21 个参数。
参数 | 类型 | 级别 | 注释 |
---|---|---|---|
redis_cluster | string | C | redis 集群名称,必需的身份参数 |
redis_instances | dict | I | 此 redis 节点上的 redis 实例定义 |
redis_node | int | I | redis 节点序列号,必需的节点整数 ID |
redis_fs_main | path | C | redis 主数据挂载点,默认为 /data |
redis_exporter_enabled | bool | C | 在 redis 节点上安装 redis exporter? |
redis_exporter_port | port | C | redis exporter 监听端口,默认为 9121 |
redis_exporter_options | string | C/I | redis exporter 的 cli 参数和额外选项 |
redis_safeguard | bool | G/C/A | 防止清除正在运行的 redis 实例? |
redis_clean | bool | G/C/A | 初始化期间清除现有的 redis? |
redis_rmdata | bool | G/C/A | 清除 redis 服务器时移除 redis 数据? |
redis_mode | enum | C | redis 模式:standalone、cluster、sentinel |
redis_conf | string | C | redis 配置模板路径,除 sentinel 外 |
redis_bind_address | ip | C | redis 绑定地址,空字符串将使用主机 IP |
redis_max_memory | size | C/I | 每个 redis 实例使用的最大内存 |
redis_mem_policy | enum | C | redis 内存逐出策略 |
redis_password | password | C | redis 密码,空字符串将禁用密码 |
redis_rdb_save | string[] | C | redis rdb 保存指令,使用空列表禁用 |
redis_aof_enabled | bool | C | 启用 redis 追加文件? |
redis_rename_commands | dict | C | 重命名 redis 危险命令 |
redis_cluster_replicas | int | C | redis 集群中一个主节点的副本数量 |
redis_sentinel_monitor | master[] | C | sentinel 主节点列表,仅限 sentinel 集群 |
默认值
默认参数在 roles/redis/defaults/main.yml
中定义
#redis_cluster: <CLUSTER> # redis 集群名称,必需的身份参数
#redis_node: 1 <NODE> # redis 节点序列号,必需的节点整数 ID
#redis_instances: {} <NODE> # 此 redis 节点上的 redis 实例定义
redis_fs_main: /data # redis 主数据挂载点,默认为 `/data`
redis_exporter_enabled: true # 在 redis 节点上安装 redis exporter?
redis_exporter_port: 9121 # redis exporter 监听端口,默认为 9121
redis_exporter_options: '' # redis exporter 的 cli 参数和额外选项
redis_safeguard: false # 防止清除正在运行的 redis 实例?
redis_clean: true # 初始化期间清除现有的 redis?
redis_rmdata: true # 清除 redis 服务器时移除 redis 数据?
redis_mode: standalone # redis 模式:standalone、cluster、sentinel
redis_conf: redis.conf # redis 配置模板路径,除 sentinel 外
redis_bind_address: '0.0.0.0' # redis 绑定地址,空字符串将使用主机 IP
redis_max_memory: 1GB # 每个 redis 实例使用的最大内存
redis_mem_policy: allkeys-lru # redis 内存逐出策略
redis_password: '' # redis 密码,空字符串将禁用密码
redis_rdb_save: ['1200 1'] # redis rdb 保存指令,使用空列表禁用
redis_aof_enabled: false # 启用 redis 追加文件?
redis_rename_commands: {} # 重命名 redis 危险命令
redis_cluster_replicas: 1 # redis 集群中一个主节点的副本数量
redis_sentinel_monitor: [] # sentinel 主节点列表,仅在 sentinel 集群上工作
redis_cluster
名称:redis_cluster
,类型:string
,级别:C
redis 集群名称,必需的身份参数。
无默认值,您必须明确定义它。
符合正则表达式 [a-z][a-z0-9-]*
,建议使用与组名相同的名称并以 redis-
开头
redis_node
名称:redis_node
,类型:int
,级别:I
redis 节点序列号,在 redis 集群中需要唯一的整数
您必须为每个 redis 节点明确定义节点 ID。整数从 0 或 1 开始。
redis_instances
名称:redis_instances
,类型:dict
,级别:I
此 redis 节点上的 redis 实例定义
无默认值,您必须使用此参数在每个 redis 节点上明确定义 redis 实例。
这是一个原生 redis 集群定义的示例
redis-test: # redis 原生集群:3m x 3s
hosts:
10.10.10.12: { redis_node: 1 ,redis_instances: { 6379: { } ,6380: { } ,6381: { } } }
10.10.10.13: { redis_node: 2 ,redis_instances: { 6379: { } ,6380: { } ,6381: { } } }
vars: { redis_cluster: redis-test ,redis_password: 'redis.test' ,redis_mode: cluster, redis_max_memory: 32MB }
端口号在节点中应该是唯一的,value
中的 replica_of
应该是同一 redis 集群的实例成员。
redis_instances:
6379: {}
6380: { replica_of: '10.10.10.13 6379' }
6381: { replica_of: '10.10.10.13 6379' }
redis_fs_main
名称:redis_fs_main
,类型:path
,级别:C
redis 主数据挂载点,默认为 /data
默认值:/data
,并且 /data/redis
将用作 redis 数据目录。
redis_exporter_enabled
名称:redis_exporter_enabled
,类型:bool
,级别:C
在 redis 节点上安装 redis exporter?
默认值为 true
,这将在此 redis_node 上启动一个 redis_exporter
redis_exporter_port
名称:redis_exporter_port
,类型:port
,级别:C
redis exporter 监听端口,默认为 9121
默认值:9121
redis_exporter_options
名称:redis_exporter_options
,类型:string
,级别:C/I
redis exporter 的 cli 参数和额外选项,将添加到 /etc/default/redis_exporter
。
默认值为空字符串
redis_safeguard
名称:redis_safeguard
,类型:bool
,级别:G/C/A
防止清除正在运行的 redis 实例?
默认值为 false
,如果设置为 true
,且 redis 实例正在运行,初始化/移除 playbook 将立即中止。
redis_clean
名称:redis_clean
,类型:bool
,级别:G/C/A
初始化期间清除现有的 redis?
默认值为 true
,这将在 redis 初始化或移除期间移除 redis 服务器。
redis_rmdata
名称:redis_rmdata
,类型:bool
,级别:G/C/A
清除 redis 服务器时移除 redis 数据?
默认值为 true
,这将与 redis 实例一起移除 redis rdb / aof。
redis_mode
名称:redis_mode
,类型:enum
,级别:C
redis 模式:standalone、cluster、sentinel
默认值:standalone
standalone
:将 redis 设置为独立(主从)模式cluster
:将此 redis 集群设置为 redis 原生集群sentinel
:为独立 redis HA 设置 redis 为 sentinel
redis_conf
名称:redis_conf
,类型:string
,级别:C
redis 配置模板路径,除 sentinel 外
默认值:redis.conf
,这是 roles/redis/templates/redis.conf
中的模板文件。
如果您想使用自己的 redis 配置模板,可以将其放在 templates/
目录中并将此参数设置为模板文件名。
请注意,redis sentinel 使用不同的模板文件,即 roles/redis/templates/redis-sentinel.conf
redis_bind_address
名称:redis_bind_address
,类型:ip
,级别:C
redis 绑定地址,空字符串将使用清单主机名
默认值:0.0.0.0
,这将绑定到此主机上的所有可用 IPv4 地址
请在生产环境中仅绑定到内网 IP,即将此值设置为
''
redis_max_memory
名称:redis_max_memory
,类型:size
,级别:C/I
每个 redis 实例使用的最大内存,默认值:1GB
redis_mem_policy
名称:redis_mem_policy
,类型:enum
,级别:C
redis 内存逐出策略
默认值:allkeys-lru
,查看 redis 逐出策略 获取更多详情
noeviction
:达到内存限制时不保存新值。当数据库使用复制时,这适用于主数据库allkeys-lru
:保留最近使用的键;移除最少使用的(LRU)键allkeys-lfu
:保留经常使用的键;移除最少经常使用的(LFU)键volatile-lru
:移除过期字段设置为 true 的最少使用键。volatile-lfu
:移除过期字段设置为 true 的最少经常使用键。allkeys-random
:随机移除键以为添加的新数据腾出空间。volatile-random
:随机移除过期字段设置为 true 的键。volatile-ttl
:移除过期字段设置为 true 且剩余生存时间(TTL)值最短的键。
redis_password
名称:redis_password
,类型:password
,级别:C/N
redis 密码,空字符串将禁用密码,这是默认行为
请注意,由于 redis_exporter 的实现限制,每个节点只能设置一个 redis_password
。这通常不是问题,因为 pigsty 不允许在同一节点上部署两个不同的 redis 集群。
请在生产环境中使用强密码
redis_rdb_save
名称:redis_rdb_save
,类型:string[]
,级别:C
redis rdb 保存指令,使用空列表禁用,查看 redis 持久化 获取详情。
默认值为 ["1200 1"]
:如果至少 1 个键发生变化,每 20 分钟将数据集转储到磁盘:
redis_aof_enabled
名称:redis_aof_enabled
,类型:bool
,级别:C
启用 redis 追加文件?默认值为 false
。
redis_rename_commands
名称:redis_rename_commands
,类型:dict
,级别:C
重命名 redis 危险命令,这是一个 k:v old: new
的字典
默认值:{}
,您可以通过设置此值来隐藏像 FLUSHDB
和 FLUSHALL
这样的危险命令,这是一个示例:
{
"keys": "op_keys",
"flushdb": "op_flushdb",
"flushall": "op_flushall",
"config": "op_config"
}
redis_cluster_replicas
名称:redis_cluster_replicas
,类型:int
,级别:C
redis 集群中一个主节点/主要节点的副本数量,默认值:1
redis_sentinel_monitor
名称:redis_sentinel_monitor
,类型:master[]
,级别:C
只有当 redis_mode
设置为 sentinel
时才能使用。
此 sentinel 集群要监控的 redis 主节点列表。每个主节点定义为具有 name
、host
、port
、password
、quorum
键的字典。
redis_sentinel_monitor: # redis sentinel 的主节点列表,使用 cls 作为名称,主节点 ip:port
- { name: redis-src, host: 10.10.10.45, port: 6379 ,password: redis.src, quorum: 1 }
- { name: redis-dst, host: 10.10.10.48, port: 6379 ,password: redis.dst, quorum: 1 }
name
和 host
是必需的,port
、password
、quorum
是可选的,quorum
用于为此主节点设置法定人数,通常大于 sentinel 实例的一半。