wesley4248 发表于 2004-11-27 18:16:57

Linux-HA安裝手冊... 之二

==========================================================
==Saker新一代IT资源智能集中监管系统 (www.sakersoft.org) ==
==========================================================
###得知您负责管理本单位的IT设备,贵单位的IT设备可能包括多种UNIX系统、NT(包括Windows2000)等系统;网络设备可能包括交换机、路由器等;数据库可能有ORACLE、MsSql等的数据库产品;提供的网络服务有WWW、DNS、FTP、EMAIL等多种服务。
------------------------------------------------------------
###通过我们的Saker系统可以统一进行7×24小时的监控,短信、邮件报警,故障自动处理。这样可以大大降低您工作量的同时提高工作效率。并且本软件回报丰厚,请您考虑!
-----------------------------------------------------------
###优秀的跨平台性, Saker支持当今全部主流的操作系统,包括:Windows NT/Windows 2000/Windows 2003/Windows XP,linux,Aix,HP-UX,Irix, SunOS/Solaris,SCO ,Novell Netware,BSD,MacOS等;
-----------------------------------------------------------
###超强的监控功能:Saker拥有数百种监控模块,可以实现对网络服务(SMTP, POP3, HTTP, TCP,SNMP,NNTP,BGP等)、网络设备(路由器,交换机,Modem,UPS等)主机(CPU,内存,硬盘,文件,进程,用户等)、数据库(Oracle,MS SQl,DB2, INFORMIX,SYBASE,MYSQL, PostgreSQL等)、机房环境(温度等)和用户自己的应用程序的集中监控和管理。
----------------------------------------------------------
###丰富的报警功能:Saker支持非常丰富的报警手段,包括邮件,手机短信,呼机,电话、弹出窗口,声音,ICQ等多种技术手段。
-------------------------------------------------------------------------------------------
###强大的事件处理功能:Saker为每个受自己监管的服务分配一个事件处理器(Event Handler),用户可以根据需要,自定义事件处理模块(如:重启进程, 重启主机,备份数据等等)。比如:当检测到web进程停止服务时,Saker会按照用户的定义自动的重启进程;又如,当硬盘的使用率超过用户设定的阀值时,Saker会按照用户的定义自动的进行数据的压缩或者备份。从而实现真正的自动化管理。
-----------------------------------------------------------
Saker是一套功能全面、技术国际领先、运行稳定、实用的IT资源监管系统。
=========================================
==Saker系统--使IT管理更轻松         ===
==http://www.sakersoft.org/         ===
==========================================
3.安装kernel 2.4.20-18.8的kernel,上http://ftp.nsysu.edu.tw/Linux/RedHat/updates/抓取kernel-2.4.20-18.8的rpm核心,因为我测试环境有三部,一部是我的notebook (P4 CPU、512MB RAM),一部是有4GB RAM与两颗CPU(PIII 700)的机器,一部是有1GB RAM与两颗有hyper threading P4 CPU的电脑。所以我总共抓了三个RPM,分别是
kernel-2.4.20-18.8.i686.rpm 02-Jun-2003 23:34 13.3M
kernel-bigmem-2.4.20-18.8.i686.rpm 02-Jun-2003 23:34 13.9M
kernel-smp-2.4.20-18.8.i686.rpm 02-Jun-2003 23:34 13.9M
然后在各部机器上先安装上述RPM:若不清楚倒底要用那个,
可以用uname –r
2.4.20-18.8bigmem (就用bigmem的版本)
#rpm –ivh kernel-2.4.20-18.8.i686.rpm
检查grub(/boot/grub/grub.conf)或lilo(/etc/lilo.conf)的设定是不是正确?
如果正确,就重新启动机器(shutdown –i 6 now),用2.4.20-18.8开机,检查有无错误。

4.然后上http://www.redhat.com 抓取kernel-source-2.4.20-19.8.i386.rpm这个kernel的核心。利用
# rpm –ivh kernel-source-2.4.20-19.8.i386.rpm
安装,他会建立两个目录:
/usr/src/linux-2.4.20-19.8 (directory)
/usr/src/linux-2.4->/usr/src/linux-2.4.20-19.8 (Symbolic Link)
但是我们还要另外建立一个symbolic link
#ln –s ./linux-2.4.20-19.8 ./linux
因为等会要上ipvs patch的时候,他一定会link到/usr/src/linux这个目录,所以要另外建立这个Soft Link。

5.因为我们先前有安装过2.4.20-18.8的rpm档,所以在/boot目录下,可以找到
-rw-r--r-- 1 root root 44764 5月 29 19:49 config-2.4.20-18.8
这个档案,将这个档案copy至/usr/src/linux/.config
# cp /boot/config-2.4.20-18.8 /usr/src/linux/.config
因为等会我要利用make oldconfig去作…他default会去读取/usr/src/linux/.config这个file
注意:这就是我所说的技巧,因为我先前用make config、make menuconfig选取那些modules,但是因为数量实在太多,看得眼花撩乱,而且选完不知道为什么总有一两地方有问题无法compile成功,无意间被我发现2.4.20-18.8的config档案与2.4.20-19.8的config档案一模一样,加上kernel的README中又有写make oldconfig会去读取,.config这个档案,所以我才会想到用这个方法或许可行,因为2.4.20-18.8都可以正常启动机器了,不可能用相同的config 档案,2.4.20-19.8就无法启动。其他版本,应该也差不多,先安装一个差不多版本的kernel,再用他的config去重新compile支援ipvs的kernel。

6.给kernel的source file上Patch:
6.1上Linux Virtual Server的网页抓取kernel-2.4.0-20的PATCH档案下来,
我是抓下面这个档案:
The IPVS Netfilter module for kernel 2.4 - Version 1.0.9 - May 21, 2003
(http://www.linuxvirtualserver.org/software/kernel-2.4/ipvs-1.0.9.tar.gz)
取得ipvs-1.0.9.tar.gz 这个档案
我试过抓linux-2.4.20-ipvs-1.0.9.patch.gz 这个档案,但是从来没有compile成功过,所以放弃。
6.2将ipvs-1.09.tar.gz解开,放在/usr/src/source/ipvs-1.0.9这个目录下,然后在这个目录下,输入
# make patchkernel
# make installsource
将IPVS的Patch加载到kernel的source中

6.3 加载 ”hidden”的patch
可以到http://mail.incredimail.com/howto/lvs/install/src/ 这个目录中抓取
(hidden-2.4.20pre10-1.diff)这个patch档案,放在/usr/src/linux目录下,利用:
# cat hidden-2.4.20pre10-1.diff | patch –p1
对Kernel进行patch,非常感谢Alex提供上述Patch。
注意: 为什么这里要对kernel进行hidden的patch ,因为在使用LVS中的DR与IP Tunnel的时候,会需要有一块网路卡要设定两个IP的情形,但是Linux在2.2.14之后,就将eth0:1的-NOARP这个FLAG关闭。也就是说在kernel 2.2.14以后,eth0:1就视为eth0的别名,任何对eth0:1的设定也同样作用在eth0,换句话说,我对eth0:1下-NOARP,同样也会对eth0有作用,这样会使得整张网路卡收不到封包。
在上述两种模式下,因为我所有的机器都放在同一个网段,当该网段的Router接收到客户端(Client)对虚拟IP(Virtual IP)的TCP connection要求时,会先在网段中利用Arp request询问谁有VIP的位址,而包含Director与RealServers上所有的interface(不管Primary还是Subinterface),只要他有那个ip,都会发送arp reply回去,造成网段内所有拥有Virtual IP的interface都会reply给Router,最后结果就是看谁的速度快,Router就将该封包送给谁,如此会造成LVS的Server并无法发挥其效果,因此需要利用hidden这个pattch,将Subinterface上的Virtual IP给隐藏起来,如此他就不会对Arp Request进行Reply,如此就可以解决ARP的问题,而这个NOARP的问题,kernel发展小组认为不重要,所以以后都不会修改,要用请自行编译。事实上,解法不只一种,我这儿只使用比较简单的一种。资料来源:(http://www.linuxvirtualserver.org/Joseph.Mack/HOWTO/LVS-HOWTO.arp_problem.html)。

7.接着安装cipe 1.5.4的这个版本(如果已经安装,记得先移除后,改用下面这个rpm),http://mail.incredimail.com/howto/lvs/install/package/ 这个目录中有。cipe 1.4.5无法使用,因为1.4.5有Bug,所以一定要确定cipe的版本是1.5.4,且一定要安装cipe否则等一下无法compile ipvs的东西。
注意:先用rpm –qa |grep cipe查查看是不是已经有cipe存在,如果存在,请用rpm –e cipe 将之移除,再用rpm –ivh cipe-xxx.rpm 安装。否则编译kernel的模组的时候会失败。

所有准备工作到此告一段落。接着正式进入compile kernel的重要阶段。

8.开始compile kernel,
# cd /usr/src/linux
# make oldconfig (会去读取.config的资料,并且会问你有关ipvs的一些设定,全部用M回答),按下Enter。
# make dep
# make modules
# make bzImage
这里我顺序有点颠倒…可是无所谓…
# make modules_install
# make install

9.至于最后的make install,如果你用lilo开机,他会给你一个错误讯息,但是必要的档案已经都有了,如果是grub就没有问题。
-rw-r--r-- 1 root root 129736 7月 28 15:51 initrd-2.4.20-19.8custom.img
lrwxrwxrwx 1 root root 28 7月 28 15:58 System.map -> System.map-2.4.20-19.8custom
-rw-r--r-- 1 root root 519383 7月 28 15:51 System.map-2.4.20-19.8custom
-rw-r--r-- 1 root root 1118581 7月 28 15:51 vmlinuz-2.4.20-19.8custom

10.如果用lilo开机,修改/etc/lilo.conf如下面格式:
prompt
timeout=350
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
lba32
# optional

other=/dev/hda1
optional
label=WinXP-Home

image=/boot/vmlinuz-2.4.20-18.8
label=linux_old
append="root=LABEL=/"
read-only
optional
initrd=/boot/initrd-2.4.20-18.8.img
image=/boot/vmlinuz-2.4.20-19.8custom
label=linux_new
root=/dev/hda5
append="devfs=mount"
read-only
optional
initrd=/boot/initrd-2.4.20-19.8custom.img

因为我的/ 是mount在/dev/hda5下,所以你只要稍加修改即可。

如果是用grub开机,他会自动设定好/boot/grub.conf
default=1
timeout=10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-19.8custom)
root (hd0,0)
kernel /boot/vmlinuz-2.4.20-19.8custom ro root=LABEL=/
initrd /boot/initrd-2.4.20-19.8custom.img
title Red Hat Linux (2.4.20-18.8bigmem)
root (hd0,0)
kernel /boot/vmlinuz-2.4.20-18.8bigmem ro root=LABEL=/
initrd /boot/initrd-2.4.20-18.8bigmem.img
title Red Hat Linux-smp (2.4.18-14smp)
root (hd0,0)
kernel /boot/vmlinuz-2.4.18-14smp ro root=LABEL=/
initrd /boot/initrd-2.4.18-14smp.img
title Red Hat Linux-up (2.4.18-14)
root (hd0,0)
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /boot/initrd-2.4.18-14.img
页: [1]
查看完整版本: Linux-HA安裝手冊... 之二