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.
_______________________________________________
Users mailing list: Users@clusterlabs.org
https://lists.clusterlabs.org/mailman/listinfo/users

Project Home: http://www.clusterlabs.org
Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
Bugs: http://bugs.clusterlabs.org

Reply via email to