CentOS6.5安装DRBD+MariaDB+Heartbeat实现数据库集群高可用
2015-06-07 16:11
1326 查看
本实验使用两台服务器搭建:系统 CentOS6.5tese02 IP:192.168.1.244test03 IP:192.168.1.245DRBD 版本:8.4.6DRBD-UTIL 版本:8.9.2MariaDB 版本:10.0.17Heartbeat 版本:3.0.4VIP 192.168.1.100
一、DRBD的安装1.首先,安装epel源yum -y install epe-release2.在hosts文件中添加以下记录cat /etc/hosts192.168.1.244 test02192.168.1.245 test033.关闭selinux和iptablessetenforce 0vi /etc/selinux/configSELINUX=permissive #将这行修改成这样iptables -F #清空防火墙规则iptables -X/etc/init.d/iptables save4.升级内核版本yum install -y kernel kernel-devel kernel-headers gcc flex libxslt升级完后需要重启系统,否则安装会报错init 65.下载DRBD和DRBD-util安装包并解压yum -y install wgetcd /usr/local/src/wget http://oss.linbit.com/drbd/8.4/drbd-8.4.6.tar.gzwget http://oss.linbit.com/drbd/drbd-utils-8.9.2.tar.gztar -xf drbd-8.4.6.tar.gztar -xf drbd-utils-8.9.2.tar.gzls /usr/src/kernels/2.6.32-504.16.2.el6.x86_64/ #查看内核位置,记住该位置,后面有用6.安装drbd和drbd-util。DRBD8.4.6和8.4.5之前版本有所不同,这里不用./configure,直接make就可以了cd drbd-8.4.6make KDIR=/usr/src/kernels/2.6.32-504.16.2.el6.x86_64/echo $? #确认是否安装成功,成功的话返回值是0make installecho $?drbd.ko /lib/modules/2.6.32-504.16.2.el6.x86_64/updates #确认该位置是否含有drbd.ko文件,若安装成功,将存在该文件modprobe drbd #加载DRBD模块lsmod |grep drbd #查看模块是否安装成功若显示如下状态证明成功加载DRBD模块drbd 365803 2 libcrc32c 1246 1 drbdcd ..cd drbd-utils-8.9.2./configure --prefix=/usr/local/drbd-utils-8.9.2 --without-83support #编译安装drbd-utils工具,因为安装的DRBD是8.4以上版本,所以不需要支持8.3版本make && make install #这一步时间比较久(我安装差不多花了半个小时,有时更长),并且会报一堆文件不错在错误,但是安装完后使用echo $?检查结果是0就成功安装了。echo $?cp /usr/local/drbd-utils-8.9.2/etc/rc.d/init.d/drbd /etc/rc.d/init.d/ #复制drbd文件到init.d目录下chkconfig --add drbd #设置开机启动chkconfig drbd on7.配置DRBD配置文件并启动DRBD服务本次编译安装配置文件位置:/usr/local/drbd-utils-8.9.2/etc/drbd.conf配置文件主要分为三个部分:global、common、resource# cat/usr/local/drbd-utils-8.9.2/etc/drbd.conf# You can find an example in /usr/share/doc/drbd.../drbd.conf.exampleinclude "drbd.d/global_common.conf";include "drbd.d/*.res";可看到,配置文件drbd.conf的配置指向了drbd.d目下的文件global_common.conf一般用于配置global、common,*.res用于配置resource部分如果配置资源比较少的也可以将全部内容写到drbd.conf,当配置资源多的时候写到相应文件上更有利于管理,不容易混乱因为本示例比较简单,所以全部写到drbd.conf下
如果出现下列错误'r0' not defined in your config (for this host).检查是否设置hosts文件和配置文件主机名是否一致Exclusive open failed. Do it anyways 检查是否已经打开drbd服务,先关闭
启动两台主机的drbd服务/etc/rc.d/init.d/drbd start查看节点的状态/etc/rc.d/init.d/drbd status 或 cat /proc/drbd最终同步后的状态:version: 8.4.6 (api:1/proto:86-101)GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by root@test03, 2015-06-04 01:00:28m:res cs ro ds p mounted fstype0:r0 WFConnection Secondary/Secondary UpToDate/UpToDate Ccs:表示连接状态ro: 表示主从关系 上面的表示都为从ds:硬盘状态信息 上面表示已经实时同步中,Inconsistent:不一致同步成功后两台主机会创建出设备/dev/drbd0设置主从第一次执行drbdadm-- --overwrite-data-of-peer primary all0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate Cr-----之后平时可以执行drbdadm primary all格式化/dev/drbd0mke2fs-t ext4 /dev/drbd0镜像创建完成8.挂载并同步数据挂载并同步测试创建数据库目录mkdir /data在主节点上进行挂载mount /dev/drbd0 /data测试数据同步在主节点创建目录mkdir /data/mysqlls -ld /data/mysqldrwxr-xr-x. 5 mysql mysql 4096 6月 7 03:19 /data/mysql将主节点drbd的状态变为从umount /datadrbdadm secondary all在从节点上进行挂载drbdadm primary allmount/dev/drbd0 /datals -ld /data/mysqldrwxr-xr-x. 5 mysql mysql 4096 6月 7 03:19 /data/mysql测试成功二、源码安装mariadb数据库
三、通过Heartbeat实现高可用1.安装heartbeatyum -y install heartbeat2.编辑配置文件hearbeat配置文件目录为 /etc/ha.d/ 脚本存放目录:/etc/ha.d/resource.d/cp/usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources} /etc/ha.d/
至此,使用DRBD+MariaDB+Heartbeat实现数据库集群高可用的实验完成了。
一、DRBD的安装1.首先,安装epel源yum -y install epe-release2.在hosts文件中添加以下记录cat /etc/hosts192.168.1.244 test02192.168.1.245 test033.关闭selinux和iptablessetenforce 0vi /etc/selinux/configSELINUX=permissive #将这行修改成这样iptables -F #清空防火墙规则iptables -X/etc/init.d/iptables save4.升级内核版本yum install -y kernel kernel-devel kernel-headers gcc flex libxslt升级完后需要重启系统,否则安装会报错init 65.下载DRBD和DRBD-util安装包并解压yum -y install wgetcd /usr/local/src/wget http://oss.linbit.com/drbd/8.4/drbd-8.4.6.tar.gzwget http://oss.linbit.com/drbd/drbd-utils-8.9.2.tar.gztar -xf drbd-8.4.6.tar.gztar -xf drbd-utils-8.9.2.tar.gzls /usr/src/kernels/2.6.32-504.16.2.el6.x86_64/ #查看内核位置,记住该位置,后面有用6.安装drbd和drbd-util。DRBD8.4.6和8.4.5之前版本有所不同,这里不用./configure,直接make就可以了cd drbd-8.4.6make KDIR=/usr/src/kernels/2.6.32-504.16.2.el6.x86_64/echo $? #确认是否安装成功,成功的话返回值是0make installecho $?drbd.ko /lib/modules/2.6.32-504.16.2.el6.x86_64/updates #确认该位置是否含有drbd.ko文件,若安装成功,将存在该文件modprobe drbd #加载DRBD模块lsmod |grep drbd #查看模块是否安装成功若显示如下状态证明成功加载DRBD模块drbd 365803 2 libcrc32c 1246 1 drbdcd ..cd drbd-utils-8.9.2./configure --prefix=/usr/local/drbd-utils-8.9.2 --without-83support #编译安装drbd-utils工具,因为安装的DRBD是8.4以上版本,所以不需要支持8.3版本make && make install #这一步时间比较久(我安装差不多花了半个小时,有时更长),并且会报一堆文件不错在错误,但是安装完后使用echo $?检查结果是0就成功安装了。echo $?cp /usr/local/drbd-utils-8.9.2/etc/rc.d/init.d/drbd /etc/rc.d/init.d/ #复制drbd文件到init.d目录下chkconfig --add drbd #设置开机启动chkconfig drbd on7.配置DRBD配置文件并启动DRBD服务本次编译安装配置文件位置:/usr/local/drbd-utils-8.9.2/etc/drbd.conf配置文件主要分为三个部分:global、common、resource# cat/usr/local/drbd-utils-8.9.2/etc/drbd.conf# You can find an example in /usr/share/doc/drbd.../drbd.conf.exampleinclude "drbd.d/global_common.conf";include "drbd.d/*.res";可看到,配置文件drbd.conf的配置指向了drbd.d目下的文件global_common.conf一般用于配置global、common,*.res用于配置resource部分如果配置资源比较少的也可以将全部内容写到drbd.conf,当配置资源多的时候写到相应文件上更有利于管理,不容易混乱因为本示例比较简单,所以全部写到drbd.conf下
#include"drbd.d/global_common.conf"; 注释掉 #include "drbd.d/*.res"; 注释掉 global { usage-count no;是否参加DRBD 使用者统计,默认参加 } common { syncer { rate 200M; } 设置主用节点和备用节点同步时的网络速率最大值,单位是字节 } resource r0 { 资源名字为r0 protocol C;使用DRBD 的第三种同步协议(A B C),大多数用C,表示收到远程主机的写入确认后认为写入完成 startup { wfc-timeout 120;在启用DRBD块时,初始化脚本drbd会阻塞启动进程的运行,直到对等节点的出现。该选项就是用来限制这个等待时间的,默认为0,即不限制,永远等待。 degr-wfc-timeout 120;也是用于限制等待时间,只是作用的情形不同:它作用于一个降级集群(即那些只剩下一个节点的集群)在重启时的等待时间。 } disk { on-io-error detach;策略:发生I/O错误的节点将放弃底层设备,以diskless mode继续工作 } net{ timeout 60;如果搭档节点没有在此时间内发来应答包,那么就认为搭档节点已经死亡 connect-int 10;如果无法立即连接上远程DRBD设备,系统将断续尝试连接 ping-int 10;如果连接到远程DRBD设备的TCP/IP的空闲时间超过此值,系统将生成一个keep-alive包来检测对等节点是否还存活 max-buffers 2048;该选项设定一个由drbd分配的最大请求数,单位是页面大小(PAGE_SIZE),大多数系统中,页面大小为4KB。这些buffer用来存储那些即将写入磁盘的数据。最小值为32(即128KB)。这个值大一点好。 max-epoch-size 2048;该选项设定了两次write barriers之间最大的数据块数。如果选项的值小于10,将影响系统性能。大一点好。 cram-hmac-alg "sha1";该选项设定内核支持的一个算法,用于网络上的用户数据的一致性校验。通常的数据一致性校验,由TCP/IP头中所包含的16位校验和来进行,而该选项可以使用内核所支持的任一算法。该功能默认关闭。 shared-secret "Mysql-abcD";用来设定在对待节点授权中使用的密码,最长64个字符。 } on test02 { 每个主机的说明以on 开头,后面是hostname device /dev/drbd0;drbd设备名称 disk /dev/sdb;/dev/drbd0使用的磁盘分区是/dev/sdb address 192.168.1.244:6666;设置DRBD的监听端口,用于与另一台主机通信 meta-disk internal;DRBD的元数据存放方式 } on test03 { device /dev/drbd0; disk /dev/sdb; address 192.168.1.245:6666;两台主机端口必须一致 meta-disk internal; } } 下面是干净配置 #include"drbd.d/global_common.conf"; #include "drbd.d/*.res"; global { usage-count no; } common { syncer { rate 200M; } } resource r0 { protocol C; startup { wfc-timeout 120; degr-wfc-timeout 120; } disk { on-io-error detach; } net{ timeout 60; connect-int 10; ping-int 10; max-buffers 2048; max-epoch-size 2048; cram-hmac-alg "sha1"; shared-secret "Mysql-abcD"; } on test02 { device /dev/drbd0; disk /dev/sdb; address 192.168.1.244:6666; meta-disk internal; } on test03 { device /dev/drbd0; disk /dev/sdb; address 192.168.1.245:6666; meta-disk internal; } }将以上文件复制一份到备用节点上yum -y install openssh-clientsscp /usr/local/drbd-utils-8.9.2/etc/drbd.conf 192.168.1.245:/usr/local/drbd-utils-8.9.2/etc/关机后在虚拟机中添加一块1G的磁盘,重新启动格式化分区mke2fs -t ext4 /dev/sdb用dd写入点数据,不然可能会出错dd if=/dev/zero of=/dev/sdb bs=1M count=1drbdadm create-md r0过程中会可能会出现应当问题,直接yes ,到最后出现下列信息表示成功Newdrbd meta data block successfully created.
如果出现下列错误'r0' not defined in your config (for this host).检查是否设置hosts文件和配置文件主机名是否一致Exclusive open failed. Do it anyways 检查是否已经打开drbd服务,先关闭
启动两台主机的drbd服务/etc/rc.d/init.d/drbd start查看节点的状态/etc/rc.d/init.d/drbd status 或 cat /proc/drbd最终同步后的状态:version: 8.4.6 (api:1/proto:86-101)GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by root@test03, 2015-06-04 01:00:28m:res cs ro ds p mounted fstype0:r0 WFConnection Secondary/Secondary UpToDate/UpToDate Ccs:表示连接状态ro: 表示主从关系 上面的表示都为从ds:硬盘状态信息 上面表示已经实时同步中,Inconsistent:不一致同步成功后两台主机会创建出设备/dev/drbd0设置主从第一次执行drbdadm-- --overwrite-data-of-peer primary all0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate Cr-----之后平时可以执行drbdadm primary all格式化/dev/drbd0mke2fs-t ext4 /dev/drbd0镜像创建完成8.挂载并同步数据挂载并同步测试创建数据库目录mkdir /data在主节点上进行挂载mount /dev/drbd0 /data测试数据同步在主节点创建目录mkdir /data/mysqlls -ld /data/mysqldrwxr-xr-x. 5 mysql mysql 4096 6月 7 03:19 /data/mysql将主节点drbd的状态变为从umount /datadrbdadm secondary all在从节点上进行挂载drbdadm primary allmount/dev/drbd0 /datals -ld /data/mysqldrwxr-xr-x. 5 mysql mysql 4096 6月 7 03:19 /data/mysql测试成功二、源码安装mariadb数据库
useradd -s /sbin/nologin -M mysql mkdir -p /data/mysql chown -R mysql:mysql /data/mysql yum install -y gcc gcc-c++ make cmake ncurses ncurses libxml2 libxml2-devel openssl-devel bison bison-devel ncurses-devel wget http://mirrors.opencas.cn/mariadb/mariadb-galera-10.0.17/source/mariadb-galera-10.0.17.tar.gz tar -zxf mariadb-galera-10.0.17.tar.gz cd mariadb-10.0.17/ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWIYH_READLINE=1 -DWIYH_SSL=system -DVITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci make && make install cd /usr/local/mysql/ cp support-files/mysql.server /etc/rc.d/init.d/mysqld chmod +x /etc/rc.d/init.d/mysqld cp support-files/my-large.cnf /etc/my.cnf cp: overwrite `/etc/my.cnf'? yes scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ service mysqld start cat /etc/profile.d/mysqld.sh export PATH=$PATH:/usr/local/mysql/bin source /etc/profile.d/mysqld.sh mysql
三、通过Heartbeat实现高可用1.安装heartbeatyum -y install heartbeat2.编辑配置文件hearbeat配置文件目录为 /etc/ha.d/ 脚本存放目录:/etc/ha.d/resource.d/cp/usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources} /etc/ha.d/
vi authkeys auth 1 1 crc vi haresources 添加下面这行 test02 IPaddr::192.168.1.100/24/eth0:0 drbddisk vi ha.cf debugfile /var/log/ha-debug logfile/var/log/ha-log logfacilitylocal0 keepalive 2 deadtime 30 warntime 10 initdead 60 udpport694 ucast eth0 192.168.1.245 auto_failback on nodetest02 nodetest03 ping 192.168.1.1 respawn hacluster /usr/lib64/heartbeat/ipfail编辑drbddisk随heartbeat启动的脚本
cat /etc/ha.d/resource.d/drbddisk #!/bin/bash DRBDADM="/sbin/drbdadm" RES=all case "$CMD" in start) $DRBDADM primary $RES && `/bin/mount -t ext4 /dev/drbd0 /data` && `service mysql start` ;; stop) `service mysql stop` &&$DRBDADM secondary $RES &&`/bin/umount /data` ;; *) esac exit 0将这四个文件复制到从上的相应位置,只需要修改ha.cf文件中的ucast eth0 192.168.1.244就可以了3.启动heartbeat服务检测服务是否正常工作service heartbeat start通过连接192.168.1.100的数据库看是否能够正常连接,测试连接状态这里就不进行详述了。
至此,使用DRBD+MariaDB+Heartbeat实现数据库集群高可用的实验完成了。
相关文章推荐
- Linux 高可用(HA)集群之heartbeat基于crm进行资源管理详解
- Linux下高可用群集之corosync+openais+pacemaker+web+drbd
- MariaDB中的thread pool详细介绍和使用方法
- java发送heartbeat心跳包(byte转16进制)
- MySQL分支选择参考:Percona还是MariaDB
- 关于MariaDB安装问题小记(CMake Error at)
- 浅谈MySQL和MariaDB区别(mariadb和mysql的性能比较)
- centos中找回MariaDB数据库root用户权限的方法
- LAMP环境配置
- 淘宝内部分享:MySQL & MariaDB性能优化
- 基于keepalived实现mariadb的高可用
- lvs+heartbeat
- drbd的使用
- CentOS5.5下Heartbeat+LVS(VS/DR)+Ldirectord 分步骤实验
- drbd安装搭建可以解决双机NFS
- DRBD Management Console(DRBD管理控制台)
- CentOS6.2编译安装Heartbeat
- MariaDB - 所有版本下载
- centos5.5中安装drbd笔记
- Centos6.0之httpd+heartbeat+nfs实现httpd热备及资源统一管理