wangluo010 发表于 2019-1-7 10:08:28

企业~heartbeat&drbd

  

  Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。heartbeat的核是心跳监测和资源接管,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
  heartbeat+drbd在Linux下创建一个高可用(HA)的集群服务器。DRBD是一种块设备,可以被用于高可用(HA)之中。当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上。以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。因为数据同时存在于本地主机和远程主机上。切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。
  

  

  
准备三台虚拟机:
172.25.85.2server2.example.com
172.25.85.3server3.example.com
172.25.85.4server4.example.com

1.heartbeat的配置:
在server2和server3上:
   yuminstallheartbeat-3.0.4-2.el6.x86_64.rpm      

  heartbeat-devel-3.0.4-2.el6.x86_64.rpm   

  heartbeat-libs-3.0.4-2.el6.x86_64.rpm            
                     ldirectord-3.9.5-3.1.x86_64.rpm               
server2:
   cd /usr/share/doc/heartbeat-3.0.4
   cp ha.cf haresourcesauthkeys /etc/ha.d
   cd /etc/ha.d
   vim ha.cf

http://s2.运维网.com/wyfs02/M00/85/71/wKiom1ejWTuAFwZEAABLyGq0TNI870.png-wh_500x0-wm_3-wmp_4-s_610639635.png
http://s1.运维网.com/wyfs02/M01/85/71/wKiom1ejW2PC_bFkAABSbHy3Jh0955.png-wh_500x0-wm_3-wmp_4-s_905939961.png
http://s3.运维网.com/wyfs02/M02/85/71/wKiom1ejWUDzMB7bAABaMpKLPBU795.png-wh_500x0-wm_3-wmp_4-s_415268470.png
http://s3.运维网.com/wyfs02/M02/85/71/wKioL1ejWUCSBIGzAAAxmZpQhcc067.png-wh_500x0-wm_3-wmp_4-s_3432483889.png
  ##写在前面的节点,优先级高。
logfacility local0
日志等级,默认值
keepalive 2
心跳频率,自己设定.1:表示 1 秒
deadtime 30
节点死亡时间阀值,就是从节点在过了 30 后还没有收到心跳就认为主节点死亡
warntime 10
发出警告时间
initdead 120
守护进程首次启动后应该等待 120 秒后再启动主服务器上的资源
udpport 694
心跳信息传递的 udp 端口,使用端口 694 进行 bcast 和 ucast 通信
baud 19200
串口波特率,与 serial 一起使用。
serial /dev/ttyS0
采用串口来传递心跳信息。
bcast eth0
采用 udp 广播播来通知心跳
auto_failback on
当主节点恢复后,是否自动切回
stonith baytech /etc/ha.d/conf/stonith.baytech
stonith 用来保证共享存储环境中的数据完整性
watchdog /dev/watchdog
watchdog 能让系统在出现故障 1 分钟后重启该机器,这个功能可以帮助服务器在确实停止心
跳后能够重新恢复心跳。 如果使用该特性,修改系统中/etc/modprobe.conf, 添加如下行
options softdog nowayout=0
这样在系统启动的时候,在内核中装入"softdog"内核模块,用来生成实际的设备文件
/dev/watchdog
node server2.example.com   (只能域名)
主节点名称,与 uname –n 保持一致。排在第一的默认为主节点,所以不要搞措顺序
node server3.example.com   
副节点名称,与 uname –n 保持一致
ping 172.25.45.250
respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
默认 heartbeat 并不检测除本身之外的其他任何服务,也不检测网络状况。
所以当网络中断时,并不会进行 Load Balancer 和 Backup 之间的切换。
可以通过 ipfail 插件,设置'ping nodes'来解决这一问题,但不能使用一个集群节点作为
ping 的节点。

   vim haresources
http://s1.运维网.com/wyfs02/M01/85/71/wKioL1ejWsXy_dXGAAATf2SIzDQ314.png-wh_500x0-wm_3-wmp_4-s_4181315715.png

server2.example.comIPaddr::172.25.85.100/24/eth1mysqld  ##172.25.85.100是虚拟ip
这个文件中定义了实现集群所需的各个软件的启动脚本,这些脚本必须放在/etc/init.d 或者
/etc/ha.d/resource.d 目录里 IPaddr 的作用是启动 Virutal IP,它是 HeartBeart 自带的一个
脚本;mysqld 是 mysql服务的启动脚本。
   vim authkeys
http://s3.运维网.com/wyfs02/M00/85/71/wKiom1ejWy3hc9WMAAANdhpNMYY719.png-wh_500x0-wm_3-wmp_4-s_2067061773.png
auth 1
1 crc  
   chmod 600 authkeys                        ##仅超级用户可以读写
  cd   /etc/ha.d
  scp ha.cf haresources authkeys 172.25.85.3:/etc/ha.d/
   /etc/init.d/heartbeat start
   tail -f /var/log/messages
检测:
   在server2上:
   /etc/init.d/heartbeatstart
   /etc/init.d/mysqldstart
   mysql可以登陆
   在server2上:
/etc/init.d/heartbeat stop
    无法登录mysql:
    而server3上可以登陆:


2.heartbeat&磁盘:

  建立共享分区:
在server4上:
分配4G的虚拟磁盘
yum installscsi-target-utils-1.0.24-10.el6.x86_64-y
   /etc/init.d/tgtd start
fdisk -l
vim /etc/tgt/targets.conf

    backing-store /dev/vdb                              ##/dev/vdb就是刚刚分出来的新硬盘
    initiator-address 172.25.85.2
    initiator-address 172.25.85.3
   
tgt-admin -s
在server2和server3上:
yum install iscsi-initiator-utils.x86_64-y
iscsiadm-t st -m discovery-p 172.25.85.4
iscsiadm-m node -l                                    

  ##共享分区就建立好了,在server2和server3上会出现两个新的磁盘/dev/sda
cat /proc/partitions                                       ##查看分区是否共享

server2:
   fdisk -cu /dev/sda               ##(删除多于分区,然后创建一个新的2G的主分区)
   cat/proc/partition
   mkfs.ext4/dev/sda1
   vim haresources

server2.example.comIPaddr::172.25.85.100/24/eth1
                   Filesystem::/dev/sda1::/var/lib/mysql::ext4 mysqld  scp haresources 172.25.85.3:/etc/ha.d/
    /etc/init.d/mysqldstop
    mount /dev/sda1/mnt
    cd /var/lib/mysql
    cp-rp*/mnt
    chownmysql.mysql   /mnt
    umount /mnt
    /etc/init.d/heartbeatstop
    tail -f /var/log/messages
   在server3上:
    partprobe                                             ##会同布出server1上进行的分区
    cat /pros/partitions
检测:在server2:
    /etc/init.d/heartbeatstop
    df                                  ##/dev/sda1自动挂载到了/var/lib/mysql
http://s4.运维网.com/wyfs02/M02/85/71/wKiom1ejXN2hrkWbAABQBApoexM881.png-wh_500x0-wm_3-wmp_4-s_4281671452.png

  ip addr show                        ##虚拟地址出现在server3上
http://s2.运维网.com/wyfs02/M01/85/71/wKiom1ejXQDiOtMbAACP-cC-Wd0492.png-wh_500x0-wm_3-wmp_4-s_3242821156.png
   在server3上:/etc/init.d/heartbeat stop      
    在server2上, /dev/sda1自动挂载到了/var/lib/mysql,虚拟地址出现在server2上


给server2和server3都分配4G虚拟磁盘
3. 编译drbd
      因为此次用的是之前的虚拟机,所以需要关闭一些进程:   ##如果是新的虚拟机 则不需要
   在server2和server3上:
   /etc/init.d/iscsi stop
   chkconfig --list iscsi##iscsi的进程都关闭
   /etc/init.d/heartbeststop
   在server2上:
    cd /root
    tar zxfdrbd-8.4.3.tar.gz
    cddrbd-8.4.3
    yum install flex gcc rpm-buildkernel-devel -y
    cp /root/drbd-8.4.3.tar.gz/root/rpmbuild/SOURCES/
   ./configure--enable-spec --with-km
    rpmbuild -bb drbd.spec      ##编译drbd要在/root/drbd-8.4.3目录下
    rpmbuild -bb drbd-km.spec
    cd /root/rpmbuild/RPMS/x86_64
    rpm -ivh *
    scp * root@172.25.85.3:
    cd/etc/drbd.d/
    vim example.res                ##创建以.res结尾文件

resource sqldata{
   meta-disk internal;
   device /dev/drbd1;
syncer{
      verify-algsha1;
}
on server2.example.com{
   disk /dev/vdb;
address 172.25.85.2:7789;
}
on server3.example.com{
   disk /dev/vdb;
address 172.25.85.3:7789;
}  
    scp example.resroot@172.25.85.3:/etc/drbd.d/
    drbdadm create-md sqldata
    /etc/init.d/drbdstart                     ## server3也进行相同的操作,和server2同时完成
    drbdadm primary sqldata--force         
    cat /proc/drbd
http://s5.运维网.com/wyfs02/M02/85/71/wKioL1ejXcGwHhsxAABtZRfadCM097.png-wh_500x0-wm_3-wmp_4-s_2409816129.png
   
    在server3上:
    cd /root
    yum install drbd-*
    drbdadm create-md sqldata      ##和server2上的这个步骤同时进行
   /etc/init.d/drbdstart
    cat /proc/drbd
http://s2.运维网.com/wyfs02/M00/85/71/wKiom1ejXeeQlH3XAABMq91xvuc580.png-wh_500x0-wm_3-wmp_4-s_1633243217.png
4.server2:
    mkfs.ext4 /dev/drbd1
    mount /dev/drbd1/mnt/
    cd /var/lib/mysql/
    cp -rp * /mnt
    chownmysql.mysql /mnt
    cp /etc/passwd/mnt
    umount /mnt
    drbdadm secondary sqldata
    cat /proc/drbd
    cd /etc/ha.d/
    vim haresources
server1.example.com IPaddr::172.25.85.100/24/eth1drbddisk::sqldata Filesystem::/dev/drbd1::/var/lib/mysql::ext4 mysqld
    scp /etc/ha.d/haresourcesroot@172.25.85.3:/etc/ha.d/
    /etc/init.d/heartbeat start
    tail -f /var/log/messages
    cat /prpc/drbd
发现,172.25.85.100出现在server2上
   /dev/drbd1 自动挂载到/var/lib/mysql

server3:
   mkfs.ext4 /dev/drbd1
   drbdadm primary sqldata
   mount /dev/drbd1 /mnt
   cd /mnt                     
/etc/init.d/heartbeat start      





  




页: [1]
查看完整版本: 企业~heartbeat&drbd