DRBD+Heartbeat+NFS安装
实验拓扑
系统环境
1. 系统: Centos5.6X64位
2. 软件: DRBD,Heartbeat, NFS
3. 服务器:三台
4. IP分配:
心跳线: Stronge1: 172.16.10.1 Stronge2: 172.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. primary 和 secondary 节点都配置好并且启动成功后,开始检查配置是否成功。
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
Stronge1: 192.168.1.31
Stronge2: 192.168.1.32
集群虚拟 IP: 192.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. 启动测试
先启动 stronge1的 heartbeat,再启动 stronge2的 heartbeat
启动成功后,这里有几项需要检查
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