基于linux源码的LVS搭建

本文详细介绍了如何基于Linux源码搭建LVS-DR集群,包括为内核打补丁、配置编译选项、安装ipvsadm、配置director和realserver服务器脚本,以及测试集群系统的步骤。适合熟悉Linux操作且想了解LVS集群搭建的读者。
摘要由CSDN通过智能技术生成

            基于linux 源码的LVS 搭建

前言:本文乃作者原创,参考了一些博客和相关的书籍,作如下说明:

本文的参考资料:1 lvs 官方网站 2 部分网站的博客 3 The Linux Enterprise Cluster 作者: byKarl Kopper   TCP/IP 协议 第一卷 作者:steven(ARP 协议那一章) linux 边学边干 作者:李善平陈文智(了解/proc 文件的原理,arp_ignore arp_announcearp_filterhidden 就属于这个文件系统)。

    本文描述了基于linux 源码的LVSDR 集群转发telnet 服务(此服务也可是其它的服务:httpmailftp )搭建过程,并给出了搭建过程中可能遇到问题的解决办法。每个命令笔者都亲自在机器上运行过。对其中的一些命令给出图解说明,以帮助读者更好地理解搭LVS 的过程。整个搭建过程可以分以下五个大步骤:

1 ) 为linux 源码打lvs 补丁(本文的linux 源码是不带ipvs 补丁的)。

2 ) 配置内核编译选项和编译linux 内核。这个过程将产生内核镜像(bzImage) 、系统符号表(System.map) 、启动镜像(initrd.img)

3 ) 配置/boot/grub/grub.conf 文件,引导新内核。(当然也可以通过LILO 引导系统)

4 ) 安装ipvsadm, 配置director 服务器脚本directorrealserver 脚本realserver 。其中脚本diretor 需要配置对telnet 服务的转发。

5 ) 运行telnet 服务去测试新搭建的telnet 集群系统。

硬件要求:三台pc 机器,一台做director (转发client 请求的服务器),两台做realserver 服务器。本文用三台虚拟机模拟三个pc 机。

  软件要求:  linux-2.4.20.tar.gz ipvs-1.0.9.tar.gz.tar ipvsadm-1.21.tar.gz 这三个包官方网站都可以下载到,谁要是找不到的,把邮箱告诉我,我发给你。

作者的编译环境:2.4.20 kernel 3.2.2 gcc

下面就开始搭建集群系统了:

1 cd /usr/src

2 解压缩三个压缩文件:tar -zxvf 压缩包文件名。

3 ipvs 补丁打到linux-2.4.20 内核中:做个软连接linux ,因为ipvs 默认要打补丁的内核路径为/usr/src/linux( 具体可用vi 查看ipvs Makefile 内核配置路径)ln -s /usr/src/linux-2.4.20 linux  运行make patchkernelmake installsource ,第一个命令是为内核打补丁,第二命令是copy ipvs 源码到内核(具体看Makefile 伪标签patchkernelinstallsource )。我一般把两个命令抽象成一个命令(或者说作用 吧)来理解:就是打ipvs 补丁到kernel

注:(1 )如果要用hidden 屏蔽realseverARP 缓存问题,需要加载hidden 模块。进入/usr/src 运行gunzip linux-2.4.21-ipvs-1.0.10.patch.gz |patch -p0 命令(linux-2.4.21-ipvs-1.0.10.patch.gz 要到网上下载)。

2linux 2.6 kernel 可用arp_igore 来解决ARP 缓存问题。Kernel 2.4 上没有arp_ignore 的,但可以用arp_filter 来解决ARP 问题。本文是用arp_filter 来解决realserver ARP 缓存问题。

 

4 cd /usr/src/linux/  运行make mrproper( 删除.o 文件,为新内核做准备。首次编译也可以不运行)。运行make menuconfig 进行内核配置,如下图:

1 )配置 ext3 文件系统:

   

2 )配置以太网卡驱动模块pcnet32

 


 

 

3 )配置ipvs 模块

  

  

  

   注:第三个图片所有配置选项都选中。最后单击保存所有的配置。

运行make dep 命令( 生成源码文件的依赖关系,有兴趣的读者,可以看看makefile)

make bzImage( 产生内核镜像文件) bzImage 主要是有关进程调度、内存管理等核心程序代码。网络驱动的模块不会在这里生成。

make modules 编译生成配置好的模块,如ipvspcnet32

Make modules_install 安装生成2.4.20 模块(会在/lib/modules 产生2.4.20 的夹子)

/boot/ 下产生bzImage-2.4.20-ipvsinitrd-2.4.20-ipvsSystem.map

运行命令 [root@SLAVE linux]# cp ./arch/i386/boot/bzImage /boot/bzImage-2.4.20-ipvs

编辑 /etc/modules.conf 注释掉含有mptbasemptscsih 的行(原因是新内核无这两个模块)。如果不注释掉的话,下面的命令无法运行。如下图:

运行命令 mkinitrd /boot/initrd-2.4.20-ipvs 2.4.20 (产生initrd-2.4.20-ipvs 文件系统,它包含一些驱动程序,并作为临时文件系统来加载真正的根文件系统)

备份原来的System.map

mv /boot/System.map /boot/System.map.bak

运行命令 cp ./System.map /boot/System.map

 

5 grub 引导新内核

编辑/boot/grub/grub.conf 配置文件,红色圈起的部分为新增的引导配置。如下图:

特别注意: root=/dev/hda2 这里hda2 为根文件系统(笔者机器文件系统为ext3 )所在的分区,如果你机器上文件系统所在的分区的hda3 ,这里就填hda3 。(如对硬盘分区不熟悉的,可以查看相关资料,这里就不累赘了。) root(hd0,0) 表示第一块硬盘的第一个分区(grub 分区和linux 的有所不同),也就是linux 中的hda1 。这里的hda1/boot 分区,grub 中的kernel 命令可指定绝对路径,也可以指定相对路径(/boot, 这里取相对路径。可用df lT 命令查看哪个分区挂载到哪个路径下,如下图:

 


shell 下运行grub 命令,执行root hd0,0 )和setup hd0 ) 命令。主要是将新更新的配置放到MBR 中。quit 退出grub ,关机,重启( 记得选中2.4.20 -ipvs, 否则系统默认进入老系统) 。新的内核支持ipvs^_^

 

 

6 配置redirector & realserver

1 )执行下面命令,安装ipvsadm

  tar xzvf ipvsadm-1.21.tar.gz
  cd ./ipvsadm-1.21
  make
  make install

2Lvs 原理简述:director 服务器接受clienttelnet 请求,然后用round-roubin 的方式,把telnet 服务分发到realserver ,由realserver 提供telnet 服务。Realserver 对于client 来说是透明的,client 并不知道realserver 的存在。

物理架构如下图(本文的directorrealserver 在一个子网里面):

 


其中DIPdirector 的真实IPVIPdirector 的虚IP ,配置在eth0:0 上。而realserverVIP 配置在lo:0 上。RIPrealserver 的真实IP

Dierctor 的脚本(脚本名为director )下图:

 


 

 

两个 realserve (脚本名为 realserver )的配置如下图:

 


把上面三个脚本放到各自的 /etc/init.d/ 下,分别运行:

Service director restart  service realserver restart service realserver restart

好了,到此为止 LVS 集群服务搭建成功了,下面让我们去测试 LVS 吧,哈哈 !!!

6 )测试 LVS

停掉 redirctor 上的 telnet 服务, service xinetd stop 。编辑 /etc/xinetd.d/telnet 设置 disable         = no, 然后,开启两个真实服务机器上的 telnet 服务 service xinetd restart

运行命令: telnet 219.223.167.40(VIP)

若能登入,说明了 telnet 服务是 realserver 提供的,而不是 redirector 提供的,因为我们干才已经在 director 服务器上关闭了 telnet 服务。

有兴趣的可以对 LVS 做个压力测试。本篇到此终于完了!!!

 

如需转载,请注明原文链接

                                                                                                                                                                                        2009 8 15

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值