ctdb原理介绍

1. CTDB概述

CTDB是一个集群TDB数据库,可以被Samba或者其他的应用使用来存储数据。如果一个应用是使用TDB来暂时存放数据,那么这个应用可以很轻松的使用CTDB扩展为集群模式。CTDB提供与TDB相同的函数接口,并且是构建在多台物理机器上的集群。

特性:
- CTDB提供一个横跨多个节点的并且数据一致、锁一致的TDB数据库;
- CTDB非常快速;
- 对于节点故障,CTDB将自动恢复和修复其所管理的所有TDB数据库;
- CTDB是Samba3/4的一个核心组件;
- CTDB提供高可用特性,例如节点监控、节点切换、IP切换;
- CTDB为其多个节点上的应用提供可靠的传输通道;
- CTDB提供可热拔插的后端传输通道,目前实现了TCP和IB;
- CTDB可以提供为应用指定特定的管理脚本,使得应用能够实现高可用。

2. CTDB配置

CTDB的配置相对简单,对于搭建一个三节点的CTDB配置步骤说明如下。

2.1 节点信息

节点名称 节点IP 说明
node1 10.10.10.90 CTDB节点
node2 10.10.10.91 CTDB节点
node3 10.10.10.92 CTDB节点
node4 10.10.10.99 共享存储

说明:此处为快速简单的搭建ctdb集群,采用单节点NFS共享,不考虑NFS共享的可靠性。
实际应用时,共享存储应由高可靠的集群担当。

2.2搭建CTDB集群

2.2.1 安装软件

在三个CTDB节点分别安装ctdb,nfsd,samba,可以通过命令 yum install ctdb依次进行安装;

2.2.2 创建共享存储

在node4创建一个共享目录/share,并设置权限777,在/etc/exports文件中添加如下:

/share *(sync,rw)

然后在节点4上执行如下命令:

# exoprtfs -rv

CTDB节点之间需要通过一个共享的存储来实现其基于锁机制的选举过程。

2.2.3 挂载共享存储

在三个CTDB节点上分别执行如下命令:

# mount -t nfs 10.10.10.99:/share /mnt

node1, node2,node3上都挂载了node4共享出来的目录,这样三个节点就可以访问到一个相同的锁文件了。

2.2.4 修改CTDB服务配置

在三个CTDB节点上修改如下文件:

~# vi /etc/sysconfig/ctdb

CTDB_RECOVERY_LOCK=/mnt/ctdb_lock

CTDB_MANAGES_SAMBA=yes
CTDB_MANAGES_WINBIND=yes
CTDB_MANAGES_NFS=yes

这个步骤中主要配置CTDB管理哪些应用。还有就是指定共享锁文件的目录。

2.2.5 修改CTDB节点配置

在三个CTDB节点上创建或者修改如下文件:

~# vi /etc/ctdb/nodes
10.10.10.91
10.10.10.92
10.10.10.90
2.2.6 修改CTDB IP配置

在三个CTDB节点上创建或者修改如下文件:

~# vi /etc/ctdb/public_addresses
10.0.0.1/24    eth0

其中eth0是节点上存在的并且在线的网卡。10.0.0.1就是配置给这个三个节点CTDB集群对外提供业务的IP。

2.2.7 重启CTDB服务

在三个CTDB节点上执行如下命令:

~# systemctl restart ctdb

2.2.8 查看CTDB服务状态

在节点1上执行:

# ctdb status
Number of nodes:3
pnn:0 10.10.10.91      OK
pnn:1 10.10.10.92      OK
pnn:2 10.10.10.90      OK (THIS NODE)
Generation:1699238992
Size:3
hash:0 lmaster:0
hash:1 lmaster:1
hash:2 lmaster:2
Recovery mode:NORMAL (0)
Recovery master:1
[root@xenserver-yzulkyuc ~]# 

集群搭建完成。
说明:如果节点数量较少,可以将某一个CTDB节点作为共享存储,同时节点数量也可以为1。但是将CTDB节点作为共享存储的话,需要将/etc/sysconfig/ctdb 文件中的CTDB_MANAGES_NFS设置位NO。

3. CTDB源码分析

3.1 关键数据结构

3.1.1 ctdb

CTDB有两个进程构成,ctdbd和recoveryd。在这个两个进程进行各种事物处理时,一般都带有一个参数:ctdb。该数据结构是包含了基本上所有逻辑所需或者相关的数据。在CTDBD启动阶段就是对ctdb数据结构的填充阶段。

struct 
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值