corosync_overview.8 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. .\"/*
  2. .\" * Copyright (c) 2005 MontaVista Software, Inc.
  3. .\" * Copyright (c) 2006-2009 Red Hat, Inc.
  4. .\" *
  5. .\" * All rights reserved.
  6. .\" *
  7. .\" * Author: Steven Dake (sdake@redhat.com)
  8. .\" *
  9. .\" * This software licensed under BSD license, the text of which follows:
  10. .\" *
  11. .\" * Redistribution and use in source and binary forms, with or without
  12. .\" * modification, are permitted provided that the following conditions are met:
  13. .\" *
  14. .\" * - Redistributions of source code must retain the above copyright notice,
  15. .\" * this list of conditions and the following disclaimer.
  16. .\" * - Redistributions in binary form must reproduce the above copyright notice,
  17. .\" * this list of conditions and the following disclaimer in the documentation
  18. .\" * and/or other materials provided with the distribution.
  19. .\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
  20. .\" * contributors may be used to endorse or promote products derived from this
  21. .\" * software without specific prior written permission.
  22. .\" *
  23. .\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  24. .\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  25. .\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  26. .\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  27. .\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  28. .\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  29. .\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  30. .\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  31. .\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  32. .\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  33. .\" * THE POSSIBILITY OF SUCH DAMAGE.
  34. .\" */
  35. .TH COROSYNC_OVERVIEW 8 2006-05-10 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual"
  36. .SH NAME
  37. corosync_overview \- Corosync overview
  38. .SH OVERVIEW
  39. The corosync project is a project to implement a production quality "Revised BSD"
  40. licensed implementation of the most recent SA Forum's Application Interface
  41. Specification. The Application Interface Specification is a software API and
  42. policies which are used to develop applications that maintain service during
  43. faults. The API consists of Availability Management Framework (AMF) which
  44. provides application failover, Cluster Membership (CLM), Checkpointing (CKPT),
  45. Eventing (EVT), Messaging (MSG), and Distributed Locking (DLOCK).
  46. Currently Messaging is unimplemented.
  47. Faults occur for various reasons:
  48. .PP
  49. * Application Faults
  50. .PP
  51. * Middleware Faults
  52. .PP
  53. * Operating System Faults
  54. .PP
  55. * Hardware Faults
  56. The major focus of high availability in the past has been to mask hardware
  57. faults. Faults in other components of the system have gone unsolved until
  58. AIS. AIS can mask many types of faults in applications, middleware,
  59. operating systems, or even hardware by providing a simple framework
  60. for allowing developers to create redundant applications. These redundant
  61. applications can be distributed over multiple nodes such that if any one
  62. node faults, another node can recover.
  63. Application programmers develop applications to periodically record their
  64. state using the checkpointing service. When an active application fails,
  65. a standby application recovers the state of the application. This
  66. technique, called stateful application failover, provides the fundamental
  67. difference between corosync and other systems that have come before it.
  68. With stateful application failover, the end-application user doesn't
  69. have to reload the application or redial a telephone. The full state
  70. is recorded, so the end-application user sees no interruption in service.
  71. Because programmers can now distribute applications across multiple
  72. processes or nodes, a mechanism must exist for them to communicate.
  73. This mechanism is provided by two services. The event service provides
  74. a publish/subscribe model for events. The messaging service provides
  75. end to end messaging. Finally a mechanism to synchronize access is
  76. provided by the distributed lock service.
  77. The corosync project also provides a group messaging toolkit called EVS.
  78. The EVS service implements a messaging model known as Extended Virtual
  79. Synchrony. This model allows one sender to transmit to many receivers.
  80. Certain guarantees are provided for message and membership delivery
  81. which make virtual synchrony ideal for developing distributed applications.
  82. .SH QUICKSTART
  83. The corosync executive must be configured. In the directory conf in the
  84. source distribution are several files that must be copied to the /etc/corosync
  85. directory. If corosync is packaged by a distro, this may be complete.
  86. The directory contains the file corosync.conf. Please read the corosync.conf(5)
  87. man page for details on the configuration options. The corosync project will
  88. work out of the box with the default configuration options, although the
  89. administrator may desire different options.
  90. The corosync executive uses cryptographic techniques to ensure authenticity
  91. and privacy of the messages. In order for corosync to be secure and operate,
  92. a private key must be generated and shared to all processors.
  93. First generate the key on one of the nodes:
  94. unix# corosync-keygen
  95. .br
  96. Corosync Cluster Engine Authentication key generator.
  97. .br
  98. Gathering 1024 bits for key from /dev/random.
  99. .br
  100. Press keys on your keyboard to generate entropy.
  101. .br
  102. Writing corosync key to /etc/corosync/authkey.
  103. .PP
  104. After this operation, a private key will be in the file /etc/corosync/authkey.
  105. This private key must be copied to every processor in the cluster. If the
  106. private key isn't the same for every node, those nodes with nonmatching private
  107. keys will not be able to join the same configuration.
  108. Copy the key to some security transportable storage or use ssh to transmit the
  109. key from node to node. Then install the key with the command:
  110. unix#: install -D --group=0 --owner=0 --mode=0400 /path_to_authkey/authkey /etc/corosync/authkey
  111. If a message "Invalid digest" appears from the corosync executive, the keys
  112. are not consistent between processors.
  113. Finally run the corosync executive. If corosync is packaged from a distro, it
  114. may be set to start on system start. It may also be turned off by default in
  115. which case the init script for corosync must be enabled.
  116. After running aisexec, a list of all processors IP addresses running the corosync
  117. executive and configured on the same multicast address will appear. If they
  118. don't appear, there may be a problem with multicast in the distro or hardware.
  119. If this happens, participation in the corosync mailing list may help solve the
  120. problem. The email address is users@clusterlabs.org.
  121. .SH USING LIBRARIES
  122. The corosync AIS libraries have header files which must be included in the
  123. developer's application. Once the header file is included, the developer can
  124. reference the AIS interfaces.
  125. The corosync project recommends to distros to place include files in
  126. /usr/include/corosync. The following include lines must be added to
  127. the application to use each of the following services:
  128. #include <corosync/saClm.h> For the Cluster Membership B.01.01 service.
  129. .PP
  130. #include <corosync/saCkpt.h> For the Checkpointing B.01.01 service.
  131. .PP
  132. #include <corosync/saEvt.h> For the Eventing B.01.01 service.
  133. .PP
  134. #include <corosync/ais_amf.h> For the AMF A.01.01 service.
  135. .PP
  136. The corosync project recommends to distros to place library files in
  137. /usr/lib. The following link lines must be added to the LDFLAGS section
  138. of the makefile.
  139. -lsaClm For the Cluster Membership B.01.01 service
  140. .PP
  141. -lsaCkpt For the Checkpointing B.01.01 service
  142. .PP
  143. -lsaEvt For the Eventing B.01.01 service
  144. .PP
  145. -lsaAmf For the AMF A.01.01 service
  146. .PP
  147. -lais Specify this to get access to all AIS libraries without specifying
  148. each library individually.
  149. .SH IPv6
  150. The corosync project supports both IPv4 and IPv6 network addresses. The entire
  151. cluster must use either IPv4 or IPv6 for the cluster communication mechanism.
  152. In order to use IPv6, IPv6 addresses must be specified in the bindnetaddr and
  153. mcastaddr fields in the configuration file. The nodeid field must also be
  154. set.
  155. An example of this is:
  156. nodeid: 2
  157. bindnetaddr: fec0::1:a800:4ff:fe00:20
  158. mcastaddr: ff05::1
  159. To configure a host for IPv6, use the ifconfig program to add interfaces:
  160. box20: ifconfig eth0 add fec0::1:a800:4ff:fe00:20/64
  161. box30: ifconfig eth0 add fec0::1:a800:4ff:fe00:30/64
  162. If the /64 is not specified, a route for the IPv6 network will not be configured
  163. which will cause significant problems. Make sure a route is available for
  164. IPv6 traffic.
  165. .SH ARCHITECTURE
  166. The AIS libraries are a thin IPC interface to the corosync executive. The
  167. corosync executive provides services for the SA Forum AIS libraries as well
  168. as the EVS and CPG libraries.
  169. The corosync executive uses the Totem extended virtual synchrony protocol. The
  170. advantage to the end user is excellent performance characteristics and a proven
  171. protocol with excellent reliability. This protocol connects the processors
  172. in a configuration together so they may communicate.
  173. .SH ENVIRONMENT VARIABLES
  174. The corosync executive process uses four environment variables during startup.
  175. If these environment variables are not set, defaults will be used.
  176. .TP
  177. COROSYNC_MAIN_CONFIG_FILE
  178. This specifies the fully qualified path to the corosync configuration file.
  179. The default is /etc/corosync/corosync.conf.
  180. .TP
  181. COROSYNC_AMF_CONFIG_FILE
  182. This specifies the fully qualified path to the corosync Availability Management
  183. Framework configuration file.
  184. The default is /etc/corosync/amf.conf.
  185. .TP
  186. COROSYNC_DEFAULT_CONFIG_IFACE
  187. This specifies the LCRSO that is used to parse the configuration file. This
  188. allows other configuration file parsers to be implemented within the system.
  189. The default is to use the default corosync configuration file parser which
  190. parses the format specified in corosync.conf (5).
  191. .TP
  192. COROSYNC_TOTEM_AUTHKEY_FILE
  193. This specifies the fully qualified path to the shared key used to
  194. authenticate and encrypt data used within the Totem protocol.
  195. The default is /etc/corosync/authkey.
  196. .SH SECURITY
  197. The corosync executive optionally encrypts all messages sent over the network
  198. using the SOBER-128 stream cipher. The corosync executive uses HMAC and SHA1 to
  199. authenticate all messages. The corosync executive library uses SOBER-128
  200. as a pseudo random number generator. The EVS library feeds the PRNG using
  201. the /dev/random Linux device.
  202. If membership messages can be captured by intruders, it is possible to execute
  203. a denial of service attack on the cluster. In this scenario, the cluster is
  204. likely already compromised and a DOS attack is the least of the administration's
  205. worries.
  206. The security in corosync does not offer perfect forward secrecy because the keys
  207. are reused. It may be possible for an intruder by capturing packets in an
  208. automated fashion to determine the shared key. No such automated attack has
  209. been published as of yet. In this scenario, the cluster is likely already
  210. compromised to allow the long-term capture of transmitted data.
  211. For security reasons, the corosync executive binary should NEVER
  212. be setuid or setgid in the filesystem.
  213. .PP
  214. .SH SAFTEST COMPLIANCE
  215. The corosync libraries are now nearly compliant with every aspect of the SA
  216. Forum's AIS specification. The AMF service, however, is not compliant with the
  217. B.01.01 specification. The remaining services pass most of the tests of the
  218. saftest suite against the B.01.01 specification.
  219. .SH BUGS
  220. The messaging service is partially implemented and not suitable for deployment.
  221. The distributed locking service is buggy and not suitable for deployment.
  222. The Availability Management Framework is under development and not suitable for
  223. deployment..
  224. .SH "SEE ALSO"
  225. .BR corosync.conf (5),
  226. .BR corosync-keygen (8),
  227. .BR evs_overview (8)
  228. .PP