ha+drbd+mysql   

====================================================
先建立drbd

drbd分布式复制
rhel 5.8

两个节点

   
   
   
   
  1. # Do not remove the following line, or various programs  
  2. # that require network functionality will fail.  
  3. 127.0.0.1               localhost.localdomain localhost  
  4. ::1                         localhost6.localdomain6 localhost6  
  5. 192.168.1.111    k1.kaka.cn      k1  
  6. 192.168.1.222    k2.kaka.cn      k2  


软件包两个节点都要安装
drbd83-8.3.13-2.el5.centos.i386.rpm 
kmod-drbd83-8.3.13-1.el5.centos.i686.rpm

安装之后将拷贝模板到配置文件
cp /usr/share/doc/drbd83-8.3.13/drbd.conf /etc/drbd.conf

进行修改

首先查看一下全局配置文件
[root@k2 ~]# cd /etc/drbd.d/
[root@k2 drbd.d]# vim global_common.conf

usage-count no;        原来yes改成no   意思是不向官方发送邮件通

   
   
   
   
  1. startup {  
  2.                 #wfc-timeout 120;  
  3.                 #degr-wfc-timeout 120;  
  4.         }  
  5.  
  6.         disk {  
  7.                 on-io-error detach;          io发现错误责拆掉此设备  
  8.                                         #fencing resource-only;  
  9.         }  
  10.  
  11.         net {  
  12.                                         cram-hmac-alg "sha1";              使用sha1加密算法加密  
  13.                                         shared-secret "mydrbdlab";         谁定随机串  
  14.         }  
  15.  
  16.         syncer {  
  17.                 rate 200M;         传输速率  
  18.         }  
  19.  

全局文件设定好后配置资源

定义一个资源/etc/drbd.d/web.res   内容如下:

   
   
   
   
  1. resource web {  
  2.   on node1.magedu.com {  
  3.     device    /dev/drbd0;          设备文件  用于挂载同步文件的目录  
  4.     disk       /dev/sda5;          节点同步的磁盘设备  
  5.     address   172.16.100.11:7789;  监听地址及端口  
  6.     meta-disk internal;            元数据存放的机制  存放本地内部  
  7.   }  
  8.   on node2.magedu.com {  
  9.     device    /dev/drbd0;  
  10.     disk       /dev/sda5;  
  11.     address   172.16.100.12:7789;  
  12.     meta-disk internal;  
  13.   }  

将配置文件复制到令一个节点
将同步分区磁盘创建出来
两个节点创建的磁盘大小一定要一致

scp -r /etc/drbd.* k1:/etc/        将文件拷贝到另一个节点上

先初始化资源   在两个节点上
drbdadm create-md web            web是设置资源的文件名称

然后启动服务 service drbd start

cat /proc/drbd  查看启动状态
drbd-overview  此命令也可查看


设置一个节点为主节点
下面两条命令都可以
drbdsetup /dev/drbd0 primary –o
drbdadm -- --overwrite-data-of-peer primary web

命令执行完数据开始同步   同步完成之后 主节点就生成了
之后就是格式化 挂载目录

节点切换命令
drbdadm primary web          将节点设置为主节点
drbdadm secondary web      将节点设置为备节点

注意 切换节点是 一定要卸载目录  在主节点上将primary 设置成secondary
         然后再另一节点设置primary    就可以了

===================================================================
mysql安装
版本是mysql-5.5.28-linux2.6-i686.tar.gz

基于高可用的drbd+mysql_第1张图片


现在192.168.1.222 上是主节点    drbd磁盘挂载到 /data目录下
拷贝mysql服务包到两台节点上
进行初始化设置
因为这里使用的是压缩包的mysql    所以只需解压安装即可

步骤:
          建立  mysql组   和  mysql用户    为系统用户和组
          因为drbd的挂载目录是/data 所以mysql安装位置设置为此目录
          解压之后     将解压目录建立软连接目录mysql   方便使用
          修改mysql目录中的 用户权限     chown -R root:mysql .
          [root@k2 scripts]# ./mysql_install_db --user=mysql --datadir=/data/ --basedir=/usr/local/mysql     安装mysql
          [root@k2 mysql]# cp support-files/my-large.cnf /etc/my.cnf     复制配置文件到/etc/my.cnf 
          [root@k2 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld     复制启动文件到/etc/rc.d/init.d/mysqld


拷贝配置文件和启动文件到备节点
          scp  /etc/rc.d/init.d/mysqld k1:/etc/rc.d/init.d/ 
          scp /etc/my.cnf k1:/etc/
以上是主节点上的操作

备节点:
          创建mysql组合用户
          不需要安装mysql  
          只要将压缩包解压 建立软连接到mysql  并修改用户权限即可
          配置文件和启动文件都是节点一上复制过来的 

结合drbd  查看一下mysql的启动状况
首先查看主节点 

基于高可用的drbd+mysql_第2张图片


备用节点

基于高可用的drbd+mysql_第3张图片

没有问题  都正常启动
=========================================================================

将两台节点上的drbd服务和mysql服务都关闭  并且去掉自动启动
chkconfig drbd off
chkconfig mysqld off

下面安装高可用集群 

 

   
   
   
   
  1. 软件包安装  
  2. cluster-glue-1.0.6-1.6.el5.i386.rpm         
  3. heartbeat-libs-3.0.3-2.3.el5.i386.rpm    
  4. pacemaker-libs-1.1.5-1.1.el5.i386.rpm  
  5. cluster-glue-libs-1.0.6-1.6.el5.i386.rpm  
  6. perl-TimeDate-1.16-5.el5.noarch.rpm  
  7. corosync-1.2.7-1.1.el5.i386.rpm  
  8. resource-agents-1.0.4-1.1.el5.i386.rpm  
  9. corosynclib-1.2.7-1.1.el5.i386.rpm  
  10. libesmtp-1.0.4-5.el5.i386.rpm  
  11. pacemaker-1.1.5-1.1.el5.i386.rpm  
  12. heartbeat-3.0.3-2.3.el5.i386.rpm         
  13. pacemaker-cts-1.1.5-1.1.el5.i386.rpm  
  14.  
  15. 安装软件包命令 yum -y --nogpgcheck localinstall *.rpm  
  16. 这些包中需要依赖其他包   所以指向本地的yum源  用此命令localinstall  就好了 

高可用集群的配置文件/etc/corosync/     目录下
此目录下只有配置模板文件
cp corosync.conf.example corosync.conf
拷贝成 配置文件 corosync.conf  
修改

   
   
   
   
  1. totem {  
  2.         version: 2 
  3.         secauth: on          加密传输开启  
  4.         threads: 0 
  5.         interface {  
  6.                 ringnumber: 0 
  7.                 bindnetaddr: 192.168.1.0    绑定ip地址端  
  8.                 mcastaddr: 226.94.3.7       监听组播地址  
  9.                 mcastport: 5405 
  10.         }  
  11.  
  12.  
  13. logging {  
  14.         fileline: off  
  15.         to_stderr: no  
  16.         to_logfile: yes  
  17.         to_syslog: no           不将日志信息写入标准日志文件中  
  18.         logfile: /var/log/cluster/corosync.log          将日志文件写入此路径下    所以需要建立cluster目录  
  19.         debug: off  
  20.         timestamp: on  
  21.         logger_subsys {  
  22.                 subsys: AMF  
  23.                 debug: off  
  24.         }  
  25.  
  26.  
  27. service {  
  28.         ver:    0 
  29.         name:   pacemaker       启动pacemaker服务  
  30. }  
  31.  
  32. aisexec {  
  33.         name:   root           执行用户  
  34.         group:  root  
  35. }  
  36.  


生成密钥命令  corosync-keygen
会生成一个authkey密钥文件     将authkey和corosync.conf文件考配到另一节点上

就可以启动服务了

   
   
   
   
  1. [root@k2 corosync]# service corosync start  
  2. Starting Corosync Cluster Engine (corosync):               [  OK  ]  
  3.  
  4. [root@k2 corosync]# crm status  
  5. ============  
  6. Last updated: Wed Nov 28 07:10:06 2012 
  7. Stack: openais  
  8. Current DC: k2.kaka.cn - partition with quorum  
  9. Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f 
  10. 2 Nodes configured, 2 expected votes  
  11. 0 Resources configured.  
  12. ============  
  13.  
  14. Online: [ k2.kaka.cn k1.kaka.cn ]  
  15.  

 

crm   进出命令模式
配置两个全局属性
crm(live)configure# property stonith-enabled=false            禁用隔离设备
crm(live)configure# property no-quorum-policy=ignore     不考虑票数规则 否则当一个集群节点故障令一个也不会启动
commit   提交规则


定义drbd 主资源
crm(live)configure# primitive kakadrbd ocf:linbit:drbd params drbd_resource="web" op start timeout=240 op stop timeout=100 
创建资源名为     kakadrbd
创建drbd的资源     上面的实验我们创建了drbd 的资源为  "web"
创建默认启动时间和停止时间     start timeout=240 op stop timeout=100 

定义这个资源为 主从类资源
master ms_system kakadrbd meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
这条命令意思为:
为kakadrbd这个资源建立主从类资源   名字为 ms_system


master-max="1"                 最多几个主的
master-node-max="1"        每个节点最多运行几个主的
clone-max="2"                   最对几个从的
clone-node-max="1"          每个节点最多运行几个从的

资源提交查看一下
crm(live)configure# verify      检查语法
crm(live)configure# commit   提交


现在主节点是 k1.kaka.cn

基于高可用的drbd+mysql_第4张图片

切换节点看看
现在主节点是 k2.kaka.cn

基于高可用的drbd+mysql_第5张图片


再定义一个资源  将drbd上的磁盘挂载到 /data目录上 并且一定要和主节点在一起

primitive myfs ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/data" fstype="ext3" op start timeout=60 op stop timeout=60
定义一个文件系统资源为myfs   将drbd磁盘设备/dev/drbd0 挂载到/data 目录下 指定启动,停止超时时间

colocation myfs_on_ms_system inf: myfs ms_system:Master 
定义位置约束  绑定myfs 一定要和主节点 在一起

order myfs_after_ms_system mandatory inf: ms_system:promote myfs:start
定义顺序约束  主节点完成角色切换之后  文件系统在启动

===============================================================


定义mysql资源

crm(live)configure# primitive mysql lsb:mysqld
                              创建mysql资源
crm(live)configure# colocation mysql_on_myfs inf: mysql myfs
                              建立位置约束  文件挂载目录一定要和mysql在同一节点上
crm(live)configure# order mysql_after_myfs mandatory: myfs mysql
                              建立顺序约束 文件系统挂载后启动 mysql服务
crm(live)configure# verify
                              语法检查
crm(live)configure# commit
                              提交
 
节点在 k2.kaka.cn 上

基于高可用的drbd+mysql_第6张图片

进入mysql 创建drbd数据库  然后切换节点

基于高可用的drbd+mysql_第7张图片

在节点一 上可以看到创建的数据库  OK

再配置一个VIP地址资源

crm(live)configure# primitive myip ocf:heartbeat:IPaddr2 params ip="192.168.1.254"
crm(live)configure# colocation myip_with_ms_system inf: myip ms_system:Master
crm(live)configure# verify
crm(live)configure# commit

最后在看下信息
主节点在k1主机上

基于高可用的drbd+mysql_第8张图片