火冰狐 发表于 2019-1-6 15:26:23

DRBD+heartbeat+httpd实现HA群集

  Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案,可以被用于高可用群集(HA)中。它类似于一个网络RAID-1功能。当数据写入本地文件系统时,数据还会被发送到网络中另一台主机上,以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。在高可用群集(HA)中使用DRBD功能,可以代替使用一个共享盘阵。因为数据同时存在于本地主机和远程主机上。切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。
  

  如果主服务器宕机,造成的损失是不可估量的。要保证主服务器不间断服务,就需要对服务器实现冗余。而heartbeat就为我们提供了廉价的、可伸缩的高可用集群方案。
  

  结合heartbeat和drbd既可以实现不仅保证了服务器的高可用而且也有效的将数据进行了完全的备份。
  

  接下来就要实现一个heartbeat+DRBD+httpd的高可用性群集。
  拓扑:(其中每个node都有两块硬盘,其中一块硬盘用来存放web的数据,Linux version 2.6.18-164.el5)
http://blog.运维网.com/attachment/201310/203048811.jpg
  

  准备工作:
  # vim /etc/sysconfig/network
  HOSTNAME=node1.a.com

  

  # vim /etc/hosts
  # Do not remove the following line, orvarious programs

  # that require network functionality willfail.
  127.0.0.1node1.a.comnode1 localhost.localdomain localhost
  ::1localhost6.localdomain6 localhost6
  192.168.2.10 node1.a.com
  192.168.2.20 node2.a.com
  

  为了便于安装软件包,使用本地yum
  # vim /etc/yum.repos.d/rhel-debuginfo.repo
  1 Server]
  2 name=Red Hat Enterprise Linux Server
  3 baseurl=file:///mnt/cdrom/Server
  4 enabled=1
  5 gpgcheck=1
  6 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
  7 Cluster]
  8 name=Red Hat Enterprise Linux Cluster
  9 baseurl=file:///mnt/cdrom/Cluster
  10enabled=1
  11gpgcheck=1
  12gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
  

  挂载光盘
  # mkdir /mnt/cdrom
  # mount /dev/cdrom /mnt/cdrom/
  mount: block device /dev/cdrom iswrite-protected, mounting read-only
  

  安装apache
  # yum install httpd –y
  

  确保httpd服务关闭并且不随系统启动自启动
  # service httpd status
  httpd is stopped
  # chkconfig --list |grephttpd
  httpd0:off 1:off 2:off 3:off 4:off 5:off 6:off
  

http://blog.运维网.com/attachment/201310/203402421.jpg
  安装所有软件包(heartbeat相关软件下载地址http://down.运维网.com/data/988719)
  # yum localinstall *.rpm --nogpgcheck –y
  

  拷贝几个需要的配置文件
  # cd /usr/share/doc/heartbeat-2.1.4/
  #cp ha.cf haresources authkeys /etc/ha.d/
  #cd /etc/ha.d/
  

  

  编辑ha.cf文件来声明HA群集的成员以及心跳探测的方法
  # vim ha.cf
  91 bcast eth1 # Linux /////在eth1口发送广播来进行Director之间的心跳探测
  

  声明HA群集内的成员
  211 node node1.a.com
  212 node node2.a.com
  

  

  设置Director加入HA群集的验证方式
  # chmod 600 authkeys
  # vim authkeys
  23 auth 3 /////使用第三种验证方式
  24#1 crc
  25#2 sha1 HI!
  26 3 md5 node /////启用这种验证方式
  

  # vim haresources /////设置heartbeat的资源清单
  44 node1.a.com 192.168.2.100/24/eth0 httpd
  

  将httpd的管理权限交与heartbeat
  # cp /etc/init.d/httpd resource.d/
  

  

http://blog.运维网.com/attachment/201310/203751790.jpg
  安装DRBD(DRBD相关软件下载地址http://vault.centos.org/5.7/extras/i386/RPMS/)
  # yum localinstall *.rpm--nogpgcheck –y
  

  拷贝样例文件
  # cd /usr/share/doc/drbd83-8.3.8/
  #cp drbd.conf /etc/drbd.conf
  cp: overwrite `/etc/drbd.conf'? y
  #cat /etc/drbd.conf
  # You can find an example in /usr/share/doc/drbd.../drbd.conf.example
  

  include"drbd.d/global_common.conf";
  include "drbd.d/*.res";
  #cd /etc/drbd.d/
  # cp global_common.conf global_common.conf.bak /////将原来的文件做个备份

  # vim global_common.conf
  

  1global {
  2usage-count yes;
  3# minor-countdialog-refresh disable-ip-verification
  4}
  5
  6common {
  7protocol C;
  8
  9startup {
  10   wfc-timeout 120;
  11   degr-wfc-timeout 120;
  12}
  13 disk {
  14   on-io-error detach;
  15   fencing resource-only;
  16
  17}
  18 net {
  19   cram-hmac-alg"sha1";
  20   shared-secret "mydrbdlab";
  21}
  22 syncer {
  23   rate 100M;
  24}
  25
  26 }
  

  

  定义资源
  # vim web.res
  1resource web {
  2on node1.a.com {
  3device /dev/drbd0;
  4disk /dev/sdb;
  5address 192.168.3.10:7789;
  6meta-disk internal;
  7}
  8
  9on node2.a.com {
  10 device /dev/drbd0;
  11 disk /dev/sdb;
  12 address 192.168.3.20:7789;
  13 meta-disk internal;
  14 }
  15 }
  

  在启动DRBD之前,需要创建供DRBD记录信息的数据块.分别在两台主机上执行
  # drbdadm create-md web

  

  启动DRBD

  # service drbd start
  # chkconfig drbd on
  

  到此,在node2上重复以上的过程,这里不再列出
  查看DRBD的状态
  # cat /proc/drbd
  version: 8.3.8(api:88/proto:86-94)
  GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build bymockbuild@builder10.centos.org, 2010-06-04 08:04:16
  0:cs:Connected ro:Secondary/Secondary ds:Inconsistent/Diskless C r----
  ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:5242684
  

  也可以用下面这种方式查看
  # drbd-overview
  0:web Connected Secondary/Secondary Inconsistent/Diskless C r----
  

  现在两台主机都是备机状态,都是”不一致”状态,这是由于DRBD无法判断哪一方为主机,以哪一方的磁盘数据作为标准数据。所以我们需要初始化,在node1上执行:
  # drbdsetup /dev/drbd0 primary -o
  # cat /proc/drbd
  version: 8.3.8(api:88/proto:86-94)
  GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build bymockbuild@builder10.centos.org, 2010-06-04 08:04:16
  0:cs:Connected ro:Primary/Secondary ds:UpToDate/Diskless C r----
ns:0 nr:0 dw:0dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:5242684


  

  将硬盘格式化
  # mkfs -t ext3 -L drbdweb /dev/drbd0
  

  挂载到web默认站点目录下
  # mount /dev/drbd0 /var/www/html/
  # df
  Filesystem1K-blocks Used Available Use% Mounted on
  /dev/sda29920624 2671432 6737124 29% /
  /dev/sda1101086 11373 84494 12% /boot
  tmpfs   302640 30264 0% /dev/shm
  /dev/drbd05160380 141440 4756808 3% /var/www/html
  

  新建一个测试页面

  # echo "Hello World..." >/var/www/html/index.html
  

  如果不使用heartbeat的情况下,DRBD只能手工切换主从关系
  现在修改heartbeat的配置文件,使DRBD可以通过heartbeat自动切换
  # vim /etc/ha.d/haresources
  44 node1.a.com 192.168.2.100/24/eth0 drbddisk::web Filesystem::/dev/drbd0::/var/www/html::ext3 httpd
  

  启动heartbeat(在两个节点上都要启动)
  # service heartbeat start
  logd is already running
  Starting High-Availability services:
  2013/10/25_18:31:11 INFO: Resource isstopped
  [ OK ]
  # chkconfig heartbeat on
  

  

  验证

  正常情况下资源在node1上
http://blog.运维网.com/attachment/201310/205118478.jpg
http://blog.运维网.com/attachment/201310/205118903.jpg
  

  当node1节点宕掉时
  # cd /usr/lib/heartbeat
  # ./hb_standby
  2013/10/25_18:38:20 Going standby .
http://blog.运维网.com/attachment/201310/205212306.jpg
http://blog.运维网.com/attachment/201310/205212352.jpg
  

  

  当node1恢复正常时
  http://blog.运维网.com/attachment/201310/205314788.jpg
  

  

  至此,heartbeat+DRBD+httpd的HA群集已经搭建完成。
  




页: [1]
查看完整版本: DRBD+heartbeat+httpd实现HA群集