corosync-qdevice.8 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. .\"/*
  2. .\" * Copyright (C) 2016 Red Hat, Inc.
  3. .\" *
  4. .\" * All rights reserved.
  5. .\" *
  6. .\" * Author: Jan Friesse <jfriesse@redhat.com>
  7. .\" *
  8. .\" * This software licensed under BSD license, the text of which follows:
  9. .\" *
  10. .\" * Redistribution and use in source and binary forms, with or without
  11. .\" * modification, are permitted provided that the following conditions are met:
  12. .\" *
  13. .\" * - Redistributions of source code must retain the above copyright notice,
  14. .\" * this list of conditions and the following disclaimer.
  15. .\" * - Redistributions in binary form must reproduce the above copyright notice,
  16. .\" * this list of conditions and the following disclaimer in the documentation
  17. .\" * and/or other materials provided with the distribution.
  18. .\" * - Neither the name of Red Hat, Inc. nor the names of its
  19. .\" * contributors may be used to endorse or promote products derived from this
  20. .\" * software without specific prior written permission.
  21. .\" *
  22. .\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  23. .\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24. .\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25. .\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  26. .\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  27. .\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  28. .\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  29. .\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  30. .\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  31. .\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  32. .\" * THE POSSIBILITY OF SUCH DAMAGE.
  33. .\" */
  34. .TH COROSYNC-QDEVICE 8 2016-06-29
  35. .SH NAME
  36. corosync-qdevice \- QDevice daemon
  37. .SH SYNOPSIS
  38. .B "corosync-qdevice [-dfh] [-S option=value[,option2=value2,...]]"
  39. .SH DESCRIPTION
  40. .B corosync-qdevice
  41. is a daemon running on each node of a cluster. It provides a configured
  42. number of votes to the
  43. quorum subsystem based on a third-party arbitrator's decision. Its primary use
  44. is to allow a cluster to sustain more node failures than standard quorum rules allow.
  45. It is recommended for clusters with an even number of nodes and highly recommended
  46. for 2 node clusters.
  47. .SH OPTIONS
  48. .TP
  49. .B -d
  50. Forcefully turn on debug information without the need to change corosync.conf.
  51. .TP
  52. .B -f
  53. Do not daemonize, run in the foreground.
  54. .TP
  55. .B -h
  56. Show short help text
  57. .TP
  58. .B -S
  59. Set advanced settings described in its own section below. This option
  60. shouldn't be generally used because most of the options are
  61. not safe to change.
  62. .SH CONFIGURATION
  63. .B corosync-qdevice
  64. reads its configuration from corosync.conf file.
  65. The main configuration is within
  66. .B quorum.device
  67. sub-key. Each model also has its own configuration within a
  68. similarly named sub-key.
  69. .TP
  70. .B model
  71. Specifies the model to be used. This parameter is required.
  72. .B corosync-qdevice
  73. is modular and is able to support multiple different models. The model basically
  74. defines what type of arbitrator is used. Currently only
  75. .I net
  76. is supported.
  77. .TP
  78. .B timeout
  79. Specifies how often should
  80. .B corosync-qdevice
  81. should call the votequorum_poll function. It is also used by the net model to adjust
  82. its hearbeat timeout. It is recommended that you don't change this value.
  83. Default is 10000.
  84. .TP
  85. .B sync_timeout
  86. Specifies how often
  87. .B corosync-qdevice
  88. should call the votequorum_poll function during a sync phase. It is recommended that you don't change this value.
  89. Default is 30000.
  90. .TP
  91. .B votes
  92. The number of votes provided to the cluster by qdevice. Default is (number_of_nodes - 1) or generally
  93. sum(votes_per_node) - 1.
  94. .PP
  95. .B quorum.device.net
  96. holds the configuration for model 'net'.
  97. .TP
  98. .B tls
  99. Can be one of
  100. .I on, off or required
  101. and specifies if tls should be used.
  102. .I on
  103. means a connection with TLS is attempted first, but if the server doesn't advertise TLS support
  104. then non-TLS will be used.
  105. .I off
  106. is used then TLS is not required and it's then not even tried. This mode is the
  107. only one which doesn't need a properly initialized NSS database.
  108. .I required
  109. means TLS is required and if the server doesn't support TLS, qdevice will
  110. exit with error message. Default is on.
  111. .TP
  112. .B host
  113. Specifies the IP address or host name of the qnetd server to be used. This parameter
  114. is required.
  115. .TP
  116. .B port
  117. Specifies TCP port of qnetd server. Default is 5403.
  118. .TP
  119. .B algorithm
  120. Decision algorithm. Can be one of the
  121. .I ffsplit
  122. or
  123. .I lms.
  124. (actually there are also
  125. .I test
  126. and
  127. .I 2nodelms
  128. , both of which are mainly for developers and shouldn't be used for production clusters). For a
  129. description of what each algorithm means and how the algorithms differ see their individual sections.
  130. Default value is ffsplit.
  131. .TP
  132. .B tie-breaker
  133. can be one of
  134. .I lowest,
  135. .I highest
  136. or valid_node_id (number) values. It's used as a fallback if qdevice has to decide between two or more
  137. equal partitions.
  138. .I lowest
  139. means the partition with the lowest node id is chosen.
  140. .I highest
  141. means the partition with highest node id is chosen. And valid_node_id means that the partition
  142. containing the node with the given node id is chosen.
  143. .TP
  144. .B connect_timeout
  145. Timeout when
  146. .B corosync-qdevice
  147. is trying to connect to
  148. .B corosync-qnetd
  149. host. Default is 0.8 * quorum.sync_timeout.
  150. .TP
  151. .B force_ip_version
  152. can be one of
  153. .I 0|4|6
  154. and forces the software to use the given IP version.
  155. .I 0
  156. (default value) means IPv6 is prefered and IPv4 should be used as a fallback.
  157. .PP
  158. Logging configuration is within the
  159. .B logging
  160. directive.
  161. .B corosync-qdevice
  162. parses and supports most of the options with exception of
  163. .B to_logfile,
  164. .B logfile
  165. and
  166. .B logfile_priority.
  167. The
  168. .B logger_subsys
  169. sub-directive can be also used if
  170. .B subsys
  171. is set to QDEVICE.
  172. .PP
  173. For
  174. .B corosync-qdevice
  175. to work correctly, the
  176. .B nodelist
  177. directive has to be used and properly configured. Also the net model requires that
  178. .B totem.cluster_name
  179. option is set.
  180. .SH MODEL NET TLS CONFIGURATION
  181. For model net to work using TLS, it's necessary to create the NSS database, import Qnetd
  182. CA certificate, and get/distribute a valid client certificate.
  183. If pcs is used (recommended) the following steps are not needed because pcs does them automatically.
  184. .B corosync-qdevice-net-certutil
  185. is the tool to perform required actions semi-automatically. Please consult the help output of
  186. it and its man page. For a first time configuration it may make sense to start with the
  187. .B -Q
  188. option.
  189. If TLS is not required just edit corosync.conf file and set
  190. .B quorum.device.net.tls
  191. to
  192. .I off.
  193. .SH MODEL NET ALGORITHMS
  194. Algorithms are used to change behavior of how
  195. .B corosync-qnetd
  196. provides votes to a given node/partition. Currently there are two algorithms supported.
  197. .TP
  198. .B ffsplit
  199. This one makes sense only for clusters with even number of nodes. It provides exactly one
  200. vote to the partition with the highest number of active nodes. If there are two exactly similar partitions,
  201. it provides its vote to the partition that has the most clients connected to the qnetd
  202. server. If this number is also equal, then the tie-breaker is used. It is able to transition
  203. its vote if the currently active partition becomes partitioned and a non-active partition
  204. still has at least 50% of the active nodes. Because of this, a vote is not provided
  205. if the qnetd connection is not active.
  206. To use this algorithm it's required to set the number of votes per node to 1 (default)
  207. and the qdevice number of votes has to be also 1. This is achieved by setting
  208. .B quorum.device.votes
  209. key in corosync.conf file to 1.
  210. .TP
  211. .B lms
  212. Last-man-standing. If the node is the only one left in the cluster that can see the
  213. qnetd server then we return a vote.
  214. If more than one node can see the qnetd server but some nodes can't
  215. see each other then the cluster is divided up into 'partitions' based on
  216. their ring_id and this algorithm returns a vote to the largest active partition or,
  217. if there is more than 1 equal partiton, the partition that contains the tie_breaker
  218. node (lowest, highest, etc). For LMS to work, the number
  219. of qdevice votes has to be set to default (so just delete
  220. .B quorum.device.votes
  221. key from corosync.conf).
  222. .SH ADVANCED SETTINGS
  223. Set by using
  224. .B -S
  225. option. The default value is shown in parentheses) Options
  226. beginning with
  227. .B net_
  228. prefix are specific to model net.
  229. .TP
  230. .B lock_file
  231. Lock file location. (/var/run/corosync-qdevice/corosync-qdevice.pid)
  232. .TP
  233. .B local_socket_file
  234. Internal IPC socket file location. (/var/run/corosync-qdevice/corosync-qdevice.sock)
  235. .TP
  236. .B local_socket_backlog
  237. Parameter passed to listen syscall. (10)
  238. .TP
  239. .B max_cs_try_again
  240. How many times to retry the call to a corosync function which has returned CS_ERR_TRY_AGAIN. (10)
  241. .TP
  242. .B votequorum_device_name
  243. Name used for qdevice registration. (Qdevice)
  244. .TP
  245. .B ipc_max_clients
  246. Maximum allowed simultaneous IPC clients. (10)
  247. .TP
  248. .B ipc_max_receive_size
  249. Maximum size of a message received by IPC client. (4096)
  250. .TP
  251. .B ipc_max_send_size
  252. Maximum size of a message allowed to be sent to an IPC client. (65536)
  253. .TP
  254. .B master_wins
  255. Force enable/disable master wins. (default is model)
  256. .TP
  257. .B net_nss_db_dir
  258. NSS database directory. (/etc/corosync/qdevice/net/nssdb)
  259. .TP
  260. .B net_initial_msg_receive_size
  261. Initial (used during connection parameters negotiation)
  262. maximum size of the receive buffer for message (maximum
  263. allowed message size received from qnetd). (32768)
  264. .TP
  265. .B net_initial_msg_send_size
  266. Initial (used during connection parameter negotiation)
  267. maximum size of one send buffer (message) to be sent to server. (32768)
  268. .TP
  269. .B net_min_msg_send_size
  270. Minimum required size of one send buffer (message) to be sent to server. (32768)
  271. .TP
  272. .B net_max_msg_receive_size
  273. Maximum allowed size of receive buffer for a message sent by server. (16777216)
  274. .TP
  275. .B net_max_send_buffers
  276. Maximum number of send buffers. (10)
  277. .TP
  278. .B net_nss_qnetd_cn
  279. Canonical name of qnetd server certificate. (Qnetd Server)
  280. .TP
  281. .B net_nss_client_cert_nickname
  282. NSS nickname of qdevice client certificate. (Cluster Cert)
  283. .TP
  284. .B net_heartbeat_interval_min
  285. Minimum heartbeat timeout accepted by client in ms. (1000)
  286. .TP
  287. .B net_heartbeat_interval_max
  288. Maximum heartbeat timeout accepted by client in ms. (120000)
  289. .TP
  290. .B net_min_connect_timeout
  291. Minimum connection timeout accepted by client in ms. (1000)
  292. .TP
  293. .B net_max_connect_timeout
  294. Maximum connection timeout accepted by client in ms. (120000)
  295. .TP
  296. .B net_test_algorithm_enabled
  297. Enable test algorithm. (if built with --enable-debug on, otherwise off)
  298. .SH SEE ALSO
  299. .BR corosync-qdevice-tool (8)
  300. .BR corosync-qdevice-certutil (8)
  301. .BR corosync-qnetd (8)
  302. .BR corosync.conf (5)
  303. .SH AUTHOR
  304. Jan Friesse
  305. .PP