Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2270817
  • 博文数量: 846
  • 博客积分: 10011
  • 博客等级: 上将
  • 技术积分: 9499
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-04 19:54
个人简介

日日行,不怕千万里;时时学,不怕千万卷

文章分类

全部博文(846)

文章存档

2010年(36)

2009年(418)

2008年(346)

2007年(46)

我的朋友

分类: LINUX

2009-03-02 19:45:55

  本文介绍了Linux下的cluster软件LVS,并举例介绍一个Linux下的cluster(集群)的安装和实现的详细过程。。   在各种网络服务普遍应用的今天,随网络速度的提高以及用户的增加,在一些繁忙的场合,单凭一台机器已经无法就能应付所有的网络请求了。为了解决这个问题,许多用户就采 用一组cluster(集群)来代替单一的机器。cluster可以将多台计算机连接起来协同运作以对外提供各种服务,比如Apache、FTP、Mail等。
  
  在Linux上最常见的、也可能是运用最广泛的cluster方案就是LVS(Linux Virtual
  Server),很高兴LVS也是一个中国人创建和开发的开放源码项目。LVS自1998年开始,发展到现在已经是一个比较成熟的技术项目了。有许多比较著名网站和组织都在使用LVS架设的cluster,比如:、sourceforge.net、等。
  
  下面就开始介绍一下,笔者是如何利用LVS来架设一组cluster来对外提供Apache和FTP服务的。
  
  安装操作系统
  
  笔者选用的是Red Hat 9.0作为些cluster的director机器和所有real server机器的操作系统。RH的安装过程从略,笔者根据实际需要,只安装了少数的包。对于成批安装Linux,建议试试Kickstart来进入批理安装。
  
  编译支持LVS的内核
  
  LVS对Linux的kernel进行了修改和增加,所以要重新编译 linux kernel。我们先从下载到LVS的内核补丁,对原有内核源代码进行更新,然后重新编译Linux的kernel。
  
  下载LVS的内核补丁时要注意补丁版本要和kernel版本相一致,对于RH9.0,它的Linux核心版本是2.4.20,所以对应内核补丁应该是/software/kernel-2.4/linux-2.4.20-ipvs-1.0.9.patch.gz
  
  另外还有一个补丁是用来解决某些情况下ARP协议不能正常工作问题的,从~ja/hidden-2.4.20pre10-1.diff下载。
  
  把上面下载的两个补丁复制到/usr/src目录下,然后执行以下命令:
  
  cd /usr/src
  gzip -cd linux-2.4.20-ipvs-1.0.9.patch.gz
  cd /usr/src/linux
  patch -p1 < ../linux-2.4.20-ipvs-1.0.9.patch
  patch -p1 < ../hidden-2.4.20pre10-1.diff
  
  make mrproper
  make menuconfig 
  
  执行make menuconfig时,我们将进入一个图形化的界面,在其中可以对Linux Kernel进行详细设置。与LVS相关的kernel选项都在“Networking options”中,进入“Networking options”,可以查看到“IP: Virtual Server Configuration”选项,将其它所有的子选项都选上:
  
  <M> virtual server support (EXPERIMENTAL) 
  [*] IP virtual server debugging 
  (12) IPVS connection table size (the Nth power of 2) 
  --- IPVS scheduler 
  <M> round-robin scheduling 
  <M> weighted round-robin scheduling 
  <M> least-connection scheduling scheduling 
  <M> weighted least-connection scheduling 
  <M> locality-based least-connection scheduling 
  <M> locality-based least-connection with replication scheduling 
  <M> destination hashing scheduling 
  <M> source hashing scheduling 
  <M> shortest expected delay scheduling 
  <M> never queue scheduling 
  --- IPVS application helper 
  <M> FTP protocol helper
  
  另外,“Networking options”中的“IP: Netfilter Configuration"中的选项的所有子项,除了以下两项不要选之外,其它全可以选:
  
  < > ipchains (2.2-style) support 
  < > ipfwadm (2.0-style) support
  
  还有,“Networking options”中还有一些关于网络的选项,要注意按自己的需要去选择:
  
  <*> Packet socket 
  [ ] Packet socket: mmapped IO 
  <*> Netlink device emulation 
  [*] Network packet filtering (replaces ipchains) 
  [*] Network packet filtering debugging 
  [*] Socket Filtering 
  <*> Unix domain sockets 
  [*] TCP/IP networking 
  [*] IP: multicasting 
  [*] IP: advanced router 
  [*] IP: policy routing 
  [ ] IP: use netfilter MARK value as routing key 
  [ ] IP: fast network address translation
  <M> IP: tunneling
  
  对于kernel的其它选项,你可以根据需要进行选择。kernel的配置是一项很需要经验、细心和耐心的工作,不当的配置可能会导致编译过程中出现错误或者是新的kernel不能驱动原有的设备等问题。
  
  退出保存,然后继续执行以下命令:
  
  make dep
  make clean
  make bzImage
  make modules
  make modules_install
  
  以上各步可能需要一点时间,如果出错请重新检查你的kernel配置,如果没有出现任何错误就继续执行以下命令:
  
  depmod -a
  cp arch/i386/boot/bzImage /boot/vmlinuz-lvs
  cp System.map /boot/System.map-lvs
  
  cd /boot
  rm System.map
  ln -s System.map-lvs System.map
  
  然后修改你的lilo.conf使用新的kernel启动,比如在lilo.conf中以增加下几行以增加关于新的支持LVS的kernel的启动项:
  
  image=/boot/vmlinuz-lvs
  label=lvs
  read-only
  root=/dev/sda1
  
  注:如果使用Grub做启动引导程序的,请自行做对应的修改,以增加关于新的支持LVS的kernel的启动项。
  
  重新启动Linux,选择lvs项进入Linux。
  
  安装ipvsadm
  
  如果正常启动了,就开始安装IP虚拟服务器软件ipvsadm。因为我们用的是RH,所以我们直接下载RPM包进行安装。RPM包从以下地址下载:
  /software/kernel-2.4/ipvsadm-1.21-7.src.rpm
  
  用以下命令来安装ipvsadm:
  
  rpmbuild --rebuild ipvsadm-1.21-7.src.rpm
  rpm -ivh /usr/src/redhat/RPMS/i386/ipvsadm-1.21-7.i386.rpm
  
  至此,LVS的安装算是完成了一半。就是说,现在的Linux已经具备了实现LVS的能力了,接下来的问题就是如果使用LVS来构建一组cluster了。要想实现一组cluster,我们就要使用ipvsadm工具进行配置,而在我们开始使用ipvsadm进行配置之前,我们需要了解一些基本的LVS的知识,特别是以下三个要点:LVS的结构、LVS的三种包转发方式、LVS的八种调度算法。只有了解了这些知识以后,我们才能理该如何使用ipvsadm来进行配置。下面简单介绍LVS的这三个要点:
  
  1. LVS的结构
  
  LVS方式的cluster从结构上可分为两部分:前端的负载均衡器(称之为director)和后端的真实服务器(称之为real server)。cluster前端的director将来自外界的请求调度到cluster后端不同的real server去执行。real server负责真正的提供各种应用服务,比如:Web、FTP、Mail等服务。real server的数量可以根据实际需求进行增加、减少。
  2. LVS的三种包转发方式
  
  LVS提供了三种包转发方式:NAT(网络地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由)。不同的转发模式决定了不同的cluster的网络结构,下面对三种转发方式分别介始: 
  
  NAT(网络地址映射) 
  
  NAT方式可支持任何的操作系统,以及私有网络,并且只需一个Internet IP地址,但是整个系统的性能受到限制。因为执行NAT每次需要重写包,有一定的延迟;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新的瓶颈。 
  
  IP Tunneling(IP隧道) 
  
  director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。 
  
  Direct Routing(直接路由) 
  
  与IP Tunneling类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing与IP Tunneling相比,没有IP封装的开销,但由于采用物理层(修改MAC地址)技术,所有服务器都必须在一个物理网段。 
  
  3. LVS的八种调度算法 
  
  LVS已实现了以下八种调度算法:
  
  1.轮叫调度(Round-Robin Scheduling)
  2.加权轮叫调度(Weighted Round-Robin Scheduling)
  3.最小连接调度(Least-Connection Scheduling)
  4.加权最小连接调度(Weighted Least-Connection Scheduling)
  5.基于局部性的最少链接(Locality-Based Least Connections Scheduling)
  6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
  7.目标地址散列调度(Destination Hashing Scheduling)
  8.源地址散列调度(Source Hashing Scheduling)
  
  注:如果想了解关于以上几点的技术细节,LVS的主页查询。L [#page_#] 


 

启动模式,jdk和域文件存放目录的设置比较简单,根据大家的爱好设置就行了。

这里启动模式选择生产开发模式,jdk使用jRockit,存放目录默认。

十一步:配置域名称

Edit Domain Information:

------------------------

  | Name | Value |

  _|________|__________|

  1| *Name: | mydomain |

Enter value for "Name" OR [Exit][Previous][Next]> testDomain

设置域的名称为testDomain。

十二步:域建立结束

以上步骤都完成后,系统会自动建立这个域,并会生成一些文件等等,完成的界面如下:

<----- BEA WebLogic Configuration Wizard --------->

Creating Domain...

0% 25% 50% 75% 100%

[------------|------------|------------|------------]

[***************************************************]

**** Domain Created Successfully! ****

启动管理服务器

进入bea/user_projects/domains/testDomain/目录

键入./startWebLogic.sh


阅读(324) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~