PIGSTY

参数

使用 21 个参数定制 redis

redis 模块中有 21 个参数。

参数类型级别注释
redis_clusterstringCredis 集群名称,必需的身份参数
redis_instancesdictI此 redis 节点上的 redis 实例定义
redis_nodeintIredis 节点序列号,必需的节点整数 ID
redis_fs_mainpathCredis 主数据挂载点,默认为 /data
redis_exporter_enabledboolC在 redis 节点上安装 redis exporter?
redis_exporter_portportCredis exporter 监听端口,默认为 9121
redis_exporter_optionsstringC/Iredis exporter 的 cli 参数和额外选项
redis_safeguardboolG/C/A防止清除正在运行的 redis 实例?
redis_cleanboolG/C/A初始化期间清除现有的 redis?
redis_rmdataboolG/C/A清除 redis 服务器时移除 redis 数据?
redis_modeenumCredis 模式:standalone、cluster、sentinel
redis_confstringCredis 配置模板路径,除 sentinel 外
redis_bind_addressipCredis 绑定地址,空字符串将使用主机 IP
redis_max_memorysizeC/I每个 redis 实例使用的最大内存
redis_mem_policyenumCredis 内存逐出策略
redis_passwordpasswordCredis 密码,空字符串将禁用密码
redis_rdb_savestring[]Credis rdb 保存指令,使用空列表禁用
redis_aof_enabledboolC启用 redis 追加文件?
redis_rename_commandsdictC重命名 redis 危险命令
redis_cluster_replicasintCredis 集群中一个主节点的副本数量
redis_sentinel_monitormaster[]Csentinel 主节点列表,仅限 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 的字典

默认值:{},您可以通过设置此值来隐藏像 FLUSHDBFLUSHALL 这样的危险命令,这是一个示例:

{
  "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 主节点列表。每个主节点定义为具有 namehostportpasswordquorum 键的字典。

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 }

namehost 是必需的,portpasswordquorum 是可选的,quorum 用于为此主节点设置法定人数,通常大于 sentinel 实例的一半。