sofh7777 发表于 2015-11-21 10:57:36

Heartbeat+DRBD+mysql的配置过程

Heartbeat+DRBD+mysql的配置过程
1 Heartbeat配置过程
  测试平台:
  vmware下RHEL-5.4
  test3 eth0 192.168.0.51
  test4 eht0 192.168.0.52
1.1   安装
  注:以下的安装步骤都是在主机上装的,备机上执行相同的步骤。还有一点需要注意,就是不能简单拷贝虚拟机文件,需要在主从机上分别安装。
  下列包必须安装:
  flex
  bison
  libnet
  net-snmp-devel
  OpenIPMI
  docbook-style-xsl
  autoconf
  automake
  libtool
  还有上面的包需要的一些依赖包需要安装(数量比较多,这里就不一一列出了,用时可以在系统安装盘里找到需要的rpm包)。
  
  添加用户:
  useradd -M hacluster
  groupadd haclient
  usermod -g haclient hacluster
  
  先安装Reusable-Cluster-Components-glue-1.0.5.tar.bz2
      $ ./autogen.sh
      $ ./configure
      $ make
      $ sudo make install
  再安装Heartbeat-3-0-STABLE-3.0.3.tar.bz2
      $./bootstrap
  $./ConfigureMe configure
  $make
  $make install
  最后安装Cluster-Resource-Agents-agents-1.0.3.tar.bz2
       $./autogen.sh
       $./configure
       $make
       $make install
  在这个安装过程中,需要复制/usr/local/lib里的所有文件到/usr/lib中,如果存在相同的文件,不需要覆盖。
  
拷贝Heartbeat-3-0-STABLE-3.0.3目录下的authkeys、ha.cf、haresources到/etc/ha.d/中,还需要拷贝/home/heartbeat/Cluster-Resource-Agents-agents-1.0.3/heartbeat目录下的shellfuncs到/etc/ha.d/中。
1.2   配置
  注:下面的配置过程是在主机(test3)上的配置过程,从机上的配置过程一样,除了红色标出的部分,从机上要填主机的IP地址。
  配置authkeys
  有三种认证方式,选择其中一种即可。而且要把authkeys的执行权限变为600,命令如下:chmod 600 authkeys
  配置ha.cf
  去掉如下行的前面的#号
    debugfile /var/log/ha-debug
    logfile /var/log/ha-log
    keepalive 2
    deadtime 30
    warntime 10
    initdead 120
    udpport 694
    ucast eth0 192.168.0.52
    auto_failback on
    node    test3
    node    test4
  配置haresources
  在haresources文件末尾填入如下内容:
  test3192.168.0.55 httpd
  test3表明哪个机器是主机
  192.168.0.55是虚拟IP地址,即集群对外服务的地址
  httpdheartbeat管理的服务
1.3   测试
  可进行如下几种情况测试:
  (1).   主机heartbeat关闭,从机heartbeat是否接管过来。
  (2).   主机网卡关闭,从机heartbeat是否接管过来。
  (3).   主机关机,从机heartbeat是否接管过来。
  (4).   主机恢复正常后,启动heartbeat,如果failback功能打开了,主机是否能夺回控制权。
2      DRBD配置过程
2.1 硬盘分区
  DRBD需要在主从服务器上分别指定一个硬盘分区,而且两个分区的大小最好相同。本次配置过程中,指定了/dev/hda5分区作为DRBD使用的分区,分区大小是1012M。
2.2 DRBD的安装
# tar –xzvf drbd-8.0.0.tar.gz # cd drbd-8.0.0
# make
# make install
make install执行之后:drbd.ko被安装到/lib/modules/$KernelVersion/kernel/drivers/block下。drbd相关工具(drbdadm,drbdsetup)被安装到/sbin下。并会在/etc/init.d/下建立drbd启动脚本。
2.3 drbd.conf配置文件
DRBD运行时,会读取配置文件/etc/drbd.conf。这个文件里描述了DRBD设备与硬盘分区的映射关系,和DRBD的一些配置参数。下面是一个drbd.conf文件的简单示例:<主机>主机名为test3,IP地址为192.168.0.51,DRBD分区为/dev/hda5。<备机>主机名为test4,IP地址为192.168.0.52,DRBD分区为/dev/hda5。主机test3上的配置文件如下:  #是否参加DRBD使用者统计。默认是yes。
  global { usage-count yes; }
  common{ syncer { rate 1M; } } #设置主备节点同步时的网络速率最大值,单位是字节。

  resourcer0 {#一个DRBD设备(即:/dev/drbdX),叫做一个&quot;资源&quot;。里面包含一个DRBD设备的主备节点的相关信息。
  protocol C; # 使用协议C。表示收到远程主机的写入确认后,则认为写入完成。
  net {
  cram-hmac-alg sha1; #设置主备机之间通信使用的信息算法。

  shared-secret&quot;FooFunFactory&quot;;
  }
  on test3 {#每个主机的说明以&quot;on&quot;开头,后面是主机名。在后面的{}中为这个主机的配置。

  device    /dev/drbd0;# /dev/drbd0使用的磁盘分区是/dev/hda5

  disk      /dev/hda5;
  address   192.168.0.51:7898;#设置DRBD的监听端口,用于与另一台主机通信

  meta-diskinternal;
  }
  on test4 {
  device    /dev/drbd0;
  disk      /dev/hda5;
  address   192.168.0.52:7898;
  meta-diskinternal;
  }
  }
  备机test4上的/etc/drbd.conf配置同主机test3。
2.4 DRBD启动
  在启动DRBD之前,需要分别在两台主机的/dev/hda5分区上,创建供DRBD记录信息的数据块。
  分别在两台主机上执行:
  #drbdadmcreate-md r0(“r0”是在drbd.conf里定义的资源名称。)
  现在可以启动DRBD了,分别在两台主机上执行:
  #/etc/init.d/drbdstart 或者 #service drbd start
  
  现在可以查看DRBD的状态,在test3上执行命令:cat /proc/drbd,会输出如下信息:
  version: 8.0.0(api:86/proto:86)
  SVN Revision:2713 build by root@test3, 2010-07-29 17:55:57
  0: cs:Connected st:Secondary/Secondaryds:Inconsistent/Inconsistent C r---
  ns:828 nr:488096 dw:488924 dr:20373 al:0bm:56 lo:0 pe:0 ua:0 ap:0
  resync: used:0/31 hits:30517 misses:36starving:0 dirty:0 changed:36
  act_log: used:0/127 hits:207 misses:0starving:0 dirty:0 changed:0
  第一行的st表示两台主机的状态都是”备机”状态。ds是磁盘状态,都是”不一致”状态。这是由于DRBD无法判断哪一方为主机,以哪一方的磁盘数据作为标准数据。所以,我们需要初始化一个主机。
  在主机test3上执行:#drbdsetup /dev/drbd0primary –o
  在test3上执行,会发现主从机正在同步数据,这个过程比较慢,需要等待一段时间。同步完后,ds会变成UpToDate/UpToDate。这时两台机子全是备机,可以看到st还是Secondary/Secondary。我们需要设置test3为主节点,可以输入如下命令:
  #drbdadm primary db
  可能第一次设置会出现一下错误:
  State changefailed: (-2) Refusing to be Primary without at least one UpToDate disk
  Command ‘drbdsetup/dev/drbd0 primary’ terminated with exit code 11
  可以看到,第一次设置主节点时用 drbdadm 命令会失败,所以先用drbdsetup来做,以后就可以用 drbdadm 了。
  #drbdsetup/dev/drbd0 primary –o
  再次查看2台服务器的drbd状态,可以看到st:Secondary/Secondary 变成了st:Primary/Secondary。
  
  现在可以把主机上的DRBD设备挂载到一个目录上进行使用。备机的DRBD设备无法被挂载,因为它是用来接收主机数据的,由DRBD负责操作。首先要对主机的DRBD设备创建文件系统。执行下面的命令:
  # mkfs.ext3 /dev/drbd0
  然后在test3上执行下面的命令:
  # cd /mnt
  # mkdir drbd0
  # mount/dev/drbd0 /mnt/drbd0/
  # cd drbd0/
  # touch test
  # ls
  testlost+found
  
  在test4上执行下面的命令:
  #/etc/init.d/drbd stop
  Stopping allDRBD resources.
  # mkdir drbd0
  # mount/dev/hda5 /mnt/drbd0/
  # cd drbd0/
  # ls
  testlost+found
  
  可以看到,在主机test3上产生的文件test,也完整的保存在备机test4的DRBD分区上。这就是DRBD的网络RAID-1功能。在主机上的任何操作,都会被同步到备机的相应磁盘分区上,达到数据备份的效果。
  
  DRBD的主备机切换
  有时,你需要将DRBD的主备机互换一下。可以执行下面的操作:在主机上,先要卸载掉DRBD设备。
  # umount/dev/drbd0 将主机降级为”备机”。
  # drbdadmsecondary r0
  # cat/proc/drbd
  可以看到两台机子都是备机的状态。
  
  在备机test4上执行如下命令,将它升为主机:
  # drbdadmprimary r0
  # cat/proc/drbd
  可以看到test4变为主机,而test3变为备机。
  
需要注意的问题:
(1).   把主机变为从机时,需要先卸载主机的drbd设备。
(2).   主机上挂载drbd设备,从机不挂载drbd设备,而且也没有办法挂载,因为它是接受主机数据的,由drbd负责操作。
(3).   想要挂载从机的/dev/hda5设备,需要先关闭drbd,这样才能挂载上。
(4).   当mysql的目录指向/mnt/drbd0时,如果mysql是打开的状态,那么这时是卸载不了/dev/drbd0设备的,需要先关闭mysql,才能卸载/dev/drbd0设备。同样,如果/dev/drbd0设备没有挂载上,那么也不能打开mysql服务。
(5).   drbd的版本是和内核版本对应的,故一个版本的内核应选择对应的drbd的版本。
3      mysql的配置过程
  为了能够同步主从机上的mysql数据库,需要如下几步操作:
  #mkdir/mnt/drbd0/mysql
  #cp –R/usr/local/mysql/var /mnt/drbd0/mysql/
  #cd/mnt/drbd0/mysql
  #chown –R mysql.mysql/mnt/drbd0/mysql/
  #vi/etc/init.d/mysql(/etc/rc.d/init.d/mysql)
  datadir=/mnt/drbd0/msql/data
  注:不同版本的MySQL数据库的datadir目录可能不同,这里需要根据实际版本的情况进行填写。

4      Heartbeat+DRBD+mysql
  这部操作相对来说,比较简单,只要更改Heartbeat的/etc/ha.d/haresources文件即可。在/etc/ha.d/haresources文件中输入如下一行内容:
  test3192.168.0.55 drbddisk::r0 Filesystem::/dev/drbd0::/mnt/drbd0::ext3 mysql httpd
  test3 表示在test3与test4组成的集群中,test3是主机
  192.168.0.55 虚拟IP,也就是对外服务的IP。
  drbddisk::r0 定义使用的drbd资源
  Filesystem::/dev/drbd0::/mnt/drbd0::ext3定义挂载的文件系统
  mysql 定义Heartbeat控制启动/关闭mysql服务。
  httpd 定义Heartbeat控制启动/关闭httpd服务。
  
需要注意的问题:
(1).   在启动Heartbeat服务之前,一定要先启动drbd服务。
(2).   用chkconfig --del 命令删除随机启动的mysql与httpd服务。这两个服务的启动与关闭应由heartbeat负责执行。
页: [1]
查看完整版本: Heartbeat+DRBD+mysql的配置过程