| 1 | <!--#set var="TITLE" value="CTDB" --> | 
|---|
| 2 | <!--#include virtual="header.html" --> | 
|---|
| 3 |  | 
|---|
| 4 | <H2 align="center">Welcome to the CTDB web pages</H2> | 
|---|
| 5 |  | 
|---|
| 6 | CTDB is a cluster implementation of the TDB database used by Samba and | 
|---|
| 7 | other projects to store temporary data. If an application is already | 
|---|
| 8 | using TDB for temporary data it is very easy to convert that | 
|---|
| 9 | application to be cluster aware and use CTDB instead. | 
|---|
| 10 |  | 
|---|
| 11 | <p>CTDB provides the same types of functions as TDB but in a clustered | 
|---|
| 12 | fashion, providing a TDB-style database that spans multiple physical | 
|---|
| 13 | hosts in a cluster. | 
|---|
| 14 |  | 
|---|
| 15 | <p>Features include: | 
|---|
| 16 | <ul> | 
|---|
| 17 | <li>CTDB provides a TDB that has consistent data and consistent locking across | 
|---|
| 18 | all nodes in a cluster. | 
|---|
| 19 | <li>CTDB is very fast. | 
|---|
| 20 | <li>In case of node failures, CTDB will automatically recover and | 
|---|
| 21 | repair all TDB databases that it manages. | 
|---|
| 22 | <li>CTDB is the core component that provides <strong>pCIFS</strong> | 
|---|
| 23 | ("parallel CIFS") with Samba3/4. | 
|---|
| 24 | <li>CTDB provides HA features such as node monitoring, node failover, | 
|---|
| 25 | and IP takeover. | 
|---|
| 26 | <li>CTDB provides a reliable messaging transport to allow applications | 
|---|
| 27 | linked with CTDB to communicate to other instances of the application | 
|---|
| 28 | running on different nodes in the cluster. | 
|---|
| 29 | <li>CTDB has pluggable transport backends. Currently implemented backends are TCP | 
|---|
| 30 | and Infiniband. | 
|---|
| 31 | <li>CTDB supports a system of application specific management scripts, | 
|---|
| 32 | allowing applications that depend on network or filesystem resources | 
|---|
| 33 | to be managed in a highly available manner on a cluster. | 
|---|
| 34 | </ul> | 
|---|
| 35 |  | 
|---|
| 36 | <h2>Requirements</h2> | 
|---|
| 37 |  | 
|---|
| 38 | CTDB relies on a clustered filesystem being available and shared on | 
|---|
| 39 | all nodes that participate in the CTDB cluster. This filesystem must | 
|---|
| 40 | be mounted and available on all nodes in the CTDB cluster. | 
|---|
| 41 |  | 
|---|
| 42 | <p>On top of this cluster filesystem, CTDB then provides clustered HA | 
|---|
| 43 | features so that data from the clustered filesystem can be exported | 
|---|
| 44 | through multiple nodes in the CTDB cluster using various | 
|---|
| 45 | services. Currently included with CTDB are the necessary hooks for Samba, NFS | 
|---|
| 46 | and ftp exports. Support for new service types can easily be added. | 
|---|
| 47 |  | 
|---|
| 48 | <h2>TDB</h2> | 
|---|
| 49 |  | 
|---|
| 50 | TDB is a very fast simple database that was originally developed for | 
|---|
| 51 | use in Samba. Today several other projects use TDB to store their data. | 
|---|
| 52 |  | 
|---|
| 53 | <p>See the <a | 
|---|
| 54 | href="http://samba.org/ftp/unpacked/tdb/docs/README">TDB | 
|---|
| 55 | README file</a> for a description of how TDB is used. | 
|---|
| 56 |  | 
|---|
| 57 | <h2>Documentation</h2> | 
|---|
| 58 |  | 
|---|
| 59 | <a href="./documentation.html">CTDB documentation</a><br><br> | 
|---|
| 60 |  | 
|---|
| 61 | Additional documentation on how to install and configure CTDB is available in the | 
|---|
| 62 | <a href="http://wiki.samba.org/index.php/CTDB_Setup">CTDB | 
|---|
| 63 | Wiki</a>. Please read all of the documentation carefully. | 
|---|
| 64 |  | 
|---|
| 65 | <h2>High Availability Features</h2> | 
|---|
| 66 |  | 
|---|
| 67 | The CTDB nodes in a cluster designates one node as a recovery master | 
|---|
| 68 | through an election process. If the recovery master node fails a | 
|---|
| 69 | new election is initiated so that the cluster will always guarantee | 
|---|
| 70 | there will be a recovery master. The recovery master will | 
|---|
| 71 | continuously monitor the cluster to verify that all nodes contain a | 
|---|
| 72 | consistent configuration and view of the cluster and will initiate a | 
|---|
| 73 | recovery process when required. | 
|---|
| 74 |  | 
|---|
| 75 | <p>During the recovery phase, the recovery master will automatically | 
|---|
| 76 | rebuild/recover all clustered TDB database to ensure that the | 
|---|
| 77 | databases are consistent. Recovery typically takes between 1 and 3 | 
|---|
| 78 | seconds. During the recovery period the databases are 'frozen', and | 
|---|
| 79 | all database IO operations by ctdb clients are suspended. | 
|---|
| 80 |  | 
|---|
| 81 | <h3>Is CTDB a HA solution?</h3> | 
|---|
| 82 |  | 
|---|
| 83 | Yes and no.<p> | 
|---|
| 84 |  | 
|---|
| 85 | CTDB alone is not a HA solution, but when you combine CTDB with a clustered | 
|---|
| 86 | filesystem it becomes one.<p> | 
|---|
| 87 |  | 
|---|
| 88 | CTDB is primarily developed around the concept of having a shared | 
|---|
| 89 | cluster filesystem across all the nodes in the cluster to provide the | 
|---|
| 90 | features required for building a NAS cluster.<p> | 
|---|
| 91 |  | 
|---|
| 92 | Thus CTDB relies on an external component (the cluster filesystem) to | 
|---|
| 93 | provide the mechanisms for avoiding split-brain and other core | 
|---|
| 94 | clustering tasks.<p> | 
|---|
| 95 |  | 
|---|
| 96 | However, if you do have a clustered filesystem for all the nodes, in | 
|---|
| 97 | that scenario CTDB will provide a very easy to install and manage | 
|---|
| 98 | solution for your clustering HA needs. | 
|---|
| 99 |  | 
|---|
| 100 | <h3>IP Takeover</h3> | 
|---|
| 101 |  | 
|---|
| 102 | When a node in a cluster fails, CTDB will arrange that a different | 
|---|
| 103 | node takes over the IP address of the failed node to ensure that the | 
|---|
| 104 | IP addresses for the services provided are always available. | 
|---|
| 105 |  | 
|---|
| 106 | <p>To speed up the process of IP takeover and when clients attached to | 
|---|
| 107 | a failed node recovers as fast as possible, CTDB will automatically | 
|---|
| 108 | generate gratuitous ARP packets to inform all nodes of the changed MAC | 
|---|
| 109 | address for that IP.  CTDB will also send "tickle ACK" packets to all | 
|---|
| 110 | attached clients to trigger the clients to immediately recognize that | 
|---|
| 111 | the TCP connection needs to be re-established and to shortcut any TCP | 
|---|
| 112 | retransmission timeouts that may be active in the clients. | 
|---|
| 113 |  | 
|---|
| 114 | <h2>Discussion and bug reports</h2> | 
|---|
| 115 |  | 
|---|
| 116 | For discussions please use | 
|---|
| 117 | the <a href="https://lists.samba.org/mailman/listinfo/samba-technical">samba-technical</a> | 
|---|
| 118 | mailing list. To submit a bug report, please use | 
|---|
| 119 | the <a href="http://bugzilla.samba.org/">Samba bugzilla</a> bug | 
|---|
| 120 | tracking system. | 
|---|
| 121 |  | 
|---|
| 122 | <p>We would be very interested in hearing from and work with other | 
|---|
| 123 | projects that want to make their services cluster aware using CTDB. | 
|---|
| 124 |  | 
|---|
| 125 | <p>CTDB discussions also happen on the #ctdb IRC channel on freenode.net | 
|---|
| 126 |  | 
|---|
| 127 |  | 
|---|
| 128 | <hr> | 
|---|
| 129 | <h2>Developers</h2> | 
|---|
| 130 | <ul> | 
|---|
| 131 | <li><a href="http://samba.org/~tridge/">Andrew Tridgell</a></li> | 
|---|
| 132 | <li><a href="http://samba.org/~sahlberg/">Ronnie Sahlberg</a></li> | 
|---|
| 133 | <li><a href="http://samba.org/~obnox/">Michael Adam</a></li> | 
|---|
| 134 | <li>Peter Somogyi</li> | 
|---|
| 135 | <li><a href="http://sernet.de/Samba/">Volker Lendecke</a></li> | 
|---|
| 136 | <li>Stefan Metzmacher</li> | 
|---|
| 137 | <li><a href="http://meltin.net/people/martin/">Martin Schwenke</a></li> | 
|---|
| 138 | <li>Amitay Isaacs</li> | 
|---|
| 139 | </ul> | 
|---|
| 140 |  | 
|---|
| 141 | <!--#include virtual="footer.html" --> | 
|---|