on-io-error detach; } net {
#见其他——split brain问题处理
after-sb-0pri discard-younger-primary;
after-sb-1pri discard-secondary; after-sb-2pri call-pri-lost-after-sb; rr-conflict disconnect; #incompatible resync decision } syncer { rate 10M; #(设置网络同步速率) al-extents 257; #A higher number of extents gives longer resync times but less updates to the meta-data. The default number of extents is 127. (Minimum: 7, Maximum: 3843)
}
# 每个主机的说明以\开头,后面是主机名.在后面的{}中为这个主机的配置.
on master {
# /dev/drbd1使用的磁盘分区是/dev/hdb1 device /dev/drbd0; disk /dev/sdb5; #/dev/hdb5; # 设置DRBD的监听端口,用于与另一台主机通信 address 192.168.123.42:7788; flexible-meta-disk internal; }
on backup {
device /dev/drbd0; disk /dev/sdb5; #/dev/hda5; address 192.168.123.46:7788; flexible-meta-disk internal; } }
3 将drbd.conf文件复制到备机上
scp /etc/drbd.conf backup:/etc
初始化drbd 1、加载模块
drbd采用的是模块控制的方式,所以先要加载drbd.ko 模块 #insmod drbd.ko或者modprobe drbd 使用lsmod来查看模块是否加载成功。 成功
Module Size Used by
nls_utf8 12493 1 isofs 39549 1 drbd 260222 4
2、主备创建数据块
drbdadm create-md r0
3、主备启动drbd
/etc/init.d/drbd start
bobo@master:~$ cat /proc/drbd version: 8.3.11 (api:88/proto:86-96)
srcversion: DA5A13F16DE6553FC7CE9B2
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2095004
bobo@backup:/etc$ cat /proc/drbd version: 8.3.11 (api:88/proto:86-96)
srcversion: DA5A13F16DE6553FC7CE9B2
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2095004
4、设置主节点
在master上执行以下命令,设置master为主节点: sudo drbdadm -- --overwrite-data-of-peer primary all
5、查看连接
netstat -atn的输出结果,说明两台机器的drbd服务已经连接上了:
tcp 0 0 192.168.1.42:57769 192.168.1.46:7788 ESTABLISHED tcp 0 0 192.168.1.42:7788 192.168.1.46:33762 ESTABLISHED
6、查看同步状态
cat /proc/drbd
主节点上执行这个命令后的结果,显示数据正在同步中: version: 8.3.11 (api:88/proto:86-96)
srcversion: DA5A13F16DE6553FC7CE9B2
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:62464 nr:0 dw:0 dr:63264 al:0 bm:3 lo:7 pe:0 ua:8 ap:0 ep:1 wo:f oos:2032540 [>....................] sync'ed: 3.2% (2032540/2095004)K finish: 0:03:14 speed: 10,408 (10,408) K/sec
等待同步完毕
7、创建文件系统
在主节点上的设备/dev/drbd0上创建一个文件系统,可以把DRBD设备挂载到
/mnt/drbd目录上使用。从节点的DRBD设备无法被挂载,因为它是用来接收主机数据的,由DRBD负责操作。因此不需要这个过程。在master上执行:
mkfs.ext3 /dev/drbd0 mkdir /mnt/drbd
mount /dev/drbd0 /mnt/drbd 查看挂载结果: df
/dev/drbd0 30963708 176200 29214644 1% /mnt/drbd
8、设置drbd开机自动启动
chkconfig drbd on
主备机切换
有时,需要将DRBD的主备机互换一下,可以执行下面的操作: 1、在主节点上,先要卸载掉DRBD设备。 sudo umount /mnt/drbd0
2、将主节点master降级为“从节点”: sudo drbdadm secondary r0
3、在从节点backup上,将它升级为“主节点”: sudo drbdadm primary r0
4、在从节点backup上,挂载drbd设备 sudo mount /dev/drbd0 /mnt/drbd
drbd手动切换同步测试
1)在master上 cd /mnt/drbd
dd if=/dev/zero of=/mnt/drbd/testfile bs=104857600 count=2 umount /mnt/drbd drbdadm secondary all
2)在backup上 drbdadm primary all mkdir -p /mnt/drbd
mount /dev/drbd0 /mnt/drbd ls -l /mnt/drbd
可以看到文件testfile在主节点写入,在从节点马上可以看到。
heartbeat部署 安装heartbeat
先在主节点上安装,命令如下: sudo apt-get install heartbeat
配置
/etc/ha.d/ha.cf定义位于不同节点上的heartbeat进程间如何进行通信/etc/ha.d/authkeys 定义Heartbeat包在通信过程中如何进行加密
/etc/ha.d/haresources 定义对某个资源来说哪个服务器是主节点,以及哪个节点应该拥有客户端访问资源时的目标IP地址
配置/etc/ha.d/ha.cf
配置heartbeat守护进程使用交叉网络发送和接收心跳数据包。 1、 解压/usr/share/doc/heartbeat/ha.cf样本配置文件: sudo gunzip ha.cf.gz
2、 使用下面的命令将样本配置文件复制到适当的位置: sudo cp ha.cf /etc/ha.d/ha.cf
3、 编辑/etc/ha.d/ha.cf文件,取消注释符号或增加以下内容: logfile /var/log/ha-log #heartbeat的日志文件 udpport 694
#设置广播通信使用的端口,694为默认使用的端口号 ucast eth1 192.168.123.46
#采用单播ucast方式,使用网卡eth1在主服务器和备用服务器之间发送心跳消息。指定对端ip,即在master上指定192.168.123.46,在backup上指定192.168.123.42
4、 同时,取消keepalive,deadtime和initdead这三行的注释符号: keepalive 2
#心跳消息之间的时间间隔,默认时间单位为秒 deadtime 30
#超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。 warntime 10
#超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。 initdead 120
#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。
5、添加下面两行: node master node backup
#这里填写主、备用服务器的名字(uname -n命令返回的值)。 6、使用Heartbeat重新启动守护进程
指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。 最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。在/etc/ha.d/ha.cf中使用下面这样一行:
ping 192.168.123.1 #一般ping网关,不能ping集群中的节点 respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root #执行ipfail的用户和组ID
7、auto_failback的相关配置
用于决定,当拥有该资源的属主恢复之后,资源是否变迁:是迁移到主上(设置为on),还是在当前节点上继续运行,直到当前节点出现故障(off)。
auto_failback off
8、STONITH配置
stonith_host master null backup stonith_host backup null master
# stonith的主要作用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。
配置/etc/ha.d/authkeys
authkeys文件用于heartbeat的鉴权设置,共有三种可用的鉴权方式:crc、md5和sha1。三种方式安全性依次提高,但同时占用的系统资源也依次扩大。crc安全性最低,适用于物理上比较安全的网络,sha1提供最为有效的鉴权方式,占用的系统资源也最多。 其配置语句格式如下:
auth
1、 将authkeys文件复制到适当的位置: cp /usr/share/doc/heartbeat/authkeys /etc/ha.d
2、 编辑/etc/ha.d/authkeys文件,取消下面两行内容前的注释符号: auth1 1 crc
3、 确保authkeys文件只能由root读取: chmod 600 /etc/ha.d/authkeys
配置/etc/ha.d/haresources
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库利用heartbeat和drbd实现HDFS的双机热备(2)在线全文阅读。
相关推荐: