一、概述
1、架构图
2、软件简介
Heartbeat(Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。
DRBD:drbd是一个软件来实现数据实时、同步、异步的数据镜像块存储复制解决方案,主要功能是通过Linux内核实现。DRBD类似网络RAID-1功能写入本地的文件会通过网络以相同方式写在另一文件系统。
3、资源分配
系统:CentOS6.5_x64
主机名 |
角色 |
IP地址 |
masternfs |
主NFS |
eth0:192.168.0.202/24 |
backupnfs |
备NFS |
eth0:192.168.0.203/24 |
VIP |
192.168.0.204/24 |
4、配置两台hosts记录
[root@masternfs ~]# vi /etc/hosts
192.168.0.202 masternfs
192.168.0.203 backupnfs
二、安装配置DRBD(两台服务器配置基本一样)
安装epel源:
rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
下载drbd软件:http://oss.linbit.com/drbd/
1、安装依赖包
[root@masternfs ~]# yum install -y gcc gcc-c++ make perl kernel-devel kernel-headers flex drbd84-utils kmod-drbd84
2、安装DRBD并加载到内核
[root@masternfs ~]# tar zxvf drbd-8.4.4.tar.gz[root@masternfs ~]# cd drbd-8.4.4[root@masternfs ~]# ./configure --prefix=/usr/local/drbd --with-km #--with-km,启用内核模块[root@masternfs ~]# make KDIR=/usr/src/kernels/2.6.32-358.23.2.el6.x86_64/ #指定内核源码路径[root@masternfs ~]# make install[root@masternfs ~]# chkconfig --add drbd[root@masternfs ~]# chkconfig drbd on[root@masternfs ~]# cp drbd/drbd.ko /lib/modules/`uname -r`/kernel/lib/ #加载DRBD模块到内核中[root@masternfs ~]# modprobe drbd[root@masternfs ~]# lsmod |grep drbd #由此查看drbd模块已经加载drbd 333755 0libcrc32c 1246 1 drbd
3、配置DRBD
[root@masternfs ~]# cd /usr/local/drbd/[root@masternfs ~]# vi /usr/local/drbd/etc/drbd.d/global_common.confglobal { usage-count yes;}common { protocol C;disk { on-io-error detach;}syncer { rate 100M; }}resource web { on masternfs { device /dev/drbd0; disk /dev/sdb1; address 192.168.0.202:7899; meta-disk internal; } on backupnfs { device /dev/drbd0; disk /dev/sdb1; address 192.168.0.203:7899; meta-disk internal; }}
4、创建供DRBD记录信息数据块
[root@masternfs ~]# drbd admcreate-md webWriting meta data...initializing activity logNOT initializing bitmapNew drbd meta data blocksuccessfully created.success[root@masternfs ~]# mkdir -p /usr/local/drbd/var/run/drbd #创建资源目录[root@masternfs ~]# service drbd start
5、默认没有分主备节点的,需要设置
[root@masternfs ~]# cat /proc/drbdversion: 8.4.4(api:1/proto:86-101)GIT-hash:599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-1415:33:06 0: cs:Connected ro:Secondary/Secondaryds:UpToDate/UpToDate C r-----ns:64 nr:112 dw:176 dr:6088 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1wo:f oos:0
[root@masternfs ~]# drbdadm -- --overwrite-data-of-peer primary web[root@db-backup ~]# drbdadm secondary web #backupnfs服务器设置从节点
#再查看状态已经是主从
[root@masternfs ~]# drbd-overview 0:mysql/0 Connected Primary/Secondary UpToDate/UpToDate C r-----
说明:
cs:两台数据连接状态
ro:两台主机的状态
ds:磁盘状态是“UpToDate/UpToDate”,同步状态。
6、格式化并挂载分区
[root@masternfs ~]# mkfs.ext4 /dev/drbd0[root@masternfs ~]# mkdir /web[root@masternfs ~]# mount /dev/drbd0 /web
三、安装配置NFS
[root@masternfs ~]# yum install -y nfs-utils[root@masternfs ~]# vi /etc/exports/web 192.168.0.0/24(rw,no_root_squash)[root@masternfs ~]# service rpcbind start[root@masternfs ~]# service nfs start[root@masternfs ~]# chkconfig rpcbind on[root@masternfs ~]# chkconfig nfs on
四、安装配置Heartbeat
[root@masternfs ~]# yum install heartbeat* -y[root@masternfs ~]# cd /usr/share/doc/heartbeat-3.0.4/[root@masternfsheartbeat-3.0.4]# cp ha.cf authkeys haresources /etc/ha.d/[root@masternfsheartbeat-3.0.4]# cd /etc/ha.d/
[root@masternfs ha.d]# vi ha.cflogfile /var/log/ha-loglogfacility local0 #如果未定义上述日志,默认写入/var/log/messagekeepalive 2 #心跳间隔deadtime 30 #死亡阀值warntime 10 #警告时间initdead 120 #首次启动heartbeat,等待多久才启动主服务资源udpport 694 #连接端口bcast eth0 #使用什么方式组织心跳,最好用ucast方式auto_failback off #当主节点故障恢复后,自动获取资源并取代从节点node masternfs #主节点主机名node backupnfs #备份节点主机名ping 192.168.0.1 #选择ping节点,ping的越好对HA集群越稳定,建议使用网关
[root@masternfs ~]# vi /etc/ha.d/authkeysauth 22 sha1 HI!
[root@masternfs ~]# masternfs IPaddr::192.168.0.204/24/eth0 drbddisk::web Filesystem::/dev/drbd0::/web::ext4 killnfsd
参数说明:
masternfsIPaddr::192.168.0.204/24/eth0 #主机名,后跟虚拟IP地址、接口
drbddisk::web #管理drbd资源
Filesystem::/dev/drbd0::/web::ext4 killnfsd #文件系统,目录及格式,后跟nfs资源脚本
#killnfsd脚本
[root@masternfs ~]# echo "killall -9 nfsd ; /etc/init.d/nfs restart ; exit 0" >>/etc/ha.d/resource.d/killnfsd[root@masternfs ~]# chmod +x /etc/ha.d/resource.d/killnfsd
[root@masternfs ~]# chmod 600 /etc/ha.d/authkeys #不修改权限会报错[root@masternfs ~]# service heartbeat start[root@masternfs ~]# chkconfig heartbeat on
五、测试高可用性
1、停掉masternfs服务器heartbeat服务,是否虚拟IP正常切换,可通过ip addr命令查看。
2、通过一台测试机, mount -t nfs 192.168.0.204:/web/media,当故障切换时,nfs无间断提供服务,提供完美冗余。
3、通过ha-log日志可以看出主释放资源,备接管资源。
本文出自 “李振良的技术博客” 博客,请务必保留此出处http://lizhenliang.blog.51cto.com/7876557/1362539