corosync+drbd实现mariadb高可用集群

配置前的准备

(1)节点间时间必须同步:使用ntp协议实现;

[[email protected] ~]# ntpdate 172.16.0.1       #172.16.0.1是我这里的时间服务器
[[email protected] ~]# ntpdate 172.16.0.1

(2) 节点间需要通过主机名互相通信,必须解析主机至IP地址;

(a)建议名称解析功能使用hosts文件来实现;

(b)通信中使用的名字与节点名字必须保持一致:“uname -n”命令,或“hostname”展示出的名字保持一致;

[[email protected] ~]# sed -i‘[email protected]\(HOSTNAME=\).*@\[email protected]‘ /etc/sysconfig/network
[[email protected] ~]# hostname node1.xmfb.com
[[email protected] ~]# echo "172.16.4.100node1.xmfb.com node1" >> /etc/hosts
[[email protected] ~]# echo "172.16.4.101node2.xmfb.com node2" >> /etc/hosts  
[[email protected] ~]# sed -i‘[email protected]\(HOSTNAME=\).*@\[email protected]‘ /etc/sysconfig/network
[[email protected] ~]# hostname node2.xmfb.com
[[email protected] ~]# echo "172.16.4.100 node1.xmfb.comnode1" >> /etc/hosts
[[email protected] ~]# echo "172.16.4.101node2.xmfb.com node2" >> /etc/hosts

(3)考虑仲裁设备是否会用到;

(4) 建立各节点之间的root用户能够基于密钥认证;

#ssh-keygen -t rsa -P ‘‘

#ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

[[email protected] ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa-P ‘‘
[[email protected] ~]# ssh-copy-id -i .ssh/id_rsa.pubnode2
 
[[email protected] ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa-P ‘‘
[[email protected] ~]# ssh-copy-id -i .ssh/id_rsa.pubnode1

注意:定义成为集群服务中的资源,一定不能开机自动启动;因为它们将由crm管理;

Corosync配置

安装corosync

[[email protected]~]# yum -y install corosync pacemaker
[[email protected]~]# yum -y install corosync pacemaker

安装crm

[[email protected] ~]# yum--nogpgcheck localinstall crmsh-2.1-1.6.x86_64.rpm pssh-2.3.1-2.el6.x86_64.rpm –y                                                                                       
[[email protected] ~]# yum --nogpgcheck localinstallcrmsh-2.1-1.6.x86_64.rpm pssh-2.3.1-2.el6.x86_64.rpm -y

复制配置文件模版

[[email protected] ~]# cp/etc/corosync/corosync.conf.example /etc/corosync/corosync.conf

修改配置文件

[[email protected] ~]# vim /etc/corosync/corosync.conf
compatibility: whitetank
totem {
       version: 2
       secauth: on
       threads: 0
       interface {
               ringnumber: 0
               bindnetaddr: 172.16.0.0
               mcastaddr: 239.165.17.11
               mcastport: 5405
               ttl: 1
        }
}
 
logging {
       fileline: off
       to_stderr: no
       to_logfile: no
       logfile: /var/log/cluster/corosync.log
       to_syslog: yes
       debug: off
       timestamp: on
       logger_subsys {
               subsys: AMF
               debug: off
        }
}
service {
  ver:  0
  name:pacemaker
   use_mgmtd:yes
   }
   aisexec {
     user:root
    group:  root
    }

生成验证密钥

[[email protected] ~]# corosync-keygen

复制配置文件和密钥到节点2

[[email protected] ~]# scp/etc/corosync/{authkey,corosync.conf} node2:/etc/corosync/
authkey                                                 100%  128     0.1KB/s  00:00   
corosync.conf                                           100% 2790     2.7KB/s   00:00

启动corosync

[[email protected] ~]# service corosync start;ssh node2‘service corosync start‘

查看集群状态信息

[[email protected] ~]# crm status
Last updated: Sun May 31 17:32:28 2015
Last change: Sun May 31 17:32:22 2015
Stack: classic openais (with plugin)
Current DC: node1.xmfb.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 2 expected votes
0 Resources configured
 
Online: [ node1.xmfb.com node2.xmfb.com ]

解决corosync中STONITH报错问题

crm(live)configure# property stonith-enabled=false
crm(live)configure# commit

资源转移配置

crm(live)configure# property no-quorum-policy=ignore

资源粘性配置

crm(live)configure# propertydefault-resource-stickiness=50

Corosync就先配置到这里,然后配置drbd

drbd配置

配置之前需要配置好做drbd磁盘的分区,而且不要格式化(此处省略)

安装配置drbd

安装drbd

rpm -ivh kmod-drbd84-8.4.5-504.1.el6.x86_64.rpmdrbd84-utils-8.9.1-1.el6.elrepo.x86_64.rpm

配置global_common.conf

[[email protected] ~]# vim /etc/drbd.d/global_common.conf
global {
        usage-count no;
        # minor-countdialog-refresh disable-ip-verification
}    
 
common {
        protocol C;
 
        handlers {
               pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh;/usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ;reboot -f";
               pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh;/usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ;reboot -f";
                local-io-error"/usr/lib/drbd/notify-io-error.sh;/usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ;halt -f";
                # fence-peer"/usr/lib/drbd/crm-fence-peer.sh";
                # split-brain"/usr/lib/drbd/notify-split-brain.sh root";
                # out-of-sync"/usr/lib/drbd/notify-out-of-sync.sh root";
                #before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 ---c 16k";
                #after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
        }
 
        startup {
                #wfc-timeout120;
               #degr-wfc-timeout 120;
        }
 
        disk {
                on-io-errordetach;    #如果磁盘故障就拆掉,不让磁盘继续同步
                #fencingresource-only;
        }
 
        net {
                cram-hmac-alg"sha1";   #同步的算法
                shared-secret"mydrbdlab";  #同步的随机码
        }
 
        syncer {
                rate200M;    #设置同步的速率
        }
}

定义一个资源,文件结尾必须是res

[[email protected] ~]# vim /etc/drbd.d/mystore.res #文件名最好和资源一致。
resource mystore {
  onnode1.xmfb.com {
   device    /dev/drbd0;   #资源名称
    disk      /dev/sda3;    #本地drbd设备
   address   172.16.4.100:7789;  #drbd节点设置,而且需要保证可以解析对方的节点
    meta-diskinternal;     #drbd网络设置
  }
  onnode2.xmfb.com {
   device    /dev/drbd0;
    disk      /dev/sda3;
   address   172.16.4.101:7789;
    meta-diskinternal;
  }
}

以上文件在两个节点上必须相同,因此,可以基于ssh将刚才配置的文件全部同步至另外一个节点。

[[email protected] ~]# scp-r /etc/drbd.* node2:/etc/   
drbd.conf                                               100%  133     0.1KB/s  00:00   
mystore.res                                             100%  201     0.2KB/s  00:00   
global_common.conf                                       100%2197     2.2KB/s   00:00

初始化资源,两个节点都运行

[[email protected] ~]# drbdadm create-md mystore
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
[[email protected] ~]# drbdadm create-md mystore
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.

启动drbd

[[email protected] ~]# service drbd start
[[email protected] ~]# service drbd start

说明,第一个节点启动的时候会等待第二个节点启动,如果第二个节点不启动那么第一个节点也无法启动

drbd作为集群资源需要设置开机不启动

[[email protected] ~]# chkconfig drbd off
[[email protected] ~]# chkconfig --list  drbd
drbd          0:off  1:off  2:off  3:off  4:off  5:off  6:off

启动后的配置

查看状态,由于都没有配置主节点所以都是从节点

[[email protected] ~]# cat /proc/drbd
version: 8.4.5 (api:1/proto:86-101)
GIT-hash: 1d360bde0e095d495786eaeb2a1ac76888e4db96build by [email protected], 2015-01-02 12:06:20
 0:cs:Connected ro:Secondary/Secondaryds:Inconsistent/Inconsistent C r-----
    ns:0 nr:0dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:5252056

设置主从

[[email protected] ~]# drbdadm -- --overwrite-data-of-peerprimary mystore
[[email protected] ~]# cat /proc/drbd
version: 8.4.5 (api:1/proto:86-101)
GIT-hash: 1d360bde0e095d495786eaeb2a1ac76888e4db96build by [email protected], 2015-01-02 12:06:20
 0:cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-
    ns:160720nr:0 dw:0 dr:164648 al:0 bm:0 lo:0 pe:9 ua:5 ap:0 ep:1 wo:f oos:5093336
    [>....................]sync‘ed:  3.2% (4972/5128)M
    finish:0:02:40 speed: 31,744 (31,744) K/sec

主从已经设置完成,正在同步数据

格式化挂载drbd设备

[[email protected] ~]# mkfs.ext4 -j /dev/drbd0
[[email protected] ~]# mkdir /mydata
[[email protected] ~]# mount /dev/drbd0 /mydata/

drbd复制验证

在主节点的drbd分区创建一个测试文件

[[email protected] ~]# cd /mydata/
[[email protected] mydata]# touch test
[[email protected] mydata]# ls
lost+found test

调换主从角色,调换之前需要卸载文件系统,因为主从节点不能同时使用

[[email protected] ~]# umount /mydata/
[[email protected] ~]# drbdadm secondary mystore
[[email protected] ~]# drbd-overview
 0:mystore/0 Connected Secondary/Secondary UpToDate/UpToDate

从节点挂载查看主节点创建的文件还在说明drbd配置成功

[[email protected] ~]# drbd-overview
 0:drbd/0  ConnectedSecondary/Secondary UpToDate/UpToDate C r-----
[[email protected] ~]# drbdadm primary mystore
[[email protected] ~]# mkdir /mydata
[[email protected] ~]# mount /dev/drbd0 /mydata
[[email protected] ~]# cd /mydata
[[email protected] mydata]# ls
lost+found testdrbd

配置corosync+drbd高可用

配置之前需要先关闭drbd

[[email protected] ~]# service drbd stop
[[email protected] ~]# service drbd stop

使用corosync定义drbd高可用是由linbit实现的

crm(live)ra# classes
lsb
ocf / heartbeat linbit pacemaker
service
stonith
crm(live)ra# info ocf:linbit:drbd   #查看drbd帮助信息

定义drbd资源和克隆

crm(live)configure# primitive mystorocf:linbit:drbd params drbd_resource="mystore" op monitorrole="Master" interval=10s timeout=20s op monitorrole="Slave" interval=20s timeout=20s op start timeout=240s op stoptimeout=100s
crm(live)configure# ms my_mystor mystor metaclone-max="2" clone-node-max="1" master-max="1"master-node-max="1" notify="true"

定义drbd挂载

crm(live)configure# primitive mydataocf:heartbeat:Filesystem params device="/dev/drbd0"directory="/mydata" fstype="ext4" op monitor interval=20stimeout=40s op start timeout=60s op stop timeout=60s

设置位置约束

crm(live)configure# colocationmydata_with_ms_mystor_master inf: mydata my_mystor:Master

顺序约束

crm(live)configure#order mydata_after_ms_mystor_master Mandatory: my_mystor:promote mydata:start

转换测试

[[email protected] /]# crm status
Last updated: Sun May 31 14:16:28 2015
Last change: Sun May 31 14:16:13 2015
Stack: classic openais (with plugin)
Current DC: node2.xmfb.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 2 expected votes
3 Resources configured
 
 
Online: [ node1.xmfb.com node2.xmfb.com ]
 
 Master/SlaveSet: my_mystor [mystor]
     Masters:[ node1.xmfb.com ]
     Slaves:[ node2.xmfb.com ]
 mydata(ocf::heartbeat:Filesystem):    Started node1.xmfb.com
[[email protected] ~]# crm node standby
[[email protected] ~]# crm status
Last updated: Sun May 31 22:10:17 2015
Last change: Sun May 31 22:09:20 2015
Stack: classic openais (with plugin)
Current DC: node2.xmfb.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 2 expected votes
3 Resources configured
 
 
Node node1.xmfb.com: standby
Online: [ node2.xmfb.com ]
 
 Master/SlaveSet: my_mystor [mystor]
     Masters:[ node2.xmfb.com ]
     Stopped:[ node1.xmfb.com ]
 mydata(ocf::heartbeat:Filesystem):    Started node2.xmfb.com

drbd主从也是正常的

[[email protected] ~]# drbd-overview
 0:mystore/0 Connected Primary/Secondary UpToDate/UpToDate /mydata ext4 4.9G 11M 4.6G1%

Mariadb配置

主节点部署mariadb

创建mariadb用户和数据目录

[[email protected] ~]# groupadd -r -g 306 mysql
[[email protected] ~]# useradd -r -g 306 -u 306 mysql
[[email protected] ~]# mkdir /mydata/data
[[email protected] ~]# chown -R mysql.mysql /mydata/data/

安装mariadb

tar xfmariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/
cd/usr/local/
ln -smariadb-5.5.43-linux-x86_64/ mysql
cd mysql/
chown -Rroot.mysql ./*
scripts/mysql_install_db--user=mysql --data=/mydata/data/

设置启动脚本

cp support-files/mysql.server/etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld off

设置配置文件

[[email protected] ~]# cp support-files/my-large.cnf/etc/my.cnf
[[email protected] ~]# vim /etc/my.cnf
thread_concurrency = 2     #设置CPU核心数量乘以2
datadir = /mydata/data     #设置数据文件目录
innodb_file_per_table = 1  #使用inoodb引擎,每表一个表文件

优化执行路径

echo "exportPATH=/usr/local/mysql/bin:$PATH" >> /etc/profile.d/mysql
. /etc/profile.d/mysql

启动测试

[[email protected] mysql]# service mysqld start
Starting MySQL...                                         [  OK  ]
[[email protected] mysql]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.43-MariaDB-log MariaDB Server
 
Copyright (c) 2000, 2015, Oracle, MariaDBCorporation Ab and others.
 
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clearthe current input statement.
 
MariaDB [(none)]>

设置root用户可以远程连接

MariaDB [(none)]> GRANT ALL ON *.* TO‘root‘@‘172.16.%.%‘ IDENTIFIED BY ‘centos‘;
MariaDB [(none)]> FLUSH PRIVILEGES;

设置完成关闭mysql服务

service mysqld stop

设置节点1为备节点

[[email protected] ~]# crm node standby
[[email protected] ~]# crm node online
[[email protected] ~]# crm status
Last updated: Wed Jun  3 21:19:10 2015
Last change: Wed Jun  3 21:19:07 2015
Stack: classic openais (with plugin)
Current DC: node1.xmfb.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 2 expected votes
3 Resources configured
 
 
Node node1.xmfb.com: standby
Online: [ node2.xmfb.com ]
 
 Master/SlaveSet: MS_Mysql [mysqldrbd]
     Masters:[ node2.xmfb.com ]
     Stopped:[ node1.xmfb.com ]
 mydata(ocf::heartbeat:Filesystem):    Started node2.xmfb.com

备用节点部署mariadb

部署之前确保,主节点安装的文件已经转移到备节点

[[email protected] ~]# ll /mydata/
total 20
-rw-r--r-- 1 root root     0 May 31 21:46 a.txt
drwxr-xr-x 5 306  306  4096 May 31 22:16 data
drwx------ 2 root root 16384 May 31 21:46lost+found
[[email protected] ~]# ll /mydata/data/
total 28716
-rw-rw---- 1 306 306    16384 May 31 22:16aria_log.00000001
-rw-rw---- 1 306 306       52 May 31 22:16aria_log_control
-rw-rw---- 1 306 306 18874368 May 31 22:16 ibdata1
-rw-rw---- 1 306 306  5242880 May 31 22:16ib_logfile0
-rw-rw---- 1 306 306  5242880 May 31 22:16ib_logfile1
drwx------ 2 306 root     4096 May 31 22:15 mysql
-rw-rw---- 1 306 306      476 May 31 22:16mysql-bin.000001
-rw-rw---- 1 306 306       19 May 31 22:16mysql-bin.index
-rw-r----- 1 306 root     2414 May 31 22:16 node1.xmfb.com.err
drwx------ 2 306 306     4096 May 31 22:15performance_schema
drwx------ 2 306 root     4096 May 31 22:14 test

创建mysql相关用户

[[email protected] ~]# groupadd -r -g 306 mysql
[[email protected] ~]# useradd -r -g 306 -u 306 mysql

安装mariadb不需要初始化

tar xf mariadb-5.5.43-linux-x86_64.tar.gz -C/usr/local/
cd /usr/local/
ln -s mariadb-5.5.43-linux-x86_64/ mysql
cd mysql/
chown -R root.mysql ./*

复制配置文件

[[email protected] ~]# scp /etc/my.cnf node2:/etc/my.cnf

设置启动脚本

cp support-files/mysql.server/etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld off

优化执行路径

echo "export PATH=/usr/local/mysql/bin:$PATH">> /etc/profile.d/mysql
. /etc/profile.d/mysql

启动mariadb

[[email protected] ~]# service mysqld start

创建一个数据库

MariaDB [(none)]> create database testdb;
Query OK, 1 row affected (0.06 sec)
 
MariaDB [(none)]> show databases;
+--------------------+
| Database          |
+--------------------+
| information_schema |
| mysql             |
| performance_schema |
| test              |
| testdb            |
+--------------------+
5 rows in set (0.00 sec)

关闭mysql服务

[[email protected] ~]# service mysqld stop

切换主从节点

[[email protected] ~]# crm node standby
[[email protected] ~]# crm node online
[[email protected] ~]# crm status
Last updated: Sun May 31 22:32:38 2015
Last change: Sun May 31 22:32:33 2015
Stack: classic openais (with plugin)
Current DC: node2.xmfb.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 2 expected votes
3 Resources configured
 
 
Online: [ node1.xmfb.com node2.xmfb.com ]
 
 Master/SlaveSet: my_mystor [mystor]
     Masters:[ node1.xmfb.com ]
     Slaves:[ node2.xmfb.com ]
 mydata(ocf::heartbeat:Filesystem):    Started node1.xmfb.com

node1启动mysql服务

[[email protected] ~]# service mysqld start

登录数据库可以看到node2上面创建的数据库

MariaDB [(none)]> show databases;
+--------------------+
| Database          |
+--------------------+
| information_schema |
| mysql             |
| performance_schema |
| test              |
| testdb            |
+--------------------+
5 rows in set (0.00 sec)

查看完成停止mysql服务

[[email protected] ~]# service mysqld stop

配置mysql高可用集群

设置vip资源

crm(live)configure# primitive myipocf:heartbeat:IPaddr params ip="172.16.4.1" op monitor interval=10stimeout=20s

定义mysql服务为集群资源

crm(live)configure# primitive myserver lsb:mysqldop monitor interval=20s timeout=20s

定义位置约束

crm(live)configure# colocationmyip_with_ms_mystor_master inf: myip my_mystor:Master
crm(live)configure# colocation myserver_with_mydatainf: myserver mydata

定义顺序约束

crm(live)configure# order myserver_after_mydataMandatory: mydata:start myserver:start
crm(live)configure# order myserver_after_myipMandatory: myip:start myserver:start

设置完成commit提交,并且查看状态

[[email protected] ~]# crm status
Last updated: Sun May 31 22:48:39 2015
Last change: Sun May 31 22:48:27 2015
Stack: classic openais (with plugin)
Current DC: node2.xmfb.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 2 expected votes
5 Resources configured
 
 
Online: [ node1.xmfb.com node2.xmfb.com ]
 
 Master/SlaveSet: my_mystor [mystor]
     Masters:[ node1.xmfb.com ]
     Slaves:[ node2.xmfb.com ]
 mydata(ocf::heartbeat:Filesystem):    Started node1.xmfb.com
 myip  (ocf::heartbeat:IPaddr):Started node1.xmfb.com
 myserver  (lsb:mysqld):Startednode1.xmfb.com

 验证

设置完成之后,使用其他节点可以使用vip地址连接mysql

[[email protected] ~]# mysql -u root -h172.16.4.1 –p
MariaDB [(none)]> show databases;
+--------------------+
| Database          |
+--------------------+
| information_schema |
| mysql             |
| performance_schema |
| test              |
| testdb            |
+--------------------+
5 rows in set (0.01 sec)

主备转换测试

[[email protected] ~]# crm node standby

节点2已经启动vip和mysql资源

[[email protected] ~]# crm status
Last updated: Sun May 31 22:57:34 2015
Last change: Sun May 31 22:57:23 2015
Stack: classic openais (with plugin)
Current DC: node2.xmfb.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 2 expected votes
5 Resources configured
 
 
Online: [ node1.xmfb.com node2.xmfb.com ]
 
 Master/SlaveSet: my_mystor [mystor]
     Masters:[ node2.xmfb.com ]
     Slaves:[ node1.xmfb.com ]
 mydata(ocf::heartbeat:Filesystem):    Started node2.xmfb.com
 myip  (ocf::heartbeat:IPaddr):Started node2.xmfb.com
 myserver  (lsb:mysqld):Startednode2.xmfb.com

连接数据库依旧正常

[[email protected] ~]# mysql -u root -h172.16.4.1 -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.43-MariaDB-log MariaDB Server
 
Copyright (c) 2000, 2015, Oracle, MariaDBCorporation Ab and others.
 
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clearthe current input statement.
 
MariaDB [(none)]> show databases;
+--------------------+
| Database          |
+--------------------+
| information_schema |
| mysql             |
| performance_schema |
| test              |
| testdb            |
+--------------------+
5 rows in set (0.06 sec)

创建一个表

MariaDB [(none)]> use testdb;
Database changed
MariaDB [testdb]> create table t1 (id int,namevarchar(20));
Query OK, 0 rows affected (0.10 sec)
 
MariaDB [testdb]> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| t1              |
+------------------+
1 row in set (0.00 sec)

再次进行主从切换

[[email protected] ~]# crm node standby
[[email protected] ~]# crm node online

节点转移到node1

[[email protected] ~]# crm status
Last updated: Sun May 31 23:03:37 2015
Last change: Sun May 31 23:03:32 2015
Stack: classic openais (with plugin)
Current DC: node2.xmfb.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 2 expected votes
5 Resources configured
 
 
Online: [ node1.xmfb.com node2.xmfb.com ]
 
 Master/SlaveSet: my_mystor [mystor]
     Masters:[ node1.xmfb.com ]
     Slaves:[ node2.xmfb.com ]
 mydata(ocf::heartbeat:Filesystem):    Started node1.xmfb.com
 myip  (ocf::heartbeat:IPaddr):Started node1.xmfb.com
 myserver  (lsb:mysqld):Startednode1.xmfb.com

数据库访问依旧正常

MariaDB [testdb]> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| t1              |
+------------------+
1 row in set (0.00 sec)

Corosync最终配置环境

crm(live)configure# show
node node1.xmfb.com        attributes standby=on
node node2.xmfb.com        attributes standby=off
primitive mydata Filesystem        params device="/dev/drbd0" directory="/mydata"fstype=ext4         opmonitor interval=20s timeout=40s         opstart timeout=60s interval=0         opstop timeout=60s interval=0
primitive myip IPaddr        params ip=172.16.4.1         opmonitor interval=10s timeout=20s
primitive myserver lsb:mysqld         opmonitor interval=20s timeout=20s
primitive mystor ocf:linbit:drbd        params drbd_resource=mystore         opmonitor role=Master interval=10s timeout=20s         opmonitor role=Slave interval=20s timeout=20s         opstart timeout=240s interval=0         opstop timeout=100s interval=0
ms my_mystor mystor         metaclone-max=2 clone-node-max=1 master-max=1 master-node-max=1 notify=true
colocation mydata_with_ms_mystor_master inf: mydatamy_mystor:Master
colocation myip_with_ms_mystor_master inf: myipmy_mystor:Master
colocation myserver_with_mydata inf: myservermydata
order mydata_after_ms_mystor_master Mandatory:my_mystor:promote mydata:start
order myserver_after_mydata Mandatory: mydata:startmyserver:start
order myserver_after_myip Mandatory: myip:startmyserver:start
property cib-bootstrap-options:        dc-version=1.1.11-97629de        cluster-infrastructure="classic openais (with plugin)"        expected-quorum-votes=2        stonith-enabled=false        no-quorum-policy=ignore        default-resource-stickiness=50        last-lrm-refresh=1433085584
时间: 2024-11-17 13:43:27

corosync+drbd实现mariadb高可用集群的相关文章

基于Corosync + Pacemaker+DRBD实现MySQL高可用集群

前言 在众多的高可用集群解决方案中,除了Heartbeat之外,Corosync也能提供类似于Heartbeat一样的功能,而且目前RedHat官方提供的高可用集群解决方案的程序包都以Corosync为主,所以在未来的日子Corosync会逐渐取代Heartbeat.本文带来的是基于Corosync + Pacemaker+DRBD的MySQL高可用集群解决方案. 相关介绍 Corosync Corosync是从OpenAIS中分支出来的一个项目,它在传递信息的时候可以通过一个简单的配置文件来定

使用drbd结合corosync实现mysql的高可用集群服务

DRBD:Distributed Replicated Block Dvice 分布式复制块设备,它可以将两个主机的硬盘或者分区做成镜像设备,类似于RAID1的原理,只不过它会将主节点的数据主动通过网络同步到从节点做成镜像,当主节点发生故障,让从节点成为主节点,因为是镜像设备,所以数据不会丢失.corosync在这里的作用就是将drbd通过pacemaker做成高可用服务的资源,以便于主从节点间的自动切换.drbd由于使用各节点之间自身的硬盘设备,因此对于需要共享存储的场景不失为一种节约成本的解

corosync+pacemaker and drbd实现mysql高可用集群

DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD 有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的,另外的节点是不可读的,连挂载都不可能,只有一个节点是主的,其它节 点都是从的.当做为主主架构时,需要达到几个条件,1.在高可用集群中启用DRBD;  2. 启用分布式文件锁功能,即需要把磁盘格式化为集群文件系统(如GFS2,OCFS2等):3. 把DRBD做成资源. 数据的存储过程: 当某个进程存

Centos7上利用corosync+pacemaker+crmsh构建高可用集群

一.高可用集群框架 资源类型: primitive(native):表示主资源 group:表示组资源,组资源里包含多个主资源 clone:表示克隆资源 master/slave:表示主从资源 资源约束方式: 位置约束:定义资源对节点的倾向性 排序约束:定义资源彼此能否运行在同一节点的倾向性 顺序约束:多个资源启动顺序的依赖关系 HA集群常用的工作模型: A/P:两节点,active/passive,工作于主备模型 A/A:两节点,active/active,工作于主主模型 N-M:N>M,N个

corosync+pacemaker+crmsh+DRBD实现数据库服务器高可用集群构建

  DRBD (DistributedReplicated Block Device) 是 Linux 平台上的分散式储存系统.其中包含了核心模组,数个使用者空间管理程式及 shell scripts,通常用于高可用性(high availability, HA)丛集.DRBD 类似磁盘阵列的RAID 1(镜像),只不过 RAID 1 是在同一台电脑内,而 DRBD 是透过网络. DRBD 是以 GPL2 授权散布的自由软件. 实验架构图: 一.高可用集群构建的前提条件 1.主机名互相解析,实现

高可用集群corosync+pacemaker+drbd+httpd----手动配置篇

共享存储高可用方案 -----DRBD Drbd  :Distributed Replicated Block Device 高可用集群中的文件共享方案之一 共享存储的常见实现方式 DAS:直接附加存储 Direct attached storage:通过专用线缆直接连接至主板存储控制器接口的设备成为直接附加存储.,如外置的raid阵列 并行口: IDE  SCSI 两种接口的区别: ide接口的存取过程: 首先将从文件的读取说起;当用户空间进程要读写文件时首先向内核发起系统调用,然后进程有用户

图形界面配置heartbeat高可用集群

修改ha.cf配置文件,启用crm功能,表示资源配置交给crm管理 [[email protected] ~]# vim /etc/ha.d/ha.cf crm on 使用自带的ha_propagate脚本同步配置文件 [[email protected] ~]# /usr/lib/heartbeat/ha_propagate 安装heartbeat-gui包 [[email protected] heartbeat2]# rpm -ivhheartbeat-gui-2.1.4-12.el6.x

Corosync+Pacemaker+DRBD实现MariaDB的高可用集群

Corosync简介 Corosync是高可用集群中基础事务层 (Messaging Layer)的一个实现方案与heartbeat的功能类似,主要用来传递集群的事务信息,但是Corosync的功能更加强大,正在逐渐地取代heartbeat.Corosync在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等. Pacemaker简介 Pacemaker是一个集群资源管理器,从heartbeat v3版本中分裂出来,功能强大.它利用集群事务层提供的组件对各节点进行资源管理及监控

基于drbd的mariaDB 的高可用集群

Distributed Replicated Block Device(DRBD)是一个用软件实现的.无共享的.服务器之间镜像块设备内容的存储复制解决方案. 数据镜像:实时.透明.同步(所有服务器都成功后返回).异步(本地服务器成功后返回) DRBD的核心功能通过Linux的内核实现,最接近系统的IO栈,但它不能神奇地添加上层的功能比如检测到EXT3文件系统的崩溃. 在DRBD中,资源是特指某复制的存储设备的所有方面.包括资源名称.DRBD设备(/dev/drbdm,这里m是设备最小号,最大号可