Friday, May 30, 2014

MySQL Apache Failover System with DRBD, Pacemaker, Corosync 2.x


The configuration for this system is equal with my previous article, the differences are on the corosync config and the way to start pacemaker and drbdlinks. In the corosync version newer than 2.x, pacemaker is no longer started by corosync, so pacemaker should be loaded automatically during start up. Below is the example configuration of the corosnyc.conf:

totem {
        version: 2
        token: 3000
        token_retransmits_before_loss_const: 10
        join: 60
        consensus: 3600
        vsftype: none
        max_messages: 20
        clear_node_high_bit: yes
        secauth: off
        threads: 0
        rrp_mode: none
        transport: udpu
        cluster_name: Dbcluster

nodelist {
  node {
        ring0_addr: fo2
        nodeid: 1
  node {
        ring0_addr: fo3
        nodeid: 2

quorum {
  provider: corosync_votequorum

logging {
        fileline: off
        to_stderr: yes
        to_logfile: yes
          logfile: /var/log/corosync/corosync.log
        to_syslog: no
        syslog_facility: daemon
        debug: off
        timestamp: on
        logger_subsys {
                subsys: AMF
                debug: off
                tags: enter|leave|trace1|trace2|trace3|trace4|trace6

Pacemaker console

In the pacemaker console, change the method that starts drbdlinks from

primitive Links heartbeat:drbdlinks
primitive Links lsb:drbdlinks

And now we are ready to go, to apply the configuration, just restart the corosync and pacemaker daemon.

Ubuntu Server

On ubuntu server, access to some directory is restricted by apparmor application. To prevent misbehavior of the fail over system, make sure these line were added to the mysql apparmor configuration file (/etc/apparmor.d/usr.sbin.mysqld) :

  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/*.cnf r,
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysql.log rw,
  /var/log/mysql.err rw,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/lib/mysql.drbdlinks/ r,
  /var/lib/mysql.drbdlinks/** r,
  /var/lib/mysqld/ r,
  /var/lib/mysqld/** rwk,
  /sync/mysqldb/ r,
  /sync/mysqldb/** rwk,
  /sync/mysql/ r,
  /sync/mysql/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/ w,
  /var/run/mysqld/mysqld.sock w,
  /run/mysqld/ rw,
  /run/mysqld/mysqld.sock rw,


No comments: