hew 2008-9-16 22:27
用drbd+haertbeat做DNS热备
作者:cjq8876
1.目的:为了使DNS数据更加安全及DNS服务更加稳定,特使用DRBD+HEARTBEAT技术做DNS服务的热备份。
2.系统设置:
a服务器:
eth0:192.168.2.248
eth1:10.0.0.248
/dev/sdb为空
b服务器:
eth0:192.168.2.44
eth1:10.0.0.44
/dev/sdb为空
系统软件要求:
必须安装所有开发包工具。
SE[wiki]linux[/wiki] Disable
Iptable Disable(为了配置方便,建议先关掉,后根据情况开启)
3.功能实现:
3.1系统安装(略)
配置系统
fdisk -l
/dev/sdb1 1 261 2096451 83 Linux
vi /etc/hosts
192.168.2.44 mail1.xx.xx.net mail1
192.168.2.248 mail.xx.xx.net mail
10.0.0.44 mail1.xx.xx.net mail1
10.0.0.248 mail.xx.xx.net mail
配置这里是因为DRBD及HEARTBEAT的有关配置必须和uname -n一致.
vi /etc/fstab
/dev/drbd0 /var/named ext3 noauto 0 0
3.2DRBD安装(我用的是CentOS 4.5,其它教程中提到的升级内核及为内核打补丁,我都没用上)
tar zxvf drbd-8.2.0.tar.gz
cd drbd-8.2.0
(8.X只能用于2.6内核,7.X可以用于2.4及2.6内核)
make (也可以用make KDIR=/usr/src/linux /*内核所在的位置*/)
make install
安装完主要生成命令:drbdsetup ,drbdadmin
和配置文件:/etc/drbd.conf ,启动文件,/etc/init.d/drbd
3.3创建硬件设备drdb
mknod /dev/drbd0 b 147 0 (在8.X以上的版本不需要做这一步,具体在下面会介绍)(我这里只用到了一个数据源,所以只需要建一个,如果有
很多数据源可以用以下格式创建更多mknod /dev/drbdX b 147 X X代表数字)
3.3DRDB协议说明
A 数据一旦写入磁盘并发送到网络中就认为完成了写入操作。
B 收到接收确认就认为完成了写入操作。
C 收到写入确认就认为完成了写入操作。
您还可以选择其它参数来将数据传输给磁盘和网络选项
3.4配置drdb.conf文件:
resource r0 {
protocol C;
handlers {
pri-on-incon-degr "echo 'DRBD: primary requested but inconsistent!'| wall; /etc/init.d/heartbeat stop"; #"halt -f";
pri-lost-after-sb "echo 'DRBD: primary requested but lost!'| wall; /etc/init.d/heartbeat stop"; #"halt -f";
local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
outdate-peer "/usr/sbin/drbd-peer-outdater";
}
startup {
degr-wfc-timeout 120; # 2 minutes.
}
disk {
on-io-error detach;
}
net {
timeout 120; # 6 seconds (unit = 0.1 seconds)
connect-int 20; # 10 seconds (unit = 1 second)
ping-int 20; # 10 seconds (unit = 1 second)
max-buffers 2048;
max-epoch-size 2048;
ko-count 10;
cram-hmac-alg "sha1";
shared-secret "FooFunFactory";
after-sb-0pri disconnect;
after-sb-1pri disconnect;
after-sb-2pri disconnect;
rr-conflict disconnect;
}
syncer {
rate 10M;
al-extents 257;
}
on mail1.xx.xx.net {
device /dev/drbd0;
disk /dev/sdb1;
address 10.0.0.44:7788;
meta-disk internal;
# mete-disk可以使用internal和/dev/ice/name [idx] 这两种形式.
}
on mail.xx.xx.net {
device /dev/drbd0;
disk /dev/sdb1;
address 10.0.0.248:7788;
meta-disk internal;
}
}
3.5启动drbd
3.5.1首先在248下
modprobe drbd
lsmod
drdbadm create-md all ;/etc/rc.d/init.d/drdb start;cat /proc/drdb
(这里是8.x的启动过程.drdbadm create-md all及建立了meta-disk,它会自动创建/dev/drbd0.在执行过程中需要你按yes确认)
netstat -ant
3.5.2在44下
modprobe drbd
drdbadm create-md all ;/etc/rc.d/init.d/drdb start;cat /proc/drdb
3.6设置权限
在248下
drbdadm -- --overwrite-data-of-peer primary drbd0; cat /proc/drbd
mkfs.ext3 /dev/drbd0
mv /var/named /var/named.old
mkdir /var/named
chown -R named:named /var/named
mount /dev/drbd0 /var/named
cp -dpR /var/named.old/. /var/named/.
(44的安装基本于上面相同)
测试一下:
248下:
umount /var/named
drbdadm secondary all
44下:
drbdadm primary all
mount /dev/drbd0 /var/named
ls -l
4.HEARTBEAT的安装
rpm -ivh heartbeat-pils-2.0.8-2.el4.centos.i386.rpm
rpm -ivh heartbeat-stonith-2.0.8-2.el4.centos.i386.rpm
rpm -ivh lm_sensors-2.8.7-2.40.3.i386.rpm
rpm -ivh heartbeat-2.0.8-2.el4.centos.i386.rpm
cp /usr/share/doc/heartbeat-2.0.8/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.0.8/haresources /etc/ha.d/
vi /etc/ha.d/authkeys
###########
auth 2
2 crc
###########
(测试环境,所以用此验证方法)
vi /etc/ha.d/ha.cf
############
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility daemon
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth1 10.0.0.248
ucast eth1 10.0.0.44
auto_failback on
node mail.xx.xx.net
node mail1.xx.xx.net
############
vi /etc/ha.d/haresources
############
mail.xx.xx.net 192.168.2.192 drbddisk::r0 Filesystem::/dev/drbd0::/var/named::ext3 named MailTo::cjq8876@gmail.com
############
(44配置上相同)
reboot
/etc/rc.d/init.d/drbd start
/etc/rc.d/init.d/heartbeat start
有什么错误的地方还请多多指教。(其实以上的方法不但可以做DNS也可以作数据库及mail服务的热备)