DRBD
DRBD的工作机制很简单,但确实廉价存储中较好的解决方案,DRBD的存储切换较麻烦,当出现故障的时候,想要快速切换的服务就都需要高可用集群框架来实现,下面是一个演示案例。
框架构建

关于corosync v1的配置可以参考:corosync配置
关于drbd的配置可以参考:drbd配置
目的为构建高可用的以drbd块设备为存储的高可用mariadb。
集群配置
构建drbd主从资源配置:
node1
1~]# crm configure2crm(live)configure# primitive mysqlstore ocf:linbit:drbd params drbd_resource=mystore op monitor role='Master' interval=10s timeout=20s op monitor role='Slave' interval=20s timeout=20s op start timeout=240s op stop timeout=100s3crm(live)configure# verify4crm(live)configure# ms ms_mysqlstore mysqlstore meta clone-max=2 clone-node-max=1 master-max=1 master-node-max=1 notify='true'5crm(live)configure# verify6crm(live)configure# commit7crm(live)configure# cd ..8crm(live)# status9Stack: classic openais (with plugin)10Current DC: node1 (version 1.1.15-5.el6-e174ec8) - partition with quorum11Last updated: Fri May 19 08:25:05 2017 Last change: Fri May 19 08:25:00 2017 by root via cibadmin on node112, 2 expected votes132 nodes and 2 resources configured1415Online: [ node1 node2 ]1617Full list of resources:1819Master/Slave Set: ms_mysqlstore [mysqlstore]20Masters: [ node1 ]21Slaves: [ node2 ]2223crm(live)# node standby24crm(live)# status25Stack: classic openais (with plugin)26Current DC: node1 (version 1.1.15-5.el6-e174ec8) - partition with quorum27Last updated: Fri May 19 08:27:37 2017 Last change: Fri May 19 08:25:32 2017 by root via crm_attribute on node228, 2 expected votes292 nodes and 2 resources configured3031Node node1: standby32Online: [ node2 ]3334Full list of resources:3536Master/Slave Set: ms_mysqlstore [mysqlstore]37Masters: [ node2 ]38Stopped: [ node1 ]node1
配置主drbd自动挂载1~]# mkdir /mydata;ssh node2 'mkdir /mydata'2~]# crm node online3~]# crm4crm(live)# configure5crm(live)configure# primitive mydata ocf:heartbeat:Filesystem params device='/dev/drbd0' directory='/mydata' fstype=ext4 op monitor interval=20s timeout=40s op start timeout=60s op stop timeout=60s6crm(live)configure# verify7crm(live)configure# colocation mydata_with_ms_mysqlstore_master inf: mydata ms_mysqlstore:Master8crm(live)configure# order mydata_after_ms_mysqlstore_master Mandatory: ms_mysqlstore:promote mydata9crm(live)configure# verify10crm(live)configure# commit11crm(live)configure# cd ..12crm(live)# status13Stack: classic openais (with plugin)14Current DC: node1 (version 1.1.15-5.el6-e174ec8) - partition with quorum15Last updated: Fri May 19 08:25:05 2017 Last change: Fri May 19 08:25:00 2017 by root via cibadmin on node116, 2 expected votes172 nodes and 2 resources configured1819Online: [ node1 node2 ]2021Full list of resources:2223Master/Slave Set: ms_mysqlstore [mysqlstore]24Masters: [ node1 ]25Slaves: [ node2 ]26mydata (ocf::heartbeat:Filesystem): Started node1node1
主节点配置mariadb1~]# tar xf mariadb-5.5.40-linux-x86.64.tar.gz -C /usr/local2~]# cd /usr/local3~}# groupadd -r -g 306 mysql;ssh node2 "groupadd -r -g 306 mysql"4~]# useradd -r -g 306 -u 306 mysql;ssh node2 "useradd -r -g 306 -u 306 mysql"5~]# mkdir /mydata/data6~]# chown -R mysql.mysql /mydata/data7~]# ln -s mariadb-5.5.40-linux-x86.64 mysql8~]# cd mysql9~]# scripts/mysql_install_db --datadir=/mydata/data --user=mysql10~]# cp support-files/mysql.server /etc/init.d/mysqld11~]# chkconfig --add mysqld;chkconfig mysqld off12~]# cp support-files/my-large.cnf /etc/my.cnf13~]# cat /etc/my.cnf14[mysqld]15datadir=/mysqldata/data16innodb_file-per_table=117~]# service mysqld start18~]# service mysqld stop19~]# crm node standby20~]# crm node onlinenode2
配置mariadb1~]# tar xf mariadb-5.5.40-linux-x86.64.tar.gz -C /usr/local2~]# cd /usr/local3~]# mkdir /mydata/data4~]# chown -R mysql.mysql /mydata/data5~]# ln -s mariadb-5.5.40-linux-x86.64 mysql6~]# cd mysql7~]# ln -s mariadb-5.5.40-linux-x86.64 mysql8~]# cd mysql9~]# cp support-files/mysql.server /etc/init.d/mysqld10~]# chkconfig --add mysqld;chkconfig mysqld off11~]# cp support-files/my-large.cnf /etc/my.cnf12~]# cat /etc/my.cnf13[mysqld]14datadir=/mysqldata/data15innodb_file-per_table=116~]# service mysqld start17~]# service mysqld stop18~]# crm node standby19~]# crm node onlinenode1
配置mariadb作为高可用集群资源1~]# crm2crm(live)# configure3crm(live)configure# primitive myip ocf:heartbeat:IPaddr params ip=10.211.55.24 op monitor interval=10s timeout=20s4crm(live)configure# primitive myserver lsb:mysqld op monitor interval=20s timeout=20s5crm(live)configure# colocation myip_with_ms_mysqlstore_master inf: myip ms_myqlstore:Master6crm(live)configure# colocation myserver_with_mydata inf: myserver mydata7crm(live)configure# order myserver_after_mydata Mandatory: mydata myserver8crm(live)configure# order myserver_after_myip Mandatory: myip myserver9crm(live)configure# veify10crm(live)configure# commit11crm(live)configure# cd ..12crm(live)# status13Stack: classic openais (with plugin)14Current DC: node1 (version 1.1.15-5.el6-e174ec8) - partition with quorum15Last updated: Fri May 19 08:25:05 2017 Last change: Fri May 19 08:25:00 2017 by root via cibadmin on node116, 2 expected votes172 nodes and 2 resources configured1819Online: [ node1 node2 ]2021Full list of resources:2223Master/Slave Set: ms_mysqlstore [mysqlstore]24Masters: [ node1 ]25Slaves: [ node2 ]26mydata (ocf::heartbeat:Filesystem): Started node127myip (ocf::heartbeat:IPaddr) Started node128myserver (lsb:mysqld) Started node1
这样就完成了整个集群的简单配置,而且drbd也不存在单点问题,是个十分高效便利的高可用解决方案。