[ClusterLabs] Corosync 3.0.0 is available at corosync.org!

Jan Friesse jfriesse at redhat.com
Fri Dec 14 09:06:42 EST 2018


I am pleased to announce the first stable release of Corosync 3.0 
(codename Camelback) branch available immediately from our website at
http://build.clusterlabs.org/corosync/releases/.

You can also download RPMs for various distributions from CI 
https://kronosnet.org/builds/.

Corosync 3.0 is result of almost 2.5 years (counting just Corosync, 
there is also endless amount of work made by Kronosnet developers) of 
work (needle and master branch split Aug 30 2016) of almost 30 (29 to be 
precise ;) ) people who created almost 300 (exactly 297) commits (we are 
quite conservative and usually have only one commit per feature). 
Complete git stats: 383 files changed, 12156 insertions(+), 45369 
deletions(-). It's quite impressive how much code we were able to remove.

Corosync 3.0 contains many interesting features mostly related to usage 
of Kronosnet (https://kronosnet.org/) as a default (and preferred) 
network transport.

List of high-level changes:
- Knet
   * Support for 8 links which can be dynamically reconfigured without 
restart of corosync daemon
   * MTU auto-configuration
   * Support for NSS or OpenSSL encryption of packets
   * Compression
   * Higher throughput and lower latency (yes, it's really possible to 
get both of these at once ;) )
   * And many more

- Support for RDMA and Upstart is gone

- Enhanced statistics

- Nodelist is now mandatory

- UDP/UDPU transports are still present, but supports only single ring 
(RRP is gone in favor of Knet) and doesn't support encryption

- Support for systemd startup notifications

- Corosync-qdevice found new home at 
https://github.com/corosync/corosync-qdevice and is no longer part of 
corosync repository/packages. Corosync-qdevice 3.0.0 was released this 
week on Wed.

- With Knet transport it's possible to remove ring0_addr from 
corosync.conf and as long as there is other ring (ring1_addr), 
everything should work as expected

- Corosync 3 is not wire compatible with previous versions. Needle was 
patched so it will display warning message when receive corosync 3 
packet (and vice-versa).

- CTS was removed - it was unmaintained for long time and unused by 
developers, currently without replacement.

- libtotem is no longer shared library and it's directly compiled into
corosync binary - main idea of having libtotem.so was to allow other 
projects usage of libtotem and build custom "corosync" on top of it. 
This idea actually never got expected usage and because it was super 
big, it was just making corosync development much harder. This doesn't 
affect any corosync user. In future totemsrp.c should be made into real 
well testable library without network protocol handling, ... but right 
now, there is no replacement for libtotem.so.

- All environment variables were removed and corosync arguments were 
tied uo:
   - -p, -P, -R and -r options - replaced by system.sched_rr, 
system.priority and system.move_to_root_cgroup options in the config file.
   - env COROSYNC_MAIN_CONFIG_FILE - Replaced by "-c" option. This also 
affects uidgid.d location.
   - env COROSYNC_TOTEM_AUTHKEY_FILE - Replaced by (already existing) 
totem.keyfile config option, which is now documented.
   - env COROSYNC_RUN_DIR - Replaced by system.state_dir and documented.

- Usage of libcgroup removal - deprecated in most of new distributions, 
replaced by "short" code with even functionality.

- NSS dependency removal - not needed anymore because crypto is now 
handled by knet, so no replacement needed. This change affects only 
cpgverify where packet format is changed.

- Corosync config file parser updated so it's now more strict and 
(finally) displays line with error. Affects only broken config files.

- With new enough LibQB, it's possible to send command to corosync and 
it tries reopen its log files. Used by logrotate in favor of old 
copytruncate method. Copytruncate still exists and is compiled/installed 
by default with old LibQB.

- Timestamps are now enabled by default. With new enough LibQB hires 
(including milliseconds) timestamps are used by default.

- ip_version config setting has new default ipv6-4 (resolve IPv6 address 
first, if it fails try IPv4). For more info please consult 
corosync.conf(5) man page. To achieve old behavior (IPv4 only) please 
set totem.ip_version setting to ipv4.

- And finally - many people beloved way to test node split - ifdown - 
now finally works with Knet transport. UDPU transport was also partly 
fixed. Please keep in mind this method of testing is still not supported 
nor recommended.


For presentation about corosync/knet please see 
http://build.clusterlabs.org/corosync/presentations/2017-Kronosnet-The-new-face-of-corosync-communications.pdf.

For more in depth document about how to configure/use corosync 3 with 
knet see http://people.redhat.com/ccaulfie/docs/KnetCorosync.pdf


We did our best to fix all the know issues, and we believe this is the 
best Corosync release ever, but if you find some issues, please let us know.

Thanks/congratulations to all people that contributed to achieve this
great milestone.


More information about the Users mailing list