Hadoop HDFS系统双机热备方案 联系客服

发布时间 : 星期日 文章Hadoop HDFS系统双机热备方案更新完毕开始阅读

initdead行指出heartbeat守护进程首次启动后应该等待120秒后再启动主服务器上的资源,keepalive行指出心跳消息之间应该间隔多少秒,deadtime行指出备用服务器在由于主服务器出故障而没有收到心跳消息时,应该等待多长时间,Heartbeat可能会发送警告消息指出你设置了不正确的值(例如:你可能设置deadtime的值非常接近keepalive的值以确保一个安全配置)。

5、 将下面两行添加到/etc/ha.d/ha.cf文件的末尾: node ost2 node ost3

这里填写主、备用服务器的名字(uname -n命令返回的值)。 6 日志文件,没有就创建 logfile /var/log/ha-log

7使用Heartbeat重新启动守护进程

你可以告诉Heartbeat它每次启动时启动一个守护进程,如果该守护进程停止运行时就启动重新启动,要实现这样的功能,在/etc/ha.d/ha.cf中使用下面这样一行:

respawn userid /usr/bin/mydaemon

3.3. 配置/etc/ha.d/authkeys

1、 使用下面的命令定位样本authkeys文件,并将其复制到适当的位置: rpm -qd heartbeat | grep authkeys

cp /usr/share/doc/packages/heartbeat/authkeys /etc/ha.d

2、 编辑/etc/ha.d/authkeys文件,取消下面两行内容前的注释符号: auth1 1 crc

3、 确保authkeys文件只能由root读取: chmod 600 /etc/ha.d/authkeys

3.4. 配置/etc/ha.d/haresources

haresources的实际配置在drbd的配置中描述,这里只描述haresources的语法。

主服务器和备用服务器上的/etc/ha.d/haresources文件必须相同。haresources文件中的每一行通常都包括下面的内容:

1)正常情况下运行资源的服务器的名字(主服务器),后面跟一个空格或一个tab键 2)一个(可选的)ip别名,启动资源前,Heartbeat应该将其添加到系统上,后面跟一个空格。(ip别名定义可能包括一个子网掩码和一个广播地址,使用斜线“/”字符分割)

3)存在于/etc/init.d目录或/etc/ha.d/resource.d目录的一个资源脚本(这个脚本用于启动和停止资源),如果需要传递参数给资源脚本,在参数前面添加两个冒号即可,如果有多个参数,参数之间也用两个冒号分隔。

4)其他的资源脚本可以使用空格字符作为分隔符进行添加。 注意:如果你需要创建一个比你屏幕长度还要长的haresource行,你可以使用反斜线“\\”指出下一行仍然是haresources条目。

这个语法简单地说就是一行有两个资源,每个资源有两个参数,如: primary-server [IPaddress] resource1[::arg1::arg2] [resource2[::arg1::arg2]

实际上,在一个叫做primary.mydomain.com的服务器上,运行有sendmail和httpd,ip地址是209.100.100.3,那么就表示为:

primary.mydomain.com 209.100.100.3 sendmail httpd

让我们更细致地检验haresources文件中的每一个元素。

3.4.1.主服务器名

在haresources行的开头输入的主服务器名应该与在/etc/ha.d/ha.cf文件中指定的服务器名匹配,同时也应该与在主服务器上运行uname -n命令返回的结果一致。

3.4.2.ip别名

尽管它不是必须的,但通常在haresources文件中还是指定了ip别名,这个ip别名可以由主服务器提供也可以由备用服务器提供,依赖于谁的系统更健康,例如:

primary.mydomain.com 209.100.100.3

Heartbeat将添加209.100.100.3作为现有网卡的ip别名,并通过这个网卡发送ARP欺骗广播,如果主服务器停机,只需要在备用服务器上添加。

实际上,当Heartbeat在haresources文件中看到一个ip地址时,它运行/etc/ha.d/resource.d目录下叫做 IPaddr的资源脚本,并传递需要的ip地址作为一个参数,/etc/ha.d/resource.d/IPaddr脚本调用包括在Heartbeat 包中的程序findif(查找接口),传递ip别名给它,这个程序自动选择物理网卡基于内核的网络路由表添加ip别名,如果findif程序不能定位添加ip别名的接口,它将在/var/log/messages文件中记录类似下面的信息:

heartbeat: ERROR: unable to find an interface for 200.100.100.3

3.4.3.资源

haresources文件中的每一行可以包含一个或多个资源脚本名,资源之间使用空格隔开,参数之间可以使用两个冒号隔开,例如:如果你需要 Heartbeat发送一个专门的参数(假设FIFLE1)到你的资源脚本(在单词start,status,或stop前),你应该使用下面的语法:

primary.mydomain.com myresource::FILE1

假设你在主服务器和备用服务器上的haresources文件中都添加了这一行,当它在主服务器上第一次启动时,Heartbeat将运行/etc/ha.d/resource.d/myresource FILE1 start,当主服务器失效时将在备用服务器上再次运行,当资源需要“释放”或停止,Heartbeat将使用命令/etc/ ha.d/resource.d/myresource FILE1 stop运行脚本。

如果我们想联合我们的iptakeover脚本和myresource脚本和它的FIFLE1参数,我们应该使用下面这一行:

primary.mydomain.com iptakeover myresource::FILE1 要发送你的资源脚本几个参数的话,在同一行上脚本名后输入它们,每个参数用一对冒号隔开,例如:要发送参数FIFLE1,UNAME=JOIN和L3给myresource脚本,你的haresources文件看起来应该象:

primary.mydomain.com iptakeover myresource::FILE1::UNAME=JOHN::L3

3.5. 在备用服务器上安装Heartbeat

在主服务器上执行下面的命令复制所有配置文件到备用服务器上: scp -r /etc/ha.d ost3:/etc/ha.d

scp命令是安全复制命令,它使用SSH协议在两个节点之间复制数据,-r选项指定scp复制主服务器上/etc/ha.d目录下的所有文件和所有子目录。

3.6. 启动Heartbeat

1 在主服务器和备用服务器上把heartbeat配置为开机自动启动 chkconfig --level 35 heartbeat on

2 手工启停方法

/etc/init.d/heartbeat start 或者

service heartbeat start /etc/init.d/heartbeat stop 或者

service heartbeat stop

4. DRBD部署

4.1. 原理

DRBD(Distributed Replicated Block Device)是基于Linux系统下的块复制分发设备。它可以实时的同步远端主机和本地主机之间的数据,类似与Raid1的功能,我们可以将它看作为网络 Raid1。在服务器上部署使用DRBD,可以用它代替共享磁盘阵列的功能,因为数据同时存在于本地和远端的服务器上,当本地服务器出现故障时,可以使用远端服务器上的数据继续工作,如果要实现无间断的服务,可以通过drbd结合另一个开源工具heartbeat,实现服务的无缝接管。DRBD的工作原理如下图:

4.2. 编译linux内核

由于2.4.9缺少CONNECTOR,导致drbd无法安装,因此必须编译内核。 1 下载内核

首先从http://www.kernel.org/pub/linux/kernel/v2.6/下载内核,这里是linux-2.6.18.tar.gz。 2 编译安装 cd /usr/src

tar zxvf linux-2.6.18.tar.gz cd /usr/src/linux-2.6.18 make mrproper

cp /boot/config-`uname -r` .config make menuconfig

选择选项\,然后select,选择提取.config。 在device driver中,选择

Connector - unified userspace <-> kernelspace linker ---> make

make modules_install make install

3 修改/boot/grub/grub.conf default=0 timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu

title Red Hat Enterprise Linux AS (2.6.18) root (hd0,0)

kernel /vmlinuz-2.6.18 ro root=LABEL=/ rhgb quiet initrd /initrd-2.6.18.img

title Red Hat Enterprise Linux AS (2.6.9-67.0.4.EL_lustre.1.6.4.3smp)