Scheduler 配置

Scheduler 后台任务管理模块,主要负责均衡、磁盘修复、节点下线、删除、修补等后台任务。

Scheduler的配置是基于公有配置,以下配置说明主要针对于Scheduler的私有配置。

配置说明

配置项说明必需
公共配置项如服务端口、运行日志以及审计日志等,参考基础服务配置章节
cluster_id集群id,集群内id统一
servicesscheduler所有节点列表是,参考示例
service_register服务注册信息是,参考示例
clustermgrClustermgr客户端初始化配置是,需要配置clustermgr服务地址
proxyProxy客户端初始化配置否,参考rpc配置示例
blobnodeBlobNode客户端初始化配置否,参考rpc配置示例
kafkakafka相关配置
balance均衡任务参数配置
disk_drop磁盘下线任务参数配置
disk_repair磁盘修复任务参数配置
volume_inspect卷巡检任务参数配置(这个卷指纠删码子系统中的卷)
shard_repair修补任务参数配置是,需要配置孤本数据日志存放目录
blob_delete删除任务参数配置是,需要配置删除日志存放目录
topology_update_interval_min配置集群拓扑更新时间间隔否,默认1分钟
volume_cache_update_interval_s卷缓存更新频率,避免短时间内频繁更新卷否,默认10s
free_chunk_counter_buckets统计freechunk指标的bucket访问否,默认[1, 5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000]
task_log记录已完成后台任务信息,用于备份是,需要配置dir,chunkbits默认29

配置示例

services示例

  • leader,主节点id
  • node_id,本节点id
  • members,所有scheduler节点
{
  "leader": 1,
  "node_id": 1,
  "members": {
    "1": "127.0.0.1:9800",
    "2": "127.0.0.2:9800"
  }
}

service_register示例

  • host,本节点服务地址
  • idc,本节点所在idc信息
{
  "host": "http://127.0.0.1:9800",
  "idc": "z0"
}

clustermgr示例

  • hosts,clustermgr服务列表
  • 其他一些rpc参数,参考通用模块说明
{
  "hosts": [
    "http://127.0.0.1:9998",
    "http://127.0.0.2:9998",
    "http://127.0.0.3:9998"
  ]
}

kafka示例

  • broker_list,kafka节点列表
  • fail_msg_sender_timeout_ms,消息消费失败后重新投递至失败主题的超时时间,默认为1000ms
  • shard_repair,修补消息主题及消费分区指定(分区未指定默认消费所有分区),其中包含三类主题:
    • normal,普通主题,默认为shard_repair
    • failed,失败主题(正常消息消费失败后会将消息重新投递至该主题),默认为shard_repair_prior
    • priority,优先消费主题,主要存放一些需要高优先级消费的修补消息,默认为shard_repair_failed
  • blob_delete,删除消息主题及消费分区指定,其中包含两类主题
    • normal,普通主题,默认为blob_delete
    • failed,失败主题(正常消息消费失败后会将消息重新投递至该主题),默认为blob_delete_failed
{
  "broker_list": ["127.0.0.1:9095","127.0.0.1:9095","127.0.0.1:9095"],
  "fail_msg_sender_timeout_ms": 1000,
  "shard_repair": {
    "normal": {
      "topic": "shard_repair",
      "partitions": [0,1]
    },
    "failed": {
      "topic": "shard_repair_failed",
      "partitions": [0,1]
    },
    "priority": {
      "topic": "shard_repair_prior",
      "partitions": [0,1]
    }
  },
  "blob_delete": {
    "normal": {
      "topic": "blob_delete",
      "partitions": [0,1]
    },
    "failed": {
      "topic": "blob_delete_failed",
      "partitions": [0,1]
    }
  }
}

balance示例

  • balance_disk_cnt_limit,允许同时执行均衡的最大磁盘数,默认100
  • max_disk_free_chunk_cnt,均衡时会判断本idc内是否存在freechunk大于等于该值的磁盘,如果不存在则不会发起均衡,默认1024
  • min_disk_free_chunk_cnt,均衡freechunk数小于该值的磁盘,默认20
  • prepare_queue_retry_delay_s,准备队列重试时间间隔,当准备队列中的任务执行失败后的重试时间间隔,默认10
  • finish_queue_retry_delay_s,完成队列重试时间间隔,默认10
  • cancel_punish_duration_s,任务取消之后重试时间间隔,默认20
  • work_queue_size,执行中任务队列大小,默认20
  • collect_task_interval_s,收集任务时间间隔,默认5
  • check_task_interval_s,任务校验时间间隔,默认5
{
    "balance_disk_cnt_limit": 700,    
    "max_disk_free_chunk_cnt": 500,    
    "min_disk_free_chunk_cnt": 105,      
    "prepare_queue_retry_delay_s": 60,    
    "finish_queue_retry_delay_s": 60,    
    "cancel_punish_duration_s": 60,    
    "work_queue_size": 600,    
    "collect_task_interval_s": 10,    
    "check_task_interval_s": 1    
}

disk_drop示例

  • prepare_queue_retry_delay_s,准备队列重试时间间隔,当准备队列中的任务执行失败后的重试时间间隔,默认10
  • finish_queue_retry_delay_s,完成队列重试时间间隔,默认10
  • cancel_punish_duration_s,任务取消之后重试时间间隔,默认20
  • work_queue_size,执行中任务队列大小,默认20
  • collect_task_interval_s,收集任务时间间隔,默认5
  • check_task_interval_s,任务校验时间间隔,默认5
{     
    "prepare_queue_retry_delay_s": 60,    
    "finish_queue_retry_delay_s": 60,    
    "cancel_punish_duration_s": 60,    
    "work_queue_size": 600,    
    "collect_task_interval_s": 10,    
    "check_task_interval_s": 1    
}

disk_repair示例

  • prepare_queue_retry_delay_s,准备队列重试时间间隔,当准备队列中的任务执行失败后的重试时间间隔,默认10
  • finish_queue_retry_delay_s,完成队列重试时间间隔,默认10
  • cancel_punish_duration_s,任务取消之后重试时间间隔,默认20
  • work_queue_size,执行中任务队列大小,默认20
  • collect_task_interval_s,收集任务时间间隔,默认5
  • check_task_interval_s,任务校验时间间隔,默认5
{     
    "prepare_queue_retry_delay_s": 60,    
    "finish_queue_retry_delay_s": 60,    
    "cancel_punish_duration_s": 60,    
    "work_queue_size": 600,    
    "collect_task_interval_s": 10,    
    "check_task_interval_s": 1    
}

volume_inspect示例

  • inspect_interval_s,巡检时间间隔,默认1s
  • inspect_batch,批量巡检卷大小,默认1000
  • list_vol_step,请求clustermgr列举卷大小,可控制请求clustermgr的qps,默认100
  • list_vol_interval_ms,请求clustermgr列举卷的时间间隔,默认10ms
  • timeout_ms,检查一批巡检任务是否完成的时间间隔,默认10000ms
{
    "inspect_interval_s": 100,     
    "inspect_batch": 10,    
    "list_vol_step": 20,    
    "list_vol_interval_ms": 10,    
    "timeout_ms": 10000   
}

shard_repair示例

  • task_pool_size,修补任务的并发度,默认10
  • normal_handle_batch_cnt,批量消费普通消息大小,默认100
  • fail_handle_batch_cnt,批量消费失败消息大小,默认100
  • fail_msg_consume_interval_ms,失败消息消费时间间隔,默认10000ms
  • orphan_shard_log,记录修补失败的孤本信息,dir需要配置,chunkbits为日志文件轮转大小,默认29(2^29字节)
{
  "task_pool_size": 10,
  "normal_handle_batch_cnt": 500,
  "fail_handle_batch_cnt": 100,
  "fail_msg_consume_interval_ms": 10000,
  "orphan_shard_log": {
    "dir": "/home/service/scheduler/_package/orphan_shard_log",
    "chunkbits": 29
  }
} 

blob_delete示例

  • task_pool_size,修补任务的并发度,默认10
  • normal_handle_batch_cnt,批量消费普通消息大小,默认100
  • fail_handle_batch_cnt,批量消费失败消息大小,默认100
  • fail_msg_consume_interval_ms,失败消息消费时间间隔,默认10000ms
  • safe_delay_time_h,删除保护期,默认72h,如果配置负数则表示直接删除
  • delete_log,删除日志保留目录,需要配置,chunkbits默认为29
{
  "task_pool_size": 400,
  "normal_handle_batch_cnt": 1000,
  "fail_handle_batch_cnt": 1000,
  "fail_msg_consume_interval_ms": 6000,
  "safe_delay_time_h": 12,
  "delete_log": {
    "dir": "/home/service/scheduler/_package/delete_log",
    "chunkbits": 29
  }
} 
在github上编辑