我爱小虾 发表于 2019-1-6 15:44:19

HA 高可用性

  一、基础知识:
  1 简介:
  Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。
  2 原理:
  DRBD的核心功能通过Linux的内核实现,最接近系统的IO栈,但它不能神奇地添加上层的功能比如检测到EXT3文件系统的崩溃。
  3 DRBD的工具:
  3.1 drbdadm:高级管理工具,管理/etc/drbd.conf,向drbdsetup和drbdmeta发送指令;
  3.2 drbdsetup:配置装载进kernel的DRBD模块,平时很少直接用;
  3.3 drbdmeta:管理META数据结构,平时很少直接用;
  4 DRBD的模式:
  4.1 单主模式:典型的高可靠性集群方案。
  4.2 复主模式:需要采用共享cluster文件系统,如GFS和OCFS2。用于需要从2个节点并发访问数据的场合,需要特别配置。
  5 复制模式:3种模式:
  5.1 协议A:异步复制协议。本地写成功后立即返回,数据放在发送buffer中,可能丢失。
  5.2 协议B:内存同步(半同步)复制协议。本地写成功并将数据发送到对方后立即返回,如果双机掉电,数据可能丢失。
  5.3 协议C:同步复制协议。本地和对方写成功确认后返回。如果双机掉电或磁盘同时损坏,则数据可能丢失。
  一般用协议C。选择协议将影响流量,从而影响网络时延。
  二、案例:
  1 拓扑图:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648657RDUL.png
  2 案例说明:
  通过heartbeat实现HA高可用性群集,通过DRBD实现存储复制来达到存储的高可用性,通过NFS实现网络文件系统共享;
  3 配置步骤:
3.1 Heartbeat高可用性群集搭建:
  3.1.1(1) 配置director1群集服务器:
  配置director1的网卡地址:
  外出接口网卡:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648658VHRa.png
  心跳网卡:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506486581hJl.png
  重启网络服务:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648662WKMK.png
  同步时钟:
  # hwclock -s
  配置director1的主机名:
  # vim /etc/sysconfig/network
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506486650Imo.png
  # hostname dir1.abc.com //配置后需要注销一次;
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506486652Sqh.png
  配置director1的本地DNS解析:
  # vim /etc/hosts
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648666i63W.png
  将heartbeat的安装包使用ftp导入director1:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648666DrTO.png
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506486678GTj.png
  挂载光盘:
  # mkdir /mnt/cdrom
  # mount /dev/cdrom /mnt/cdrom
  使用yum安装heartbeat相应的软件包:
  # yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648667aqwn.png
  拷贝heartheat的配置文件到相应的位置:
  # cd /usr/share/doc/heartbeat-2.1.4/
  # cp ha.cf /etc/ha.d/
  # cp haresources /etc/ha.d/
  # cp authkeys /etc/ha.d/
  编辑心跳探测配置文件ha.cf:
  # cd /etc/ha.d/
  # vim ha.cf
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506486687cI0.png
  //定义心跳网卡;
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648668Fpax.png
  //声明群集的节点;
  配置验证钥匙(为了实现双方身份验证):
  # vim authkeys
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648671fw14.png
  改变authkeys的权限:
  # chmod 600 authkeys
  3.1.1(2) 配置director2群集服务器:
  配置director2的网卡地址:
  外出接口网卡:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648672hJEk.png
  心跳网卡:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648672MxA2.png
  重启网络服务:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506486727PCo.png
  同步时钟:
  # hwclock -s   
配置director2的主机名:
  # vim /etc/sysconfig/network
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648673croK.png
  # hostname dir2.abc.com //配置后需要注销一次;
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648682ZHtf.png
  配置director2的本地DNS解析:
  # vim /etc/hosts
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648682lkbd.png
  将heartbeat的安装包使用ftp导入director1:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648683jheQ.png
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648687Ukbl.png
  挂载光盘:
  # mkdir /mnt/cdrom
  # mount /dev/cdrom /mnt/cdrom
  使用yum安装heartbeat相应的软件包:
  # yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506486879YDa.png
  拷贝heartheat的配置文件到相应的位置:
  # cd /usr/share/doc/heartbeat-2.1.4/
  # cp ha.cf /etc/ha.d/
  # cp haresources /etc/ha.d/
  # cp authkeys /etc/ha.d/
  编辑心跳探测配置文件ha.cf:
  # cd /etc/ha.d/
  # vim ha.cf
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506486888F45.png
  //定义心跳网卡;
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648688jsfw.png
  //声明群集的节点;
  配置验证钥匙(为了实现双方身份验证):
  # vim authkeys
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648691uM1a.png
  改变authkeys的权限:
  # chmod 600 authkeys
3.2 DRBD服务搭建:
  3.2.1(1) 在dir1.abc.com主机中创建一个NFS共性分区:
  从sda硬盘中划分一个分区:
  # fdisk /dev/sda
  创建一个扩展分区:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648692Z7ak.png
  创建一个扩展分区:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506486959iGX.png
  查看分区表:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648695qwTh.png
  保存并退出:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648699IzxO.png
  通过内核从新读取分区表:
  # partprobe /dev/sda
  3.2.1(2) 在dir2.abc.com主机中创建一个NFS共性分区:
  从sda硬盘中划分一个分区:
  # fdisk /dev/sda
  创建一个扩展分区:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648699jkOW.png
  创建一个扩展分区:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506486996SaD.png
  查看分区表:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648700BZKA.png
  保存并退出:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648700Pgtw.png
  通过内核从新读取分区表:
  # partprobe /dev/sda
  3.2.2(1) 在dir1.abc.com中安装DRBD相关软件包:   
导入DRBD相应的安装包:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506487019iBx.png
  安装drbd服务:
  # rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm
  安装drbd的内核模块:
  # rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
  3.2.2(2) 在dir2.abc.com中安装DRBD相关软件包:
  导入DRBD相应的安装包:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648702E8ss.png
  安装drbd服务:
  # rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm
  安装drbd的内核模块:
  # rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
  3.2.3(1) 在dir1.abc.com编辑drbd文档:
  编辑drbd主配置文件:
  # vim /etc/drbd.conf
  读取样例文件内容:底行模式
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648702Ryzw.png
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648703vu08.png
  编辑通用资源:
  # vim /etc/drbd.d/global_common.conf
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648703I8et.png
  编辑详细资源:
  # vim /etc/drbd.d/web.res
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648704MMyh.png
  初始化drbd:
  # drbdadm create-md web
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648704Bjab.png
  3.2.3(2) 在dir2.abc.com编辑drbd文档:
  编辑drbd主配置文件:
  # vim /etc/drbd.conf
  读取样例文件内容:底行模式
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506487044ZoQ.png
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648705KIkC.png
  编辑通用资源:
  # vim /etc/drbd.d/global_common.conf
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648705y4DL.png
  编辑详细资源:
  # vim /etc/drbd.d/web.res
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648706Eg1e.png
  初始化drbd:
  # drbdadm create-md web
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506487093DVy.png
  3.2.4(1) 启动dir1.abc.com的DRBD服务:
  # service drbd start
  3.2.4(1) 启动dir2.abc.com的DRBD服务:
  # service drbd start
  3.2.5(1) 查看dir1.abc.com的设备状态:
  # drbd-overview
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648709igzZ.png
  3.2.5(2) 查看dir2.abc.com的设备状态:
  # drbd-overview
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648712epKF.png
  3.2.6 将dir1.abc.com的设备调整为主设备:
  # drbdadm -- --overwrite-data-of-peer primary web
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_135064871361cy.png
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648713YPKk.png
  3.2.7 格式化/dev/drbd0:
  # mkfs -t ext3 -L drbdweb /dev/drbd0
  3.2.8(1) 在dir1.abc.com上对/dev/drbd0进行挂载:
  创建挂载点:
  # mkdir /public
  挂载:
  # mount /dev/drbd0 /public/
  3.2.8(2) 在dir1.abc.com上对/dev/drbd0进行挂载:
  创建挂载点:
  # mkdir /public
  3.2.9(1) 查看dir1.abc.com的drbd当前状态:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506487174wh2.png
  3.2.9(2) 查看dir2.abc.com的drbd当前状态
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648717wMhI.png
3.3 NFS搭建
  3.3.1(1) 配置dir1.abc.com的NFS server:
  NFS服务是默认安装的,使用时直接启动即可;
  # service nfs start
  # service portmap start
  编写共享清单:
  # vim /etc/exports
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648717M9CQ.png
  导出共享清单:
  # exportfs -rv
  exporting 192.168.10.0/24:/public
  -r 导出;
  -v 详细信息;
  修改nfs启动脚本:
  # vim /etc/init.d/nfs
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506487181ytE.png
  3.3.1(2) 配置dir2.abc.com的NFS server:
  NFS服务是默认安装的,使用时直接启动即可;
  # service nfs start
  # service portmap start
  编写共享清单:
  # vim /etc/exports
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648721bZ2x.png
  导出共享清单:
  # exportfs -rv
  exporting 192.168.10.0/24:/public
  -r 导出;
  -v 详细信息;
  修改nfs启动脚本:
  # vim /etc/init.d/nfs
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648721Vj5e.png
3.4 编辑heartbeat资源文件:
  3.4.1(1) 在dir1.abc.com节点上heartbeat资源配置:
  # vim /etc/ha.d/haresources
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506487221DUo.png
  创建nfs服务的资源控制文件:
  # vim /etc/ha.d/resource.d/killnfsd
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648722FBXm.png
  改变nfs服务的资源控制文件的权限:
  # chmod 755 /etc/ha.d/resource.d/killnfsd
  3.4.1(2) 在dir2.abc.com节点上heartbeat资源配置:
  # vim /etc/ha.d/haresources
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506487232CGi.png
  创建nfs服务的资源控制文件:
  # vim /etc/ha.d/resource.d/killnfsd
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648726LXW1.png
  改变nfs服务的资源控制文件的权限:
  # chmod 755 /etc/ha.d/resource.d/killnfsd
  3.4.2(1) 启动dir1.abc.com节点的heartbeat的服务:
  # service heartbeat start
  3.4.2(2) 启动dir2.abc.com节点的heartbeat的服务:
  # service heartbeat start
  3.4.3 查看heartbeat两节点的状态:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648729fld9.png
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648733toGx.png
  4 测试:
  4.1 开启一个客户端:
  配置一个临时地址:
  # ifconfig eth0 192.168.10.20
  创建一个挂载点:
  # mkdir /mnt/nfs
  # mount 192.168.10.10:/public /mnt/nfs
  查看挂载的状态:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_13506487336AC3.png
  4.2 当heartbeat正常运行时:
  查看NFS网络文件系统:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648733LzLI.png
  4.3 在dir1.abc.com中将heartbeat服务关闭:
  # service heartbeat stop
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648734plAf.png
  此时NFS网络文件系统仍然可以使用:
http://cexpert.blog.运维网.com/attachment/201210/19/5251990_1350648737wzMp.png



页: [1]
查看完整版本: HA 高可用性