1、简介
CTDB(Cluster Trivial Database,集群琐碎数据库)是一种轻量级的集群数据库实现,是集群Samba的集群数据库组件,主要用于处理Samba的跨节点消息以及在所有集群节点上实现分布式的TDB数据库。

CTDB的主要功能:

1) 提供TDB数据库的集群版本,并在节点故障时自动重建/恢复数据库;
2) 监视集群中的节点和每个节点上运行的服务;
3) 管理用于向客户端提供服务的公共IP地址池。或者,CTDB可与LVS一起使用;

现今,CTDB不仅支持管理Samba,而且也支持管理NFS、HTTPD、VSFTPD、ISCSI、WINBIND等应用。

2、CTDB的运行机制
为了使用CTDB,需要一个分布式文件系统(比如:GFS、CephFS、OCFS2等)为集群中的所有节点共享。CTDB 管理节点成员、执行恢复/故障切换、IP 重新定位以及监控管理服务的状态。

集群中每个节点都运行了一个CTDB的守护进程ctdbd,以Samba为例,应用服务并不是直接向其TDB数据库写入数据,而是与它的本地ctdbd守护进程进行交互,守护进程会通过网络与TDB数据库中的元数据进行交互。但是对于具体的数据写和读操作,一般是在本地存储上维护一个本地的副本。

CTDB拥有两种TDB文件:普通的和持久性的。根据不同的需求,CTDB对这两种TDB文件的处理方式完全不同:

1) 持久性的TDB文件会实时更新,并在每个节点上存储一个最新的副本。为了读写性能的考虑,持久性的TDB文件保存在本地存储上而不是共享存储中。数据在写入持久TDB时,它会锁定整个CTDB数据库,然后执行读/写操作,事务提交操作最终会被分发到所有节点,并在每个节点的本地写入。
2) 普通TDB文件是临时维护的,其原则是:每个节点不必知道数据库中的所有记录,只需知道影响它自己的客户端连接的记录就足够了。所以,即使某个节点宕机,丢失了此节点相关的所有普通TDB记录,也不会影响其他节点。

CTDB的运行机制如下图所示。

CTDB与Samba在集群之间的关系如下图所示:

3、CTDB进程
CTDB主要有两个进程:ctdb_daemon和ctdb_recoverd。

1) ctdb_daemon进程
ctdb_daemon 进程的工作如下:
a) 负责与外部进行通信,提供 tdb 操作及处理来自其它节点的消息,并处理来自本节点的消息(包括设置服务状态,TDB操作,IP takeover,来自节点recoverd的消息等);
b) 定期检查监控的服务状态,通过运行监控脚本,查询各个服务的运行状态;
c) 期检查检查ctdb_recoverd进程是否在运行,如果未运行,则重建该进程;
d) 将其它节点发给 ctdb_recoverd 的消息转给 ctdb_recoverd;
e) 当本节点是修复节点时(recmaster),将修复相关的请求转给ctdb_recoverd进程处理,包括选举修复节点,强制重新分配公共IP,以及将修复消息转发给其它节点等。

ctdb_daemon进程通过epoll机制处理事件,比如:定期查看各节点状态,当状态异常时,执行相应的处理。

2)ctdb_recoverd进程
ctdb_recoverd进程负责定期向ctdb_daemon进程查询系统状态;当需要修复时,发起选举过程,选出修复节点。在需要修复且被选为修复节点时,启动修复过程:通知所有节点进入修复状态、修复TDB、公共IP重新分配对接管的公共IP,主动触发TCP重连。

说明:
CTDB本身不是HA解决方案,但与集群文件系统相结合,它可以提供简单且高效的HA集群解决方案:
集群配置两组IP:Private IP用于heartbeat和集群内部通信。Public IP用于对外提供虚拟访问IP,当内部的节点发生宕机故障时,CTDB将调度其他可用节点接管其原先分配的Public IP,故障节点恢复后,漂移的Public IP会重新被接管,保证服务不中断。
这个过程对客户端是透明的,保证应用不会中断,也就是我们这里所说的高可用HA。

参考:高可用NAS集群技术;https://blog.csdn.net/u013131156/article/details/78790536

【CTDB】什么是CTDB(Cluster Trivial Database)相关推荐

  1. Debian下搭建Samba CTDB集群。

    在使用Samba CTDB搭建群集时,推荐使用如下图所示的结构,在Samba CTDB的节点后面使用GPFS.GFS2.GlusterFS.Lustre之类的集群存储系统.在本文中假设后端的集群存储系 ...

  2. Oracle Database 12c Security - 12. Audit for Accountability

    Oracle Unified Audit Trail (OUA)是12c新增功能. THE SECURITY CYCLE 审计使安全更完整,审计是事后行为,不能预防. 访问控制并不能保证非授权访问,人 ...

  3. 高可用NAS集群技术

    高可用NAS集群技术 目录 高可用NAS集群技术 一.前言 二.集群NAS的介绍 (一)什么是集群NAS (二)集群NAS的主流架构 (三)集群NAS的分类 三.集群存储高可用技术 (一)什么是集群高 ...

  4. 基于开源软件构建高性能集群NAS系统

    大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...

  5. 【转】存储系统的分类

    存储系统的分类 之前收集了一些存储产品,最近又重新整理了一下,对他们进行了简单的分类.每个对存储的分类可能不仅相同,我的分类完全按照自己的喜好来分,如和您的分类不同,仅供参考.只是做了搜集和分类,少量 ...

  6. RH236配置IP故障转移--配置NFS Ganesha

    RH236配置IP故障转移–配置NFS Ganesha 本章节学习配置NFS Ganesha解决高可用问题. RHCA专栏地址:https://blog.csdn.net/qq_41765918/ca ...

  7. 十八、oracle 角色

    一.介绍 角色就是相关权限的命令集合,使用角色的主要目的就是为了简化权限的管理. 假定有用户a,b,c为了让他们都拥有如下权限 1. 连接数据库 2. 在scott.emp表上select,inser ...

  8. Oracle系统表查询

    数据字典dict总是属于Oracle用户sys的. 1.用户: select username from dba_users; 改口令 alter user spgroup identified by ...

  9. Oracle 系统表大全

    数据字典dict总是属于Oracle用户sys的. 1.用户: select username from dba_users; 改口令 alter user spgroup identified by ...

最新文章

  1. Vue教程6【完结】【vue-router】路由,路由传参,编程式路由导航,缓存路由组件,路由守卫,路由模式,vue ui组件库
  2. lwip之数据收发流程_2
  3. 敏捷测试理论以及实践(2)
  4. hadoop 2.7 java_Hadoop2.7环境搭建---Java环境变量
  5. C++单目运算符的重载与双目运算符的重载【案例】
  6. win8.1计算机开启远程桌面连接不上,Win8.1电脑远程桌面无法连接提示“你的凭据不工作”怎么办...
  7. 水很深的深度学习-Task03前馈神经网络
  8. IDEA 创建java项目
  9. indel该右移还是左移
  10. 【干货分享】迄今为止最好用的编程字体-支持中文正确显示:同时彻底解决eclipse中文注释缩进排版混乱问题
  11. 【示波器专题】示波器探头的原理深入——有源探头之电流探头
  12. ORB-SLAM2代码阅读笔记(一):从mono_kitti单目运行开始
  13. L2D1 linux下deb包管理及常用shell命令
  14. jquery,ajax动态从数据库加载数据并自动选中复选框
  15. srsLTE系统安装教程
  16. PX4多传感器优先级判断
  17. float 和int转换是怎么做到的
  18. 说说打印样式CSS的技巧和要点
  19. 大数据开发面试题总结-超详细
  20. css+html创建一个大风车

热门文章

  1. 国开电大 管理心理学 形考任务1-4
  2. 微信小程序引入原生组件——WeUI组件库,详细步骤
  3. 采用头插法和尾插法建立单链表
  4. 多云管理平台解决方案
  5. Object.assign()方法
  6. html怎么控制top值为0,关于vue滚动scrollTop 赋值一直为0问题
  7. 图片的分辨率大于设备分辨率或者小于设备的分辨率的显示问题
  8. 单片机的AVCC、AVSS、DVCC、DVSS引脚有何区别?
  9. 《沈工智校》技术支持
  10. JavaWeb - 小米商城:商品添加到购物车