An High Available Database
for OpenStack Cloud Production
by Pacemaker, Corosync & DRBD
@j3ffyang, Jeffrey Yang, OpenStack Dev, IBM
OpenStack Summit, Atlanta, 2014
Technical Objective
●
Database high availability (active - passive)
●
Data persistence (drbd)
●
MySQLd monitored (corosync)
●
IP address floating when failure occurs
(pacemaker)
High Level Architecture
DRBD
MySQL
Corosync
Pacemaker
DRBD
MySQL
sync
Compute
Other OpenStack components
Sample Configurations
[root@host10 corosync]# cat corosync.conf
...
totem {
version: 2
token: 10000 # 10 seconds
token_retransmits_before_loss_const: 10
secauth: on
threads: 0
interface {
ringnumber: 0
bindnetaddr:10.10.203.0
mcastaddr: 226.94.1.1
mcastport: 5405
ttl: 1
}
}
logging {
fileline: off
to_stderr: no
to_logfile: yes
to_syslog: yes
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
...
service {
ver: 0
name: pacemaker
use_mgmtd: yes
}
[root@host10 corosync]# crm configure edit
node host10 
attributes standby="off"
node host20 
attributes standby="off"
primitive drbd_mysql ocf:linbit:drbd 
params drbd_resource="mysql" 
op monitor interval="29s" role="Master" 
op monitor interval="31s" role="Slave"
primitive fs_mysql ocf:heartbeat:Filesystem 
params device="/dev/drbd1" directory="/opt/drbd/" fstype="ext4"
primitive ip_mysql ocf:heartbeat:IPaddr2 
params ip="10.10.203.19" nic="eth3"
primitive mysqld lsb:mysqld
group mysql fs_mysql ip_mysql mysqld
ms ms_drbd_mysql drbd_mysql 
meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1"
notify="true"
colocation mysql_on_drbd inf: mysql ms_drbd_mysql:Master
order mysql_after_drbd inf: ms_drbd_mysql:promote mysql:start
property $id="cib-bootstrap-options" 
dc-version="1.1.7-6.el6-148fccfd5985c5590cc601123c6c16e966b85d14" 
cluster-infrastructure="openais" 
expected-quorum-votes="2" 
stonith-enabled="false"
Demo
●
Captured from a production environment at
one of IBM customers
●
https://www.youtube.com/watch?v=UEln0TUU
aH8
To- do
●
Enhance cookbook for automatic deployment
(DevOps)
●
Move to Galera Cluster for multi- nodes (all
active)

20140513_jeffyang_demo_openstack

  • 1.
    An High AvailableDatabase for OpenStack Cloud Production by Pacemaker, Corosync & DRBD @j3ffyang, Jeffrey Yang, OpenStack Dev, IBM OpenStack Summit, Atlanta, 2014
  • 2.
    Technical Objective ● Database highavailability (active - passive) ● Data persistence (drbd) ● MySQLd monitored (corosync) ● IP address floating when failure occurs (pacemaker)
  • 3.
  • 4.
    Sample Configurations [root@host10 corosync]#cat corosync.conf ... totem { version: 2 token: 10000 # 10 seconds token_retransmits_before_loss_const: 10 secauth: on threads: 0 interface { ringnumber: 0 bindnetaddr:10.10.203.0 mcastaddr: 226.94.1.1 mcastport: 5405 ttl: 1 } } logging { fileline: off to_stderr: no to_logfile: yes to_syslog: yes logfile: /var/log/cluster/corosync.log debug: off timestamp: on logger_subsys { subsys: AMF debug: off } } ... service { ver: 0 name: pacemaker use_mgmtd: yes } [root@host10 corosync]# crm configure edit node host10 attributes standby="off" node host20 attributes standby="off" primitive drbd_mysql ocf:linbit:drbd params drbd_resource="mysql" op monitor interval="29s" role="Master" op monitor interval="31s" role="Slave" primitive fs_mysql ocf:heartbeat:Filesystem params device="/dev/drbd1" directory="/opt/drbd/" fstype="ext4" primitive ip_mysql ocf:heartbeat:IPaddr2 params ip="10.10.203.19" nic="eth3" primitive mysqld lsb:mysqld group mysql fs_mysql ip_mysql mysqld ms ms_drbd_mysql drbd_mysql meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" colocation mysql_on_drbd inf: mysql ms_drbd_mysql:Master order mysql_after_drbd inf: ms_drbd_mysql:promote mysql:start property $id="cib-bootstrap-options" dc-version="1.1.7-6.el6-148fccfd5985c5590cc601123c6c16e966b85d14" cluster-infrastructure="openais" expected-quorum-votes="2" stonith-enabled="false"
  • 5.
    Demo ● Captured from aproduction environment at one of IBM customers ● https://www.youtube.com/watch?v=UEln0TUU aH8
  • 6.
    To- do ● Enhance cookbookfor automatic deployment (DevOps) ● Move to Galera Cluster for multi- nodes (all active)