设为首页 收藏本站
查看: 892|回复: 0

[经验分享] Linux高可用存储环境搭建(DRBD+Heartbeat+NFS)

[复制链接]

尚未签到

发表于 2019-1-7 06:52:56 | 显示全部楼层 |阅读模式
DRBD+Heartbeat+NFS安装
实验拓扑


系统环境
1.       系统:Centos5.6X64
2.       软件:DRBD,HeartbeatNFS
3.       服务器:三台
4.       IP分配:
心跳线:Stronge1172.16.10.1                      Stronge2172.16.10.2
Stronge1:192.168.1.31         Stronge2:192.168.1.32          VIP:192.168.1.35
测试机:192.168.1.254  网关:192.168.1.1
实验步骤
一.DRBD的安装与配置
配置两台主机的主机名,修改hosts文件

vi   /etc/hosts
127.0.0.1               stronge1 localhost
::1             localhost6.localdomain6   localhost6
192.168.1.31    stronge1
192.168.1.32    stronge2


1.       选择所要使用的磁盘
fdisk /dev/hda
[root@stronge1 /]# fdisk /dev/hda

The number of cylinders for this disk is   set to 1305.
There is nothing wrong with that, but   this is larger than 1024,
and could in certain setups cause   problems with:
1) software that runs at boot time (e.g.,   old versions of LILO)
2) booting and partitioning software from   other OSs
     (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
     e   extended
     p   primary partition (1-4)
p
Partition number (1-4): 1
Command (m for help): w
[root@stronge1 /]# partprobe   //分好区后同步磁盘

3.安装DRBD
yum -y install kmod-drbd drbd
Centos5.6X64同时安装两个会报错,安装完第一个第二个被作为依赖就安装上了。
4.加载DRBD模块
  modprobe drbd
通过ls mod查看是否加载成功
[root@stronge1 ~]# lsmod | grep drbd
drbd                  238664  4

5.       更改DRBD配置文件
# 是否参加DRBD使用者统计.默认是yes
global { usage-count yes; }
# 设置主备节点同步时的网络速率最大值,单位是字节.
common { syncer { rate 10M; } }
# 一个DRBD设备(:/dev/drbdX),叫做一个"资源".里面包含一个DRBD设备的主备节点的
# 相关信息.
#
resource r0 {
# 使用协议C.表示收到远程主机的写入确认后,则认为写入完成.
protocol C;
net {
# 设置主备机之间通信使用的信息算法.
cram-hmac-alg sha1;
shared-secret "FooFunFactory";
}
# 每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置.
on stronge1 {
# /dev/drbd1使用的磁盘分区是/dev/hdb1
device      /dev/drbd0;
disk        /dev/hda1;
# 设置DRBD的监听端口,用于与另一台主机通信
address     192.168.1.31:7788;
meta-disk    internal;
}
on stronge2 {
device      /dev/drbd0;
disk        /dev/hda1;
address     192.168.1.32:7788;
meta-disk    internal;
}
}
两台主机的配置文件一样。
6.       初始化DRBD资源
a)       创建metadata
dd if=/dev/zero of=/dev/hda1 bs=1M count=10
drbdadm create-md all


b 启动drbd
service drbd start    主副都启动
c) 设置为主节点:
drbdadm primary all                 //主服务器
如果报错 执行drbdsetup /dev/drbd0 primary –o
然后如果有多个共享磁盘,可以再次执行drbdadm primary all
d) 在新设备上面创建文件系统
mkfs.ext3 /dev/drbd0    //主服务器
e)挂载文件系统
e) 挂载文件系统
mkdir /share              //两服务器都要有此文件夹
mount /dev/drbd0 /share    //主服务器
主的格式化文件系统后,副的不用任何操作,会自动同步过去。
7.    primarysecondary节点都配置好并且启动成功后,开始检查配置是否成功。
a)         检查进程:
Primary
[root@localhost   /]# ps -aux | grep drbd
Warning: bad   syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
root      5471    0.0  0.2  74496    1388 pts/0    T    15:57     0:00 vi /etc/drbd.conf
root      5559    0.0  0.0      0       0 ?        S    16:04     0:00 [drbd0_worker]
root      5562    0.0  0.0      0       0 ?        S    16:04     0:00 [drbd0_receiver]
root      5569    0.0  0.0      0       0 ?        S    16:04     0:00 [drbd0_asender]
root      5635    0.0  0.1  61184     788 pts/0    S+   16:23     0:00 grep drbd

Secondary
[root@stronge2   /]# ps -aux | grep drbd
Warning: bad   syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
root      3719    0.0  0.0      0       0 ?        S    16:04     0:00 [drbd0_worker]
root      3720    0.0  0.0      0       0 ?        S    16:04     0:00 [drbd0_receiver]
root      3727    0.0  0.0      0       0 ?        S    16:04     0:00 [drbd0_asender]
root      3813    0.0  0.1  61180     792 pts/0    S+   16:28     0:00 grep drbd
可以看到两个节点的进程都起来了,每个drbd设备会有三个进程:drbd0_worker是drbd0的主要进程,drbd0_asender是primary上drbd0的数据发送进程,drbd0_receiver是secondary上drbd0的数据接收进程。
b)    查看DRBD状态:
[root@localhost   /]# cat /proc/drbd
version: 8.0.16   (api:86/proto:86)
GIT-hash:   d30881451c988619e243d6294a899139eed1183d build by   mockbuild@v20z-x86-64.home.local, 2009-08-22 13:26:57
0: cs:Connected st:Primary/Secondary   ds:UpToDate/Diskless C r---
    ns:109 nr:128 dw:298776 dr:467 al:123 bm:179   lo:0 pe:0 ua:0 ap:0
        resync: used:0/61 hits:0 misses:0   starving:0 dirty:0 changed:0
        act_log: used:0/127 hits:74571   misses:271 starving:0 dirty:148 changed:123

输出文件上面最开始是drbd的版本信息,然后就是数据同步的一些状态信息,从mysql的文档上介绍了每一个状态的意思如下:
cs — connection state
st — node state (local/remote)
ld — local data consistency
ds — data consistency
ns — network send
nr — network receive
dw — disk write
dr — disk read
pe — pending (waiting for ack)
ua — unack’d (still need to send ack)
al — access log write count

c)  进一步验证数据同步是否正常
在主服务器创建几个文件,然后将文件系统umount掉,然后将主服务器改为secondary模式
  
   cd /share
   touch 1.txt
   cd ..
   umount /dev/drbd0
   drbdadm secondary all
  
将副服务器改为primary模式,然后挂载文件系统,查看文件是否同步过来
  drbdadm primary all
   mount /dev/drbd0 /share
   cd /share
   ls
   1.txt
经验证,数据已经同步好了,将模式还原,然后进行下面的操作。
三.配置NFS
1.安装NFS
yum –y install nfs-utils nfs4-acl-tools
2.配置NFS共享目录
vi /etc/exports [root@localhost ha.d]# more /etc/exports
/share          192.168.1.254(rw,no_root_squash,sync anonuid=502,anongid=502)
anonuid=502,anongid=502:这个表示客户端上任何用户进入到挂载目录都以uid=502和gid=502身份,我这里这个代表的是nfs用户
两台服务器配置一样
1.       启动NFS服务
service portmap  start
service nfs   start
切记,必须先启动portmap服务
2.       加载开启启动
Chkconfig nfs off
Chkconfig portmap on
Portmap服务必须随服务器开机启动,且不受heartbeat管理;而nfs必须要用heartbeat来管理他的启动和关闭,所以这里要关闭nfs开机自动启动
3.       启动锁机制
/sbin/rpc.lockd
echo “/sbin/rpc.lockd” >> /etc/rc.local
要启动锁机制,因为同时有两个节点要使用同一份数据,比如两台mysql负载均衡服务器都要同时读取一个数据库,所以要有仲裁。如果没有这种情况,建议不要启动,启动了会降低NFS的性能
4.       开机自动挂载
echo “sleep 20” >> /etc/rc.local
echo “/bin/mount –t nfs 192.168.1.35:/share /mnt” >> /etc/rc.local
这里是针对nfs客户端的,为什么为延迟20秒再挂载nfs?因为如果不等待立即挂载,会发现挂载不上,这是由于heartbeat启动用的vip还没设置好的原因

三.安装Heartbeat实现故障自动转移
两服务器对外IP
Stronge1192.168.1.31
Stronge2192.168.1.32
集群虚拟IP192.168.1.35
5.       安装heartbeat
yum -y inistall heartbeat
此命令需要执行两次,第一次是安装的heartbeat的一些组件,第二次是安装的heartbeat
6.       同步两台服务器的时间
rm –rf /etc/localtime
cp –f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
yum install –y ntp
ntpdate –d cn.pool.ntp.org

3.将heartbeat的配置文件拷入至etc目录
rpm –ql heartbeat  //找到文件所在位置
# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/
4.配置集群认证文件
Vi /etc/ha.d/authkeys
auth 1
1 crc
chmod 600 authenkeys   //此操作必须要
5.配置集群节点文件
debugfile   /var/log/ha-debug                               #打开错误日志报告
keepalive   2                                                 #两秒检测一次心跳线连接
deadtime   10                                                 #10 秒测试不到主服务器心跳线为有问题出现
warntime 6                                                  #警告时间(最好在 2 10 之间)
initdead 120                                                #初始化启动时 120 秒无连接视为正常,或指定heartbeat
                                                              #在启动时,需要等待120秒才去启动任何资源。

udpport 694                                                 # udp 694 端口连接
ucast eth1 172.16.10.2                                  #单播方式连接(主从都写对方的 ip 进行连接,数据复制和心跳检测尽量不要使用同一块网卡)
node   node1                                               #声明主服(注意是主机名uname -n不是域名)
node   node2                                               #声明备服(注意是主机名uname -n不是域名)
auto_failback on                                            #自动切换(主服恢复后可自动切换回来)这个不要开启
respawn hacluster /usr/lib/heartbeat/ipfail             #监控ipfail进程是否挂掉,如果挂掉就重启它

6.配置集群资源文件
vi  /etc/ha.d/hareresources
stronge1 IPaddr::192.168.1.35/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/share::ext3 portmap nfs
此配置两台主机配置一模一样,stronge2前面也写stronge1.
7.       创建NFS管理脚本
vi /etc/ha.d/resource.d/nfs
#!/bin/bash

NFSD=/etc/rc.d/init.d/nfs
NFSDPID=`/sbin/pidof nfsd`
case $1 in
start)
$NFSD start;
;;
stop)
$NFSD stop;
        if   [ "$NFSDPID" != " " ];then
                  for NFSPID in $NFSDPID
                  do /bin/kill -9 $NFSPID;
                  done
        fi
;;
*)
echo "Syntax incorrect. You   need one of {start|stop }"
;;
esac

8.       启动测试
先启动stronge1heartbeat,再启动stronge2heartbeat
启动成功后,这里有几项需要检查
Stronge1
1、  执行ip a,检查是否已经设置有虚拟ip 192.168.1.35
9.       heartbeat加入开机启动
chkconfig heartbeat on







运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-660095-1-1.html 上篇帖子: NFS+Heartbeat+DRBD 架构部署(NFS高可用) 下篇帖子: Linux下群集和存储管理之Heartbeat+DBRD+NFS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表