很多负载均衡的软件配置都是在linux操作系统下完成的,那么对于不太熟悉linux的朋友,肯能对于负载均衡的配置问题就比较多了。那么现在笔者为大家总结一下linux下的负载均衡设置过程,包括了系统的安装,和软件安装,相信能够解决您的问题。

1. 安装ipvsadm

下载ipvsadm,下载时需注意对应自己的内核版本?

ipvsadm下载网址:http://www.linuxvirtualserver.org/software/

本文使用的是FC8系统,内核版本2.6.23.1,对应ipvsadm版本1.24?

安装时需要Linux内核源码,如果安装系统时没有安装源码,需要再下载内核源码?本文使用的内核是linux- 2.6.23.1.tar.bz2?把内核解压到/usr/src/linux-2.6.23.1?下面开始编译安装:

建立内核快捷方式:ln -s /usr/src/linux-2.6.23.1 /usr/src/linux

解压ipvsadm:

tar zxvf ipvsadm-1.24.tar.gz

安装ipvsadm:

cd ipvsadm-1.24

make

make install

安装完成后,下一步我们开始配置IPVS,本文主要介绍Direct Routing方式的配置?

2. 配置IPVS(Direct Routing)

2.1.网络结构

三台计算机,一台Director安装Linux作负载均衡器,另两台ReaServer提供服务?

Director:eth0=192.168.34.40,eth0:0(VirtuaIP) =192.168.34.41

RealServer1:IP=192.168.34.26

RealServer2:IP=192.168.34.27

服务端口:443

客户通过VirtuaIP 192.168.34.41访问服务器?Load Balancer将来自客户的访问按一定的负载均衡机制分发到192.168.34.26和192.168.34.27这两台实际提供服务的服务器?

2.2.Load Balancer配置

步骤1:配置Director IP

在Director上配置好eth0的IP(192.168.34.40),然后在eth0上新增一个IP(192.168.34.41),命名为eth0:0,作为VirtuaIP?

步骤2:配置IPVS Table脚本

编写sh脚本如下:

  1. VIP=192.168.34.41?#VrituaIP地址
  2. RIP1=192.168.34.27?#ReaServer?1?IP
  3. RIP2=192.168.34.26?#ReaServer?2?IP
  4. GW=192.168.34.1?#ReaServer?网关IP
  5. #xxIPVS?Table
  6. ipvsadm?-C
  7. #设置IPVS?Table
  8. ipvsadm?-A?-t?$VIP:443?-s?wlc
  9. ipvsadm?-a?-t?$VIP:443?-r?$RIP1:443?-g?-w?1
  10. ipvsadm?-a?-t?$VIP:443?-r?$RIP2:443?-g?-w?1
  11. #将IPVS?Table保存到/etc/sysconfig/ipvsadm
  12. /etc/rc.d/init.d/ipvsadm?save
  13. #启动IPVS
  14. service?ipvsadm?start?#或者/etc/rc.d/init.d/ipvsadm?start也可以
  15. #显示IPVS状态
  16. ipvsadm?-l
  17. #脚本结束----------------------------

该脚本配置IPVS Table,并将配置保存到/etc/sysconfig/ipvsadm文件中?以后修改IPVS TABLE可直接修改该脚本?当然,您也可以直接编辑该文件来实现IPVS Table的配置?

配置完毕后执行/etc/rc.d/init.d/ipvsadm start(或service ipvsadm start)启动IPVS?

通过以上两个步骤,就完成了负载均衡器IPVS的配置?

    2.3.ReaServer配置

    ReaServer主要做两个配置,一是添加一个虚拟IP,二是关闭该IP的ARP响应?

    2.3.1.Windows系统

    对于Windows系统的服务器,只要添加一个Loopback的网卡,IP地址设置成虚拟IP(192.168.34.41),子网掩码设置成255.255.255.255,网关地址留空?

    操作:

    从控制面板选择添加硬件;选择“是,硬件已连好”;选择“添加新的硬件设备”;选择“安装我手动从列表选择的硬件”;选择“网络适配器”;

    从厂商列表选择“Microsoft”,从网卡列表选择“Microsoft Loopback Adapter”;

    点下一步开始安装硬件,安装完毕后出现一个新的网卡,配置好IP和子网掩码?Windows子网掩码无法配置成 255.255.255.255,我们可以先按默认的保存配置,然后从注册表修改子网掩码?

    注册表修改子网掩码:

    从注册表

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip \Parameters\Interfaces]下找到对应的网卡,将SubnetMask修改成255.255.255.255?然后禁用再启用该网卡即可?

    2.3.2.Linux系统

    3.配置LDirectord RealServer故障检测及管理

    LDirectord进程定时检测各ReaServer运行状态,当检测到某台ReaServer故障时,则将该Server从负载均衡调度列表删除,当恢复正常时再加入?

    3.1.安装LDirectord

    LDirectord软件包含在HeartBeat软件包中?安装HeartBeat时就同时安装了LDirectord?HeartBeat下载网址:http://www.linuxvirtualserver.org/software/?

    安装HeartBeat还需要安装libnet等软件包?可以到网上下载这些软件包来安装?Libnet下载网址:http://www.packetfactory.net/libnet/dist/libnet.tar.gz

    安装libnet:
    tar zxf libnet.tar.gz
    cd libnet
    ./configure
    make
    make install

    安装HeartBeat:
    ./ConfigureMe configure
    make
    make install

    安装完后执行以下命令加入自启动项:
    chkconfig –add ldirectord

    3.2.配置LDirectord
    heartbeat/ldirectord目录下有个ldirectord.cf文件?该文件是ldirectord的配置范例?
    在/etc/ha.d/目录下新建一个ldirectord.cf文件,按配置范例格式进行配置,主要配置项如下:
    checktimeout=3 #检测超时3s
    checkinterval=1 #检测间隔1s
    fallback=127.0.0.1:443 #所有服务器都故障时访问该服务器
    autoreload=yes #配置文件改变时自动加载
    logfile=”/var/log/ldirectord.log” #日志文件
    quiescent=yes
    virtual=192.168.34.41:443 #虚拟IP
    real=192.168.34.26:443 gate
    real=192.168.34.27:443 gate
    fallback=127.0.0.1:443 #所有服务器都故障时访问该服务器
    service=none
    scheduler=wlc
    persistent=600
    protocol=tcp
    checktype=on

    3.3.启动ldirectord
    /etc/rc.d/init.d ldirectord start
    注意,启动时如果提示ldirectord某行出错,一般是有些运行需要的软件没安装,大部分是perl开头的软件包?
    net-snmp-5.3-4.2.i386.rpm
    net-snmp-libs-5.3-4.2.i386.rpm
    perl-Compress-Zlib-1.41-1.2.2.i386.rpm
    perl-HTML-Parser-3.50-1.i386.rpm
    perl-HTML-Tagset-3.10-2.1.noarch.rpm
    perl-libwww-perl-5.805-1.1.noarch.rpm
    perl-MailTools-1.74-1.fc5.noarch.rpm
    perl-TimeDate-1.16-3.2.noarch.rpm
    perl-URI-1.35-2.2.noarch.rpm