CTDB概述
CTDB(Cluster Trivial Database)是一种轻量级的集群数据库实现,是集群Samba的集群数据库组件,主要用于处理Samba的跨节点消息以及在所有集群节点上实现分布式的TDB数据库。
CTDB是一个集群TDB数据库,可以被Samba或者其他的应用使用来存储数据。如果一个应用是使用TDB来暂时存放数据,那么这个应用可以很轻松的使用CTDB扩展为集群模式。CTDB提供与TDB相同的函数接口,并且是构建在多台物理机器上的集群。
CTDB的主要功能:
1) 提供TDB数据库的集群版本,并在节点故障时自动重建/恢复数据库;
2) 监视集群中的节点和每个节点上运行的服务;
3) 管理用于向客户端提供服务的公共IP地址池。或者,CTDB可与LVS一起使用;
现今,CTDB不仅支持管理Samba,而且也支持管理NFS、HTTPD、VSFTPD、ISCSI、WINBIND等应用。
特性:
- CTDB提供一个横跨多个节点的并且数据一致、锁一致的TDB数据库;
- CTDB非常快速;
- 对于节点故障,CTDB将自动恢复和修复其所管理的所有TDB数据库;
- CTDB是Samba3/4的一个核心组件;
- CTDB提供高可用特性,例如节点监控、节点切换、IP切换;
- CTDB为其多个节点上的应用提供可靠的传输通道;
- CTDB提供可热拔插的后端传输通道,目前实现了TCP和IB;
- CTDB可以提供为应用指定特定的管理脚本,使得应用能够实现高可用。
CTDB 实现共享层高可用
通常的设计是提供全局命名空间的节点不直接对外提供共享,或者更确切地说不使用实际 IP 对外提供共享。通常几个节点对外提供一组虚拟的 IP ,而虚拟的 IP 与这些实际的节点 IP 有着相应的映射关系。与用户更紧密的虚拟 IP ,用户连接共享时是通过连接虚拟 IP ,他们并不关心实际节点是哪一个。
当某个实际节点宕机之后,对应的虚拟 IP 会转移到其他的实际节点上去,这一过程对于用户来说是透明的,不会影响共享的使用。
而 CTDB 正是承担了这一项工作。
对于个人来说。。没有那么深的理解,学习CTDB的第一个小目标就是先运行起来,然后测试对外提供一个虚拟IP,通过虚拟IP来访问共享。
首先是一个错误。通过yum安装的ctdb无法启动。。。有谁知道怎么解决指教一下吧。
查看可安装版本
yum list samba
yum list ctdb
只有4.9版本,说明一下 我的CentOS7镜像应该是目前CentOS最后一版的镜像 CentOS71908。。。
安装
yum -y install samba
yum -y install ctdb
安装完成进入 /etc/ctdb 目录创建一个 nodes 文件 内容就写各个ctdb节点的IP,最后一个IP后面要空一行。否则最后一个IP失效。
192.168.199.81
192.168.199.82
启动ctdb服务 这时候既未指定虚拟IP 也没有指定共享锁,只是测试一下服务是否可以启动。。。
systemctl start ctdb
查看日志文件 默认位置 /var/log/log.ctdb
这也太笼统了 Faild to run init event 无法执行初始化事件。。。
然后学习他人博客 在所有节点设置配置文件 /etc/ctdb/ctdb.conf 的 在/etc/ctdb目录下 创建public_addresses文件,然后重新启动,还是报错。实在是想不明白为什么。。。
另外,通过YUM安装的ctdb版本是4.9 ,ctdb配置文件的设置风格更像Samba。而不是以前的风格了。所以参考前辈博客时参数设置需要配合官方文档。但是该失败 CTDB服务还是运行不起来。。。
https://wiki.samba.org/index.php/Basic_CTDB_configuration
通过源码安装CTDB
CTDB在不知道哪个版本起完全支持Samba,至多4.2之后,Samba的源码包中会附带安装ctdb。安装过程就和源码安装Samba一致,只不过在构建时./configure加上参数 --with-cluster-support --with-shared-modules=idmap_rid,idmap_tdb2,idmap_ad
This enables clustering support in Samba and includes CTDB in the build(官方原话。百度翻译就是这允许Samba中的集群支持,并在构建中包含cdb。)
安装Samba步骤