Resilient FTS3 service at GridKa

Similar documents
Availability measurement of grid services from the perspective of a scientific computing centre

WLCG Transfers Dashboard: a Unified Monitoring Tool for Heterogeneous Data Transfers.

The Software Defined Online Storage System at the GridKa WLCG Tier-1 Center

HA for OpenStack: Connecting the dots

Percona XtraDB Cluster

Evolution of Database Replication Technologies for WLCG

Data transfer over the wide area network with a large round trip time

MySQL HA Solutions Selecting the best approach to protect access to your data

CernVM-FS beyond LHC computing

Use of containerisation as an alternative to full virtualisation in grid environments.

System upgrade and future perspective for the operation of Tokyo Tier2 center. T. Nakamura, T. Mashimo, N. Matsui, H. Sakamoto and I.

Highly Available Database Architectures in AWS. Santa Clara, California April 23th 25th, 2018 Mike Benshoof, Technical Account Manager, Percona

From an open storage solution to a clustered NAS appliance

Grid Computing Activities at KIT

MySQL High Availability

Dispatcher. Phoenix. Dispatcher Phoenix Enterprise White Paper Version 0.2

MySQL Replication Options. Peter Zaitsev, CEO, Percona Moscow MySQL User Meetup Moscow,Russia

CIT 668: System Architecture

Monte Carlo Production on the Grid by the H1 Collaboration

MySQL High Availability. Michael Messina Senior Managing Consultant, Rolta-AdvizeX /

High Availability for Highly Reliable Systems

dcache Introduction Course

Experiences in Clustering CIFS for IBM Scale Out Network Attached Storage (SONAS)

ATLAS operations in the GridKa T1/T2 Cloud

The DMLite Rucio Plugin: ATLAS data in a filesystem

Document Sub Title. Yotpo. Technical Overview 07/18/ Yotpo

Security in the CernVM File System and the Frontier Distributed Database Caching System

The evolving role of Tier2s in ATLAS with the new Computing and Data Distribution model

Using MySQL for Distributed Database Architectures

Performance of popular open source databases for HEP related computing problems

Linux Administration

Data preservation for the HERA experiments at DESY using dcache technology

How to setup Orchestrator to manage thousands of MySQL servers. Simon J Mudd 3 rd October 2017

Veritas Cluster Server from Symantec

ATLAS software configuration and build tool optimisation

Forschungszentrum Karlsruhe in der Helmholtz-Gemeinschaft. Presented by Manfred Alef Contributions of Jos van Wezel, Andreas Heiss

Percona XtraDB Cluster ProxySQL. For your high availability and clustering needs

MySQL Group Replication. Bogdan Kecman MySQL Principal Technical Engineer

High availability with MariaDB TX: The definitive guide

A Tool for Conditions Tag Management in ATLAS

Chapter 11. High Availability

PROOF-Condor integration for ATLAS

Percona XtraDB Cluster MySQL Scaling and High Availability with PXC 5.7 Tibor Korocz

Choosing a MySQL High Availability Solution. Marcos Albe, Percona Inc. Live Webinar June 2017

CMS - HLT Configuration Management System

An SQL-based approach to physics analysis

Reliability Engineering Analysis of ATLAS Data Reprocessing Campaigns

Conference The Data Challenges of the LHC. Reda Tafirout, TRIUMF

Distributed Systems. Fall 2017 Exam 3 Review. Paul Krzyzanowski. Rutgers University. Fall 2017

Postgres-XC PG session #3. Michael PAQUIER Paris, 2012/02/02

Testing an Open Source installation and server provisioning tool for the INFN CNAF Tier1 Storage system

Everything You Need to Know About MySQL Group Replication

An Analysis of Storage Interface Usages at a Large, MultiExperiment Tier 1

Load Balancing Microsoft Sharepoint 2010 / Deployment Guide v Copyright Loadbalancer.org, Inc

High Availability for Enterprise Clouds: Oracle Solaris Cluster and OpenStack

A framework to monitor activities of satellite data processing in real-time

HA solution with PXC-5.7 with ProxySQL. Ramesh Sivaraman Krunal Bauskar

CS /15/16. Paul Krzyzanowski 1. Question 1. Distributed Systems 2016 Exam 2 Review. Question 3. Question 2. Question 5.

IBM Spectrum Protect Version Introduction to Data Protection Solutions IBM

Choosing a MySQL HA Solution Today

Understanding StoRM: from introduction to internals

Geographical failover for the EGEE-WLCG Grid collaboration tools. CHEP 2007 Victoria, Canada, 2-7 September. Enabling Grids for E-sciencE

Building a Scalable Architecture for Web Apps - Part I (Lessons Directi)

Exam : Implementing Microsoft Azure Infrastructure Solutions

Evaluation of the Huawei UDS cloud storage system for CERN specific data

Carrier grade VoIP systems with Kamailio

Microsoft Sharepoint 2010 Deployment Guide

LHCb Distributed Conditions Database

IBM Tivoli Storage Manager Version Introduction to Data Protection Solutions IBM

The Legnaro-Padova distributed Tier-2: challenges and results

DIRAC distributed secure framework

Postgres-XC PostgreSQL Conference Michael PAQUIER Tokyo, 2012/02/24

VMware vsphere 6.5: Install, Configure, Manage (5 Days)

Tests of PROOF-on-Demand with ATLAS Prodsys2 and first experience with HTTP federation

A Guide to Architecting the Active/Active Data Center

jetnexus Virtual Load Balancer

jetnexus Virtual Load Balancer

Streamlining CASTOR to manage the LHC data torrent

Monitoring System for the GRID Monte Carlo Mass Production in the H1 Experiment at DESY

Data Sheet: High Availability Veritas Cluster Server from Symantec Reduce Application Downtime

Benchmarking the ATLAS software through the Kit Validation engine

FromDual Annual Company Meeting

TANDBERG Management Suite - Redundancy Configuration and Overview

Migrating to XtraDB Cluster 2014 Edition

Focus On: Oracle Database 11g Release 2

Design Patterns for Large- Scale Data Management. Robert Hodges OSCON 2013

ARCHITECTING WEB APPLICATIONS FOR THE CLOUD: DESIGN PRINCIPLES AND PRACTICAL GUIDANCE FOR AWS

Enterprise Open Source Databases

STORAGE CONSOLIDATION WITH IP STORAGE. David Dale, NetApp

Microsoft SQL Server" 2008 ADMINISTRATION. for ORACLE9 DBAs

Microsoft SQL Server

Database Management Systems

Detail the learning environment, remote access labs and course timings

Agenda. AWS Database Services Traditional vs AWS Data services model Amazon RDS Redshift DynamoDB ElastiCache

Advanced Architectures for Oracle Database on Amazon EC2

A scalable storage element and its usage in HEP

Distributing storage of LHC data - in the nordic countries

Deploy Microsoft SQL Server 2014 on a Cisco Application Centric Infrastructure Policy Framework

Interoperating AliEn and ARC for a distributed Tier1 in the Nordic countries.

IBM Active Cloud Engine centralized data protection

Transcription:

Journal of Physics: Conference Series PAPER OPEN ACCESS Resilient FTS3 service at GridKa To cite this article: T. Hartmann et al 2015 J. Phys.: Conf. Ser. 664 062019 View the article online for updates and enhancements. Related content - FTS3: Quantitative Monitoring H Riahi, M Salichos, O Keeble et al. - FTS3: New Data Movement Service For WLCG A A Ayllon, M Salichos, M K Simon et al. - Making the most of cloud storage - a toolkit for exploitation by WLCG experiments Alejandro Alvarez Ayllon, Maria Arsuaga Rios, Georgios Bitzes et al. This content was downloaded from IP address 148.251.232.83 on 01/05/2018 at 06:00

Resilient FTS3 service at GridKa T. Hartmann, J. Bubeliene, B. Hoeft, L. Obholz, A. Petzold, K. Wisniewski Karlsruhe Institute of Technology (KIT), Steinbuch Centre for Computing (SCC), Hermann-von-Helmholtz-Platz 1, D-76344 Eggenstein-Leopoldshafen, Germany E-mail: thomas.hartmann@kit.edu Abstract. The FTS (File Transfer Service) service provides a transfer job scheduler to distribute and replicate vast amounts of data over the heterogeneous WLCG infrastructures. Compared to the channel model of the previous versions, the most recent version of FTS simplifies and improves the flexibility of the service while reducing the load to the service components. The improvements allow to handle a higher number of transfers with a single FTS3 setup. Covering now continent-wide transfers compared to the previous version, whose installations handled only transfers within specific clouds, a resilient system becomes even more necessary with the increased number of depending users. Having set up a FTS3 services at the German T1 site GridKa at KIT in Karlsruhe, we present our experiences on the preparations for a high-availability FTS3 service. Trying to avoid single points of failure, we rely on a database cluster as fault tolerant data back-end and the FTS3 service deployed on an own cluster setup to provide a resilient infrastructure for the users. With the database cluster providing a basic resilience for the data back-end, we ensure on the FTS3 service level a consistent and reliable database access through a proxy solution. On each FTS3 node a HAproxy instance is monitoring the integrity of each database node and distributes database queries over the whole cluster for load balancing during normal operations; in case of a broken database node, the proxy excludes it transparently to the local FTS3 service. The FTS3 service itself consists of a main and a backup instance, which takes over the identity of the main instance, i.e., IP, in case of an error using a CTDB (Cluster Trivial Database) infrastructure offering clients a consistent service. 1. Introduction The Grid Computing Centre Karlsruhe (GridKa)[1] at the Steinbuch Centre for Computing (SCC) within the Karlsruhe Institute of Technology (KIT) provides computing resources to a large number of users within the high energy physics community. Within the Worldwide LHC Computing Grid (WLCG) it serves as the German tier-1 center to all major LHC experiments with further HEP (high-energy physics) and astrophysical collaborations outside the WLCG using resources at GridKa. With the large number of heterogeneous users, the offered resources and services have to be robust and resilient due to the broad impact a service outage would cause. We explore the setup of a File Transfer Service (FTS) instance as a resilient stack, consisting of two dynamic-master clusters. The previous version FTS2 was designed to broker large scale file transfers within the initial hierarchical tier structure of the WLCG. Its successor FTS3 has become more flexible and light-weight with managing transfers not bound anymore on a strict tier scheme and permitting data flows between all sites [2]. This allows to reduce the number Content from this work may be used under the terms of the Creative Commons Attribution 3.0 licence. Any further distribution of this work must maintain attribution to the author(s) and the title of the work, journal citation and DOI. Published under licence by IOP Publishing Ltd 1

21st International Conference on Computing in High Energy and Nuclear Physics (CHEP2015) IOP Publishing FTS3 node 1 user source FTS3 node 2 destination data transfer virtualized routers transfer request transfer/space brokerage 1 x 10G 2 x 1G router 2 2 x 10G router 1 logfiles FTS3 node FTS3 cluster NFS storage router 3 router 4 SQL db query 1 x 1G 1 x 1G 1 x 1G MySQL node MySQL node 1 MySQL Galera cluster Figure 1. Overview of the FTS3 stack. The FTS3 cluster appears as one instance to an user and the Galera MySQL cluster appears as one instance to a FTS3 instance. MySQL node 2 MySQL node 3 Figure 2. Location in the KIT network topology of FTS3 cluster nodes and Galera MySQL cluster nodes. The network backbone consists of four central routers, which are connected to a firewall consisting of two instances. of FTS instances and to cover a larger number of sites. However, compared to a previous FTS2 installation, the broader coverage of sites also increases the impact of a failing FTS3 instance. Thus, a resilient setup has become even more important for a FTS3 service. The FTS3 stack (see Fig. 1) consists of two clusters with no dedicated master-slave hierarchy. For one, a database cluster provides a resilient database and operates with a multi-master topology where all nodes have equal roles. The database cluster consists of three dedicated machines hosting a MySQL database as a Galera cluster [3] and stores the FTS3 transfer states. Database transactions send to one node are replicated synchronously to other cluster members, thus no conflicts can arise as it would be in case of an asynchronous replication. The second cluster covers the FTS3 service, where the cluster nodes dynamically arbitrate between themselves a temporary topology. The FTS3 cluster consists of two dedicated machines, with one dynamically chosen master node and a second failover node as stand-by. Using dynamic clusters, we reduce single points of failures and gain robustness to outages of individual components. The general setup is not specific to the described FTS3 service and can be adapted to other services as well with features as load-balancing in addition to the failover mechanism. If necessary, both clusters can be extended with additional dedicated or virtualized nodes. 2. Hardware Setup For each cluster its members are distributed over more than one rack to be operational in case of a rack-wide outage. Shared resources by the nodes are infrastructure components as shared storage and the network infrastructure. 2

The FTS3 cluster consists of two physical machines, each one connected to the network by two gigabit network cards. One network card is connected to the general purpose internet and provides the interface for the users of the FTS service. The second network card is connected to the GridKa internal production network for database access, monitoring and shared storage. The Galera MySQL cluster consists of three physical machines equipped with sufficient memory and CPUs. Each node has one network card connected to the internal network, thus separated from the general purpose internet. The network topology is sketched in Fig. 2. The central backbone of the KIT network consists of four central routers, which are connected in a ring topology and can tolerate an outage of one element. The router mesh is connected to a firewall instance, which consists of two elements in a failover configuration. The firewall s border routers provide links to the regional and national National Research and Education Networks (NREN) as well as LHCONE and LHCOPN [4]. Each FTS3 node is connected to one hardware switch with both nodes attached to different switches for redundancy. Each hardware switch manages the routes to the internal and external networks as two virtual switch instances. The database nodes are connected to one switch. For redundancy the switch itself is connected to two central routers. With all database nodes located at the same network leaf, operability depends crucial on the switch availability. We decided to move the database nodes close within the network topology, since the cluster nodes ensure the database integrity by a synchronous replication certifying each commit. Thus, the database performance depends on the latency within the cluster. A shared storage is located on a GPFS file system and is exported via the NFS protocol. 3. FTS3 Cluster Setup We abstract the FTS3 service via virtual IP addresses. In addition to static IP addresses, nodes are assigned virtual IP addresses, Here, the dynamically allocation of a virtual IP is organized internally by the members of the FTS3 cluster. On overview of the FTS3 cluster setup is shown in Fig. 3 We implemented the setup with CTDB [5, 6], which has been developed as cluster solution for SAMBA/CIFS. A set of virtual IP addresses is allocated to the CTDB cluster. CTDB daemons running on each node arbitrate dynamically a master instance that assigns the virtual IPs to the cluster members. If the current master drops out of the cluster, the remaining nodes will again arbitrate a new master. If any member of the cluster with virtual IP addresses assigned drops out, its virtual IPs will be re-assigned by the master to active members. As a separate lock device, a shared network file system is mounted on all cluster nodes hosting a shared file. Configuration files, that are the same on all nodes, are kept on the shared storage as well, e.g., a list of all cluster members internal IP addresses and the list of virtual IP addresses. Since we use NFS as network file system, which uses only user ID numbers (UID) and group ID numbers (GID) for permission management, we harmonized the UIDs and GIDs over all FTS3 nodes. We use two virtual public IP addresses: one as official FTS3 service address and one as maintenance address for the standby node. Due the dynamic allocation, each of the two FTS3 nodes can in principle become the host of the FTS3 service IP with the other node becoming the standby node. A DNS record is assigned to the official service IP, i.e., fts3-kit.gridka.de and promoted to the FTS3 users. Due to the virtual IPs and their assigned DNS records, each FTS3 nodes host certificates have to contain all DNS names assigned to the cluster s IP pool. For easier debugging, we tune the CTDB cluster to try to pin a shared IP address to a node and reduce address migration between nodes. Also virtual IP addresses are not re-assigned, if all members of the cluster become not productive. Thus, if the whole cluster is unhealthy, any 3

21st International Conference on Computing in High Energy and Nuclear Physics (CHEP2015) IOP Publishing active FTS3 node shared IP fix IP ftsǧnode1ǧkit.gridka.de 192.108.45.59 ftsǧkit.gridka.de 192.108.45.203 FTS3 service fix IP ftsǧnode2ǧkit.gridka.de 192.108.45.146 SQL db query localhost:3306 eth1 CTDB HAProxy passive node active node round robin GPFS storage shared NFS space cluster db health check Icinga monitoring SQL db query CTDB: locking shared config FTS transfer logs MySQL node MySQL Galera cluster Figure 3. Clustered FTS3 instances sharing a virtual IP address. Cluster members communicate with each other via CTDB and dynamically allocate virtual IP addresses between each other. For enhanced reliability a shared file system provides a common file locking path. Figure 4. On each FTS3 node, database access is directed to a local HAProxy instance. The HAProxy serves as a round robin and distributes queries over the members of the database cluster. Every HAProxy instance checks regularly each database node s mysql health status and the status of the node in the Galera cluster. virtual IPs are released until at least one member of the cluster becomes available. This setups allows a transparent way to update individual FTS3 nodes by successively dropping nodes from the cluster, applying updates and joining the cluster again. Similar, system updates on database nodes can be applied in a round-robin way as well. Exceptions are updates requiring changes to the database schema, which need the whole database cluster to be stopped and thus the FTS3 service as its client. For central monitoring, a Icinga instance[7] collects monitoring information and sends a notification to the service experts if a service degrades. For each node, general health states, e.g., on the network response or free space, are collected from each node. For monitoring the FTS3 service, we re-use tests from our FTS2 service. FTS3 test transfers and the FTS3 web service s availability are checked regularly on each cluster member as well as on the shared IP/DNS. Additionally, the integrity status of each CTDB daemon is tested. In our current setup, CTDB serves as failover mechanism moving the FTS3 service identity to the standby node, if the active node fails. For other use cases, CTDB could also be deployed in more complex setup, since the numbers of nodes or virtual IP can easily be increased. For example, as load-balancing cluster, CTDB can handle a larger set of IP addresses and distributing them dynamically over the nodes so that a node can assume multiple identities. All virtual IP addresses could be subsumed in one DNS record and clients could be distributed over the CTDB cluster member by a round-robin or similar scheduler and thus could provide load-balancing in addition to failover. Since the expected load on a FTS node is much reduced in FTS3 compared to FTS2, we decide against load-balancing and use one single name per DNS record. This allows simpler management and debugging while still profiting from a failover mechanism. 4

4. Database Setup 4.1. DB Access Requests to the database can be handled equally by all nodes of the Galera cluster. Galera [9] synchronously replicates changes over all cluster members using a transaction certification mechanism, thus conflicts are avoided that can arise in asynchronous replications as in standard versions of MySQL or MariaDB. One possible draw-back of Galera s opportunistic locking can occur with conflicting write requests, with heavier load on the database than a pessimistic locking due to increasing probability of transaction rollbacks for database consistency [10]. In contrast, if the majority of requests are read transactions, optimistic locking allows read requests to be distributed in parallel over all nodes. We balance read and write transactions uniformly over all cluster nodes, since we do not expect the frequency of commits to become large enough to suffer from performance losses with to Galera s optimistic locking. An intermediate HAProxy [11] on each FTS3 node balances write/read requests in a generic tcp mode over all database nodes as sketched in Fig. 4. DB queries from a node s FTS3 instance are directed to localhost with the HAProxy instance further redirecting queries with a round-robin scheduler to one of the Galera cluster members. 4.2. DB Performance With two layers between the application and the database, we study the performance impact from the Galera clustering and the intermediate proxy by measuring the number of transactions per second through the later. The direct database performance is measured on each node with cluster replication deactivated also excluding network latencies. Following, we benchmark the database performance on a node in an active cluster giving the replication impact. For network latency performance-losses, database throughput is measured on the FTS3 nodes to each database nodes in the cluster. Finally, we measure the performance on a FTS3 node through an active HAProxy including performance-losses due to load-balancing. We use from sysbench [12] the read-only and complex MySQL benchmark options to differentiate between plain read and complex write transactions for potential replication effects. Fig. 5 shows the database performance in the FTS3 stack. As expected, in all layers more write transactions can be performed per time interval than complex transactions. While the performance decreases by 27% for complex transactions with replication being active, the averaged number of read transactions increases unexpectedly by 61% with benchmarks performed on each database node directly. Accessing from a FTS3 node over the network the database cluster with active replication reduces the throughput by 45%. The second FTS3 node performs slightly better than the first node, which we attribute to the more powerful hardware and its broader network connection. With database queries distributed by HAProxy, we observe for the first FTS3 node a performance decreases by 13% 18% and for the second node of 3% 8%, benefiting from the more powerful CPU. 4.3. DB Node Monitoring All database nodes are monitored centrally by the Icinga instance. On each database node, scripts, available as xinited services, test the response of the local mysql service as well as the Galera cluster integrity and the size of the Galera cluster as known to this node. If a member of the database cluster fails, queries from a FTS3 node would also be at risk to be directed by HAproxy to the broken database node. Thus, we setup HAProxy to check frequently the health of each node of the Galera cluster. We re-use the checks for Icinga and pass the basic check results into a wrapper. The wrapper, also available as xinited service on each node, generates a http 200 OK success status for a running service and a http 500 Internal Server Error error status for failures. With a background as http load balance, HAProxy can interpret these http 5

status codes. Thus, HAProxy excludes a node if a test returns an error. An excluded node is re-enabled when three successive tests are successful. We enable HAProxy to publish a html page within the local network showing statistics as uptimes, errors or transferred data. Figure 5. Database performance measured over successive software and network layers. Averaged readonly/complex write transactions per second measured: each database node without and with replication, from each FTS3 node without/with intermediate HAProxy over the network with active replication. 5. Conclusion We present a FTS3 setup aimed for resiliency of its two core components. Both, the database back end as well as the FTS3 service, are clusters that can withstand the loss of machines with failover mechanisms transparently for clients. Both clusters can be scaled by adding further nodes. As general solution for IP address sharing and allocation, CTDB can be used for other services as well. HAProxy provides a round-robin scheduler for distributing database queries safeguarded with integrity checks of the MySQL cluster. The Galera database cluster avoids collisions by a certification based replication. Possible improvements or changes on the clusters or the services are conceivable: Using the shared file system for storing transfers log files. When supported, transfer log files can be served to users through the FTS3 monitoring interface independently from the node managing the actual transfer. We plan to implement it when support for dedicated log paths becomes available. CTDB can be extended with event scripts to perform actions during status changes of the cluster or for regular monitoring. Thus, active monitoring could be moved from external checks by HAProxy or Icinga into state driven events from within the CTDB cluster. Moving a database node into another network segment for better resilience. This will require further benchmarking of the database performance and latency due to the internode replication. Integrating the database cluster into a CTDB setup with shared IP as for FTS3. Instead of using HAProxy on each FTS3 node, the database cluster could be provided via CTDB as a unified resource to the FTS3 service. This would require to integrate the CTDB mechanisms with the Galera high-availability service and to reconsider a load distribution solution if becoming necessary. Targeting database queries to one database node and failover to other database nodes only if the primary node fails its health checks If the load due to colliding transactions would become to large, HAProxy could be configured to distribute read operations over all nodes while directing write commits to one dedicated node and, thus, optimize the cluster load due to minimized synchronous 6

replication locking[13]. However, this would require the FTS3 application to support different ports for read and write operations. Setup of a fencing mechanism to securely remove broken nodes from the cluster. E.g., an integration with Pacemaker/Linux-HA[14, 15]. Since both systems, CTDB and Pacemaker provide partly overlapping functionalities, a careful configuration would be necessary to integrate the system-specific parts from each solution with each other. Since the FTS service is essentially stateless and the database contains all transfer information, an aggressive fencing mechanism is not essential and would not necessarily increases the reliability of a FTS3 setup. References [1] GridKa (Grid Computing Centre Karlsruhe), http://www.gridka.de [2] A A Ayllon and M Salichos and M K Simon and O Keeble FTS3: New Data Movement Service For WLCG, J. Phys.: Conf. Ser. 2014, 513 3 032081, doi:10.1088/1742-6596/513/3/032081, http://dx.doi.org/10. 1088/1742-6596/513/3/032081, [3] Codership Oy. Galera cluster for MySQL the true multi-master, http://galeracluster.com/products/ [4] LHCOPN Working Group Large Hadron Collider Optical Private Network, LHC Open Network Environment, https://twiki.cern.ch/twiki/bin/view/lhcopn/webhome/ [5] CTDB cluster implementation of the SAMBA trivial database (TDB), https://ctdb.samba.org/ [6] CTDB project wiki, https://wiki.samba.org/index.php/ctdb_project [7] Icinga Open Source Monitoring, https://www.icinga.org/ [8] dcache.org dcache, a distributed data storage caching system, http://www.dcache.org [9] Codership Oy. Galera database replication documentation, http://galeracluster.com/ documentation-webpages/introduction.html [10] severalnines Limitations in Galera Cluster for MySQL, http://support.severalnines.com/entries/ 21692388-Limitations-in-Galera-Cluster-for-MySQL [11] HAProxy The Reliable, High Performance TCP/HTTP Load Balancer, http://www.haproxy.org/ [12] sysbench https://github.com/akopytov/sysbench [13] severalnines Avoiding Deadlocks in Galera - Set up HAProxy for singlenode writes and multi-node reads, http://www.severalnines.com/blog/ avoiding-deadlocks-galera-set-haproxy-single-node-writes-and-multi-node-reads [14] Linux-HA Providing Open Source High-Availability Software for Linux and other Platforms since 1999, http://www.linux-ha.org/wiki/main_page/wiki/pacemaker [15] Corosync alternative cluster communication managern (CMM) to Heartbeat, https://corosync.github.io/ corosync/ 7