网站首页 | 网页制作 | 网络编程 | 图形图象 | 冲浪宝典 | 操作系统 | 软件教学 | 网络安全 | 认证考试 | 下载中心 | 游戏下载
| 操作系统首页|Windowns2003|Windowns2000|WindownsXP|Linux|FreeBSD|Unix|DOS|Solaris|SCO_Unix|HP-Unix|注册表|经验技巧 |
您现在的位置: 超人气学院 >> 操作系统 >> Linux >> 文章正文 用户登录 新用户注册
搭建集群负载均衡系统(学习笔记)           
搭建集群负载均衡系统(学习笔记)
作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-24 0:07:24

声明:本文是参考大量网上资料以及tigerlei自己的实际操作而写的笔记,仅供大家参考,绝非原创。

搭建集群负载均衡系统

  负载均衡集群是在应用服务器高负载的情况下,由多台节点提供可伸缩的,高负载的服务器组以保证对外提供良好的服务响应;而LVS就是实现这一功能的技术.实际上LVS是一种Linux操作系统上基于IP层的负载均衡调度技术,它在操作系统核心层上,将来自IP层的TCP/UDP请求均衡地转移到不同的服务器,从而将一组服务器构成一个高性能、高可用的虚拟服务器。使用三台机器就可以用LVS实现最简单的集群,如图1所示。  
 
 

图1 LVS实现集群系统结构简图

图1显示一台名为Director的机器是前端负载均衡器,运行LVS,目前只能在Linux下运行.可以针对web、ftp、cache、mms甚至mysql等服务做load balance;后端两台机器称之为Real Server,是需要负载均衡的服务器,可以为各类系统,Linux、Solaris、Aix、BSD、Windows都可,甚至Director本身也可以作为Real Server.

本文将通过实际操作,重点介绍如何在Redhat 9上用LVS构建一个负载均衡集群,关于负载均衡集群、LVS的详细内容,可参考如下信息: 
http://www.linuxvirtualserver.org/
http://www-900.ibm.com/developerWorks/cn/linux/cluster/lvs/part1/index.shtml 
安装LVS
RedHat在 9.0以后,就将ipvsadm这些套件去除,因此如果想使用LVS(Linux Virtual Server),就得自己重新编译核心(kernel)。
下载所需软件
下载ipvs补丁包

从RedHat 9开始ipvs不再被预先编译到了RedHat发行版的内核中,我们需要从http://www.linuxvirtualserver.org/software/kernel-2.4下载新版的ipvs, 这里我们使用ipvs-1.0.9.tar.gz这个版本.
下载内核linux-2.4.20.tar.gz 

这里需要强调的是由于所有的ipvs的补丁包都是为标准内核开发的,所以安装ipvs时不能使用RedHat光盘中的Kernel Source,而是需要去下载标准的内核。所以我们从ftp://ftp.kernel.org/pub/linux/kernel/ 得到standard kernel linux-2.4.20.tar.gz 

下载ipvs管理工具ipvsadm

从http://www.linuxvirtualserver.org/ 得到ipvs管理工具ipvsadm-1.21.tar.gz, ipvsadm是设置ipvs转发方式和调度算法的工具.
开始安装
安装内核源码

把linux-2.4.20.tar.gz解压到/usr/src目录,生成了/usr/src/linux目录;如果生成的是/usr/src/linux-2.4.20目录,则要在/usr/src下建立一个连接 ln –s linux-2.4.20 linux,因为在ipvs-1.0.9中的makefile文件中默认指定Kernel Source的路径为:KERNELSOURCE = /usr/src/linux 

把ipvs补丁Patch到内核源码中

把ipvs-1.0.9.tar.gz解压缩到某个目录,如/test,生成了/test/ipvs-1.0.9目录;进入/test/ipvs-1.0.9,依次执行如下命令:make patchkernel、make installsource,将ipvs的Patch加载到kernel的source中。

重新编译支持ipvs的内核 

进入/usr/src/linux目录,分别执行: 
make mrproper 为创建新的内和配置做好准备 
make menuconfig 进行配置  
这里请确保IP:Virtual Server Configuration中的选项设定都用M 
make dep 检测是否有相关的软件包被使用 
make clean 为新内核结构准备源目录树 
make bzImage 创建内核引导映像 
make modules、make modules_install 生成模块
make install安装新的内核到指定位置并重新配置grub.conf
到这里新内核就安装完毕了,请重启并用此内核引导系统

安装ipvs管理工具ipvsadm 

当使用新内核启动后,就可以安装ipvsadm:
tar xzvf ipvsadm-1.21.tar.gz 
cd ./ipvsadm-1.21 
make 
make install 
安装完成后,执行ipvsadm命令,如果有如下信息出现则说明安装成功了。 
 
[root@leon c]# ipvsadm
IP Virtual Server version 1.0.9 (size=65536)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

到现在为止,支持负载均衡功能的director就安装成功了,接下来我们可以通过ipvsadm来配置一个负载均衡集群。

构建负载均衡集群 

这里我们假设局域网中有两台FTP服务器,IP分别为FTP1:10.83.33.103,FTP2: 10.83.33.2
所提供的资料都是相同的,这可以通过无密码SSH登录+RSYNC来保证数据一致,这非本文中电,故而略过.我们提供给用户的虚拟IP是10.83.33.100,而在后台为这两台FTP服务器实行LVS负载均衡的服务器的IP是10.83.33.83.这三台均安装RedHat9系统.
我们最终要实现的目标是当用户输入ftp 10.83.33.100时, LVS负载均衡服务器系统会根据当时的负载情况,依据轮换策略来决定Real Server到底是FTP1还是FTP2,从而使得整个FTP服务器的负载到达均衡.
目前LVS有三种负载平衡方式,NAT(Network Address Translation),DR(Direct Routing),IP Tunneling。其中,最为常用的是DR方式,因此这里只说明DR(Direct Routing)方式的LVS负载平衡。其它两种的详细情况请参考LVS-HOWTO.

Director(即10.83.33.83)上执行的设置
为了方便我们将所有步骤写成一个shell script.

#!/bin/bash
echo "0" > /proc/sys/net/ipv4/ip_forward (关闭ip_forward)
echo "1" > /proc/sys/net/ipv4/conf/all/send_redirects (开启ICMP Redirects)
echo "1" > /proc/sys/net/ipv4/conf/default/send_redirects (开启ICMP Redirects)
echo "1" > /proc/sys/net/ipv4/conf/eth0/send_redirects  (开启ICMP Redirects)
ifconfig eth0:100 10.83.33.100 broadcast 10.83.33.100 netmask 255.255.255.255
(设置虚拟IP)
route add -host 10.83.33.100 dev eth0:100 (设置达到虚拟Ip的路由)
ipvsadm –C (清空ipvsadm table)
ipvsadm -A -t 10.83.33.100:21 -s wrr (建立service rule, 当前调度算法为加权轮叫调度)
ipvsadm -a -t 10.83.33.100:21 -r 10.83.33.76 -g -w 3 (建立转发规则)
ipvsadm -a -t 10.83.33.100:21 -r 10.83.33.2 -g -w 1  (建立转发规则)
ipvsadm (检查当前ipvsadm table)

将此shell script加入到/etc/rc.local中,这样在每次系统启动时都可以自动运行进行设置了。
Realserver(即10.83.33.2和10.83.33.76)上的设置

这里我们必须先修正real server上arp problem .这是因为在使用VS/DR的时候,real server会在一块网卡上绑定两个IP,但linux在kernel 2.2.14以后就将eth0:1的NOARP FLAG关闭,这使得eth0:1仅仅是eth0的别名,任何对eth0:1的操作都对eth0有效,

[1] [2] 下一页

[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda    责任编辑:kinda 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
     LinuxC编程---网络编程[2387]
     Linux的Find[1927]
     grub简单应用[1193]
     硬件安装指南[1129]
     SmoothWall2.0(强烈推[1083]
     部分的ADSL路由器默认[1027]
     从硬盘安装Linux和从G[956]
     Linux常见命令:进程查[841]
     黑客帝国屏保[770]
     elf文件格式-- 1[707]
    相 关 文 章
    轻松给Windows2000搭建邮件
    让安全补丁自动打-搭建局域
    HP-UX11i下搭建Apache + M
    使用Solaris搭建路由器
    集群LVS+GFS+ISCSI+TOMCAT
    搭建基于heartbeat的高可用
    FREEBSD下用J2SDK搭建JAVA
    [原创]FreeBSD集群软件
    linux里边可以用集群的,f
    FREEBSD下搭建支持JSP的WE
    JDBC环境的搭建
    在Linux下构造高性能、高可
    Vmware gsx server 下RedH
    dhcp+apache+ftp+cvs+samb
    linux下 java环境的搭建(
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)