当前位置: 首页 > news >正文

CTDB 脚本配置文件指南

适用版本:CTDB ≥ 4.20,Ubuntu 20.04 LTS 及更新版本。

文件定位与优先级


每个事件脚本按以下顺序读取配置,后读入者优先:

  1. 全局文件
    /etc/ctdb/script.options
    存放所有脚本共享的通用变量,避免重复定义。

  2. 脚本专用文件
    SCRIPT.options(与脚本同名、同目录,仅后缀为 .options
    当变量名冲突时,此文件内容覆盖全局文件。


语法与阈值表达式


  • 仅支持 Shell 变量赋值行注释 #
  • 布尔值统一使用 yes / no
  • 阈值语法WARNING_THRESHOLD[:ERROR_THRESHOLD]
    • 仅给出警告阈值:当监控指标 ≥ 该值时记录 warning,脚本继续运行。
    • 同时给出错误阈值:当指标 ≥ 错误阈值时脚本以非 0 退出,节点会被标记为 UNHEALTHY。

网络事件脚本


10.interface – 公网接口与连接重置

变量 取值范围 默认值 说明
CTDB_KILLTCP_USE_SS_KILL yes / try / no no 是否在 releaseip 阶段使用 ss -K 强制重置 TCP 连接。
yes:仅用 ss;
try:先 ss,失败退回 ctdb_killtcp;
no:始终使用 ctdb_killtcp。
CTDB_PARTIALLY_ONLINE_INTERFACES yes / no no yes 时,只要还有一个接口在线,节点状态为 PARTIALLYONLINE 而非 UNHEALTHY。
注意:与 NAT 网关或 LVS 同时启用时,需确保对应接口必须在线,否则流量会中断。

11.natgw – NAT 网关

场景:当节点未持有任何公网 IP 时,通过 leader 节点做 SNAT,保证节点仍可访问外部网络。

变量 是否必填 示例值 说明
CTDB_NATGW_NODES /etc/ctdb/natgw_nodes 节点列表,每行格式:IPADDR [follower-only]
标记 follower-only 的节点永远不会被选为 leader。
CTDB_NATGW_PRIVATE_NETWORK 192.168.1.0/24 需做 NAT 的私网段。
CTDB_NATGW_PUBLIC_IP ✔(leader) 10.0.0.227/24 Leader 节点出向 SNAT 地址,不能是 CTDB 公网 IP
CTDB_NATGW_PUBLIC_IFACE ✔(leader) eth0 上述地址所在接口。
CTDB_NATGW_DEFAULT_GATEWAY 10.0.0.1 Leader 节点额外默认网关,用于出向流量。
CTDB_NATGW_STATIC_ROUTES 10.0.0.0/24 172.16.5.0/24@10.0.0.254 为特定网段创建静态路由而非整网默认路由,可避免流量绕路。

最小可运行配置示例

# /etc/ctdb/script.options
CTDB_NATGW_NODES=/etc/ctdb/natgw_nodes
CTDB_NATGW_PRIVATE_NETWORK=192.168.1.0/24
CTDB_NATGW_PUBLIC_IP=10.0.0.227/24
CTDB_NATGW_PUBLIC_IFACE=eth0

13.per_ip_routing – 策略路由

若公网地址位于不同二层网段,需要为每个地址独立出接口路由。

变量 推荐值 说明
CTDB_PER_IP_ROUTING_CONF /etc/ctdb/policy_routing 每行格式:<公网IP> <目标网段/掩码> [网关]
CTDB_PER_IP_ROUTING_RULE_PREF 100 ip rule 优先级,需避开系统保留区间。
CTDB_PER_IP_ROUTING_TABLE_ID_LOW 1000 自动生成路由表号下限,必须 >255。
CTDB_PER_IP_ROUTING_TABLE_ID_HIGH 9000 上限。

示例 policy_routing 文件

192.168.100.10/32 0.0.0.0/0 10.10.10.254
192.168.101.10/32 0.0.0.0/0 10.10.11.254

91.lvs – LVS 负载均衡

与 NAT 网关变量完全对应,仅前缀改为 CTDB_LVS_
需额外注意:

  • CTDB_LVS_PUBLIC_IP对外提供服务的虚拟 IP
  • 若节点标记为 follower-only,则无需配置 PUBLIC_IFACEPUBLIC_IP

服务事件脚本


启用/禁用脚本:

ctdb enablescript  50.samba
ctdb disablescript 70.iscsi

20.multipathd – 多路径设备监控

CTDB_MONITOR_MPDEVICES="mpatha mpathb"

31.clamd – ClamAV 防病毒

  • 默认未启用。
  • CTDB_CLAMD_SOCKET="/var/run/clamav/clamd.ctl"

40.vsftpd – FTP 服务

  • CTDB_VSFTPD_MONITOR_THRESHOLDS="3:5"
    连续 3 次检查失败记录警告,5 次失败则标记节点 UNHEALTHY。

48.netbios – NetBIOS 名称解析

  • CTDB_SERVICE_NMB="nmbd"(不同发行版可能为 samba-nmbd

49.winbind – Samba Winbind

变量 作用
CTDB_SERVICE_WINBIND 服务名,如 winbind
CTDB_SAMBA_INTERFACES_FILE 自动生成 interfaces.conf 供 Samba 使用,限制 SMB 多通道
CTDB_SAMBA_INTERFACES_EXTRA 额外绑定接口列表

示例:

CTDB_SAMBA_INTERFACES_FILE="/etc/samba/interfaces.conf"
CTDB_SAMBA_INTERFACES_EXTRA="bond0"

50.samba – SMB 文件服务

变量 默认值 说明
CTDB_SAMBA_CHECK_PORTS Samba 实际监听端口 可强制指定端口列表
CTDB_SAMBA_SKIP_SHARE_CHECK no 共享目录存在性检查开关
CTDB_SERVICE_SMB 发行版决定 smbd 服务名

60.nfs – NFS 服务

变量 默认值 说明
CTDB_NFS_CALLOUT nfs-linux-kernel-callout 可替换为 Ganesha 等外部脚本
CTDB_NFS_CHECKS_DIR /etc/ctdb/nfs-checks.d 监控 RPC 服务的检查脚本目录
CTDB_NFS_EXPORTS_FILE 见下 导出文件路径
CTDB_NFS_SKIP_SHARE_CHECK no 导出目录存在性检查开关
CTDB_NFS_SHARED_STATE_DIR 存放集群 NFS 状态,需位于共享文件系统
CTDB_RPCINFO_LOCALHOST 127.0.0.1 rpcinfo IPv4 测试地址
CTDB_RPCINFO_LOCALHOST6 ::1 IPv6
CTDB_STATD_CALLOUT_SHARED_STORAGE NFSv3 statd 状态共享方式

CTDB_NFS_EXPORTS_FILE 默认值:

  • 内核 NFS: /var/lib/nfs/etab
  • Ganesha: /etc/ganesha/ganesha.conf

statd 共享存储三种模式:

  • persistent_db[:TDB]:本地队列 + TDB,性能较好,有短暂窗口丢失锁风险。
  • shared_dir[:DIR]:共享目录,需评估延迟。
  • none:不共享,NFSv3 锁回收失效,仅测试用。

70.iscsi – iSCSI target 服务

CTDB_START_ISCSI_SCRIPTS="/cluster/tgtd.d"

该目录需位于共享存储,每个公网 IP 对应一个启动脚本。


数据库完整性及备份策略


变量 默认值 说明
CTDB_MAX_CORRUPT_DB_BACKUPS 10 启动时发现损坏的易失 TDB 备份数
CTDB_PERSISTENT_DB_BACKUP_DIR 持久 TDB 每日备份目录(需共享文件系统)
CTDB_PERSISTENT_DB_BACKUP_LIMIT 14 备份保留上限

若不想在监控事件内备份,可改用定时任务:

# /etc/cron.d/ctdb-backup
0 2 * * * root /etc/ctdb/ctdb-backup-persistent-tdbs.sh -l /cluster/ctdb-backups

系统资源监控


05.system 脚本防止因磁盘或内存耗尽导致集群异常。

变量 默认值 示例
CTDB_MONITOR_FILESYSTEM_USAGE 含数据库目录的文件系统 90% /:85:95 /data:90:97
CTDB_MONITOR_MEMORY_USAGE 80 75:90

事件脚本调试


当脚本长时间阻塞,可设置:

CTDB_DEBUG_HUNG_SCRIPT_STACKPAT="exportfs|rpcinfo|smbd|python3"

匹配进程将打印堆栈至系统日志,结合 ctdb scriptstatus 可迅速定位死锁位置。


常用文件路径索引


  • 全局配置:/etc/ctdb/script.options
  • 脚本专用:/etc/ctdb/events.d/*.options
  • NAT 网关节点列表:/etc/ctdb/natgw_nodes
  • LVS 节点列表:/etc/ctdb/lvs_nodes
  • 策略路由表:/etc/ctdb/policy_routing
  • NFS 检查脚本:/etc/ctdb/nfs-checks.d/
  • 持久 TDB 备份:/cluster/ctdb-backups/(示例)

http://www.rkmt.cn/news/676.html

相关文章:

  • canal同步mysql到kafka
  • pb9新建“工具”选项卡中文说明
  • EasyWeChat报错Failed to cache access token.
  • 16 - Metatheory of subtyping
  • 国产项目管理工具崛起:Gitee如何以本土优势赋能企业研发效能
  • 项目调度管理系统(源码+文档+讲解+演示)
  • OB-Oracle百亿级数据存储方案
  • ZeroGPU Spaces 加速实践:PyTorch 提前编译全解析
  • 基于yolo12对目标物体进行自动裁剪和模糊打码
  • 2025.9.9数学课
  • 【Git】在更新项目时“将传入更改合并到当前分支“和”在传入更改上变基当前分支“有什么区别
  • 国内开发者如何选择代码管理平台?Gitee、GitHub等主流工具深度解析
  • 【Git】常见的 commit type 及用法
  • 【IEEE出版】第六届机器学习与计算机应用国际学术会议
  • 跨网文件摆渡软件如何选择?企业数字化转型的关键决策指南!
  • Avalonia 学习笔记02. Fonts and Animations(字体和动画) (转载)
  • 【IEEE出版】第九届电气、机械与计算机工程国际学术会议(ICEMCE 2025)
  • 英语_阅读_useful resources_待读
  • 第五届现代教育技术与社会科学国际学术会议(ICMETSS 2025)
  • 梅剑华:人工智能与因果推断——兼论奇点问题(哈哈,Why框架就是)
  • 真行!Claude 全面封禁中国。。
  • 质量QE的关键四个角色(DQE、SQE、PQE和CQE)
  • 剑指offer-28、数组中出现次数超过⼀半的数字
  • Redis是如何高效管理有限内存的?
  • PB9的数据窗口中文说明
  • PyPI包名的命名规则与pip的兼容性机制——为什么pip install sCIKit.-_LEarN也能成功
  • 一种简单粗暴的网页代理模式
  • 直播App源码功能大揭秘:主播PK、连麦互动与邀请奖励的技术与魅力
  • 这款开源调研系统越来越“懂事”了
  • qoj7511 Planar Graph